隐藏字段中的会话变量在提交时未传递给$ _POST

时间:2015-02-18 13:10:28

标签: php forms

我的处理器.php文件中有这个...

session_start();
$_SESSION['address'] = $_POST['field_2'];
$_SESSION['name'] = $_POST['field_1'];

这些变量被传递到另一个页面,并在第二个表单上预填充输入,如...

<input type="hidden" name="Name" value="<?php echo $_SESSION['name']?>">
<input name="Address" type="text" value="<?php echo $_SESSION['address']?>">

然后该表格正在提交给电子邮件......

mail($to, $subject,"Form data:
Name: " . $_POST['Name'] . "
Property Address: " . $_POST['Address'] . "
More Fields ", $headers
);

电子邮件通过预先填写的“属性地址”成功完成,但“名称”为空白。为什么隐藏的输入没有传递$_POST['Name']的变量?

2 个答案:

答案 0 :(得分:0)

虽然看起来隐藏的领域是问题,但事实并非如此。除了这里的第二行外,每件事都有效。

mail($to, $subject,"Form data:
Name: " . $_POST['Name'] . "
Email: " . $_POST['Email'] . "  
Property Address: " . $_POST['Address'] . "
Lots More Fields ", $headers);

整个`mail()'函数位是从Web上复制粘贴到Sublime Text的剪辑。语法很完美,但我最终发现,在来自web snip-it操作的复制粘贴中留下的Name行中有一个不可见的非ASCII字符。我检查了是否有其他人遇到类似这样的问题,并立即找到了FileUtils.mv throwing Invalid char \302 and \255 exception

故事的寓意是,通过使用片段来节省时间并不总能节省您的时间。我应该在Sublime Text中启用"draw_white_space",我可能很快就会抓住它。

正如Fred -ii-指出的那样消息体参数都可以更好地连接成$message变量。我现在跟谁建议。

答案 1 :(得分:-1)

在第2步,检查生成的HTML代码是否为&#34;值&#34;属性具有正确的值。

此外,请使用 $ _ REQUEST [&#39;名称&#39;] $ _ POST [&#39;名称&#39;] >。有了这个,它将在POST或GET请求时起作用。