首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php通过多个页面和电子邮件传递复选框值

使用php通过多个页面和电子邮件传递复选框值
EN

Stack Overflow用户
提问于 2015-10-27 15:24:50
回答 3查看 551关注 0票数 0

嗨,我正在创建一个简单的小册子请求表,以捕获用户的品牌和价格信息,以及他们的电子邮件id。我创建了三个页面的代码(Page1.php用于品牌选择,Page2.php用于价格范围和电子邮件地址。我在下一页获得了page1.php的用户选定值,但在邮件页面中没有得到值(我需要在这里收集这两个页面值并提交到电子邮件)。请在下面找到页面代码。请帮帮忙。

page1.php

代码语言:javascript
运行
复制
<html>
<body  bgcolor="#fff" text="#000" >
<form method="post" action="page2.php">
<p>Which car you want to buy?<P>
<TABLE border="1" width="500">
<TR ><TD><input type="checkbox" value ="ferrari"  name="brand[]"><TD>Ferrari</td></TR>
<TR><TD><input type="checkbox" value ="mercedes"  name="brand[]"><TD>Mercedes</td></TR>
<TR><TD><input type="checkbox" value ="bugatti"  name="brand[]"><TD>Bugatti</td></TR>
</TABLE>
<input type="hidden" value="1" name="car_brand" >
<p>
<input type="submit" value="Continue" >
</form>
</body>
</html>

page2

代码语言:javascript
运行
复制
<html>
<body  bgcolor="#fff" text="#000" >

<div id="firstpage-value" style="border:1px solid #000;">
<h4>Selected Brand</h4>
<?php
if(isset($_POST['car_brand']))
{	
	$count=count($_POST['brand']);
	for($i=0;$i<$count;$i++)
	{
		echo $_POST['brand'][$i]." ";
	}
}
?>
</div>

<form method="post" action="mail.php">
<p>Choose a Price Range<P>
<TABLE border="1" width="500">
<TR ><TD><input type="checkbox" value ="under20k"  name="price[]"><TD>Under $20K</td></TR>
<TR><TD><input type="checkbox" value ="35-85k"  name="price[]"><TD>$35K-$85K</td></TR>
<TR><TD><input type="checkbox" value ="over85k"  name="price[]"><TD>Over $85K</td></TR>
</TABLE>
<input type="text" name="email" value="email" />
<input type="hidden" value="1" name="car_price" >
<p>
<input type="submit" value="Submit" >

<input type="hidden" name="brand" value="<?php echo $_POST['brand']?>">
</form>
</body>
</html>

mail.php

代码语言:javascript
运行
复制
<?php 
     
    

/* Subject and email variables */

$emailsSubject = 'Brochure Request';
$thanks = 'Thank you for requesting Brochure';
$webMaster  = 'mailsample@gmail.com';
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";

//Get the input.
 $email = $_POST['email'];
$brand = $_POST['brand'];
$price = $_POST['price']; 


$body = '
<p>A user has been submitted "Request Brochure" form with the following info.</p>
<table width="600" border="1" >
      <tr>
      <th width="556" height="37" align="left"><h2>Which car you want to buy?</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$brand.'</th>
    </tr>
	<tr>
      <th width="556" height="37" align="left"><h2>Choose price range</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$price.'</th>
    </tr>
	
	<tr>
      <th width="556" height="37" align="left"><h2>Email Address</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$emaild.'</th>
    </tr>	
	';
	
	$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$headers .= 'Cc:'. $email . "\r\n";
$reply = "";

/* This is what sends the email */
$success = mail($webMaster, $body, $headers, "-f $email");


/* Results Rendered as Html */



header('location:thankyou.php');exit;
?>

EN

回答 3

Stack Overflow用户

发布于 2015-10-27 15:38:34

检查每个页面的以下代码

Page1

代码语言:javascript
运行
复制
<html>
<body  bgcolor="#fff" text="#000" >
<form method="post" action="page2.php">
<p>Which car you want to buy?<P>
<TABLE border="1" width="500">
<TR ><TD><input type="checkbox" value ="ferrari"  name="brand[]"><TD>Ferrari</td></TR>
<TR><TD><input type="checkbox" value ="mercedes"  name="brand[]"><TD>Mercedes</td></TR>
<TR><TD><input type="checkbox" value ="bugatti"  name="brand[]"><TD>Bugatti</td></TR>
</TABLE>
<input type="hidden" value="1" name="car_brand" >
<p>
<input type="submit" value="Continue" >
</form>
</body>

Page2

在本页面中,我使用了内部函数将数组转换为字符串

代码语言:javascript
运行
复制
<html>
<body  bgcolor="#fff" text="#000" >

<div id="firstpage-value" style="border:1px solid #000;">
<h4>Selected Brand</h4>
<?php
if(isset($_POST['car_brand']))
{   
    $count=count($_POST['brand']);
    for($i=0;$i<$count;$i++)
    {
        echo $_POST['brand'][$i]." ";
    }
    $brand = implode("," ,$_POST['brand']);
}
?>
</div>

<form method="post" action="mail.php">
<p>Choose a Price Range<P>
<TABLE border="1" width="500">
<TR ><TD><input type="checkbox" value ="under20k"  name="price[]"><TD>Under $20K</td></TR>
<TR><TD><input type="checkbox" value ="35-85k"  name="price[]"><TD>$35K-$85K</td></TR>
<TR><TD><input type="checkbox" value ="over85k"  name="price[]"><TD>Over $85K</td></TR>
</TABLE>
<input type="text" name="email" value="email" />
<input type="hidden" value="1" name="car_price" >
<p>
<input type="submit" value="Submit" >

<input type="hidden" name="brand" value="<?php  echo $brand; ?>">
</form>
</body>
</html>

邮件页面

代码语言:javascript
运行
复制
<?php 



/* Subject and email variables */

$emailsSubject = 'Brochure Request';
$thanks = 'Thank you for requesting Brochure';
$webMaster  = 'mailsample@gmail.com';
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";

//Get the input.
 $email = $_POST['email'];
$brand = $_POST['brand'];
$price = implode(",",$_POST['price']); 


$body = '
<p>A user has been submitted "Request Brochure" form with the following info.</p>
<table width="600" border="1" >
      <tr>
      <th width="556" height="37" align="left"><h2>Which car you want to buy?</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$brand.'</th>
    </tr>
    <tr>
      <th width="556" height="37" align="left"><h2>Choose price range</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$price.'</th>
    </tr>

    <tr>
      <th width="556" height="37" align="left"><h2>Email Address</h2></th>
      <th width="268" style="border-bottom:1px solid #ccc; ">'.$email.'</th>
    </tr>   
    ';


    $headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$headers .= 'Cc:'. $email . "\r\n";
$reply = "";

/* This is what sends the email */
$success = mail($webMaster, $body, $headers, "-f $email");


/* Results Rendered as Html */



header('location:thankyou.php');exit;
?>
票数 0
EN

Stack Overflow用户

发布于 2015-10-27 15:39:22

这里有太多的信息,无法发表评论。有一些事情你可以牢记在心。首先:

检查POST请求

仔细检查在处理请求的页面中是否存在有效的POST请求,现在您只是假设page2上有任何POST请求。这样,您就可以确保有您需要的数据。例如,在page1.php上将您的按钮命名为:<input type="submit" name="step1" value="Continue" />,现在您可以在page2上验证是否按下了此按钮:

代码语言:javascript
运行
复制
if( isset( $_POST['step1'] )) 
{
    // Process your code, otherwise return to page1
}

验证发送到下一页的数据

通过检查发送的数据,确保从上一页接收到正确的数据。你可以用一个简单的var_dump()来做这件事。如果将var_dump()包装在<pre>标记中,它会提供更好的可读性。例如:

代码语言:javascript
运行
复制
if( isset( $_POST['step1'] )) 
{
    echo '<pre>'; var_dump($_POST); echo '</pre>';
}

使用内爆和爆炸

您正在将step2中的$_POST‘’brand‘回显到文本字段中,这是不可能的,因为$_POST’‘brand’是一个PHP数组。有几个选项可以做,最简单的是使用implode(),这个函数内爆一个数组并返回一个字符串:

代码语言:javascript
运行
复制
if( count($_POST['brand']) > 0 ) {
    $brands = implode(",", $_POST['brand']);  // returns: ferrari,mercedes,bugatti
}

要将此字符串返回到数组,可以使用explode(",", $brands);

全部应用并调试

应用所有这些东西,在每次发布时验证你的请求,调试哪里出了问题,哪里出了问题。这些简单的步骤将使您的脚本很快工作。你的脚本还有很多需要学习和改进的地方。但是,让我们暂时把这些技巧放在一边。

票数 0
EN

Stack Overflow用户

发布于 2015-10-27 16:25:47

问题出在page2.php上,这里您在<input type="hidden" name="brand" value="<?php echo $_POST['brand']?>">行将数组转换为字符串

这个问题的一个简单解决方法是,您可以使用implode函数将所有选定的品牌转换为逗号分隔的字符串,然后将该字符串分配给隐藏输入的值,以便您可以在mail.php页面上访问它。

代码语言:javascript
运行
复制
$brand = '';
if(isset($_POST['brand']))
{   
    $brand = implode("," ,$_POST['brand']);
}

然后

代码语言:javascript
运行
复制
<input type="hidden" name="brand" value="<?php echo $brand; ?>">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33362050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档