旧的PHP代码不工作的原因?

时间:2011-12-15 01:00:50

标签: php

感谢所有回答我最近相关问题here的人,所有答案都有所帮助,它给了我进步和一些教育。我不知道原作者多久以前编写的代码所以可能会有一些古老的方法。

继续进行将类似的原则适用于稍后在代码中,其中表单捕获一些用户输入并在下面分配一个变量名称,如$ dateofbirth,稍后在电子邮件中使用给所有者?换句话说,目前出生日期和其他字段未包含在电子邮件中

<p>Date of Birth <i>(dd/mm/yyyy)</i><br /><input name="dateofbirth" value="<? echo $dateofbirth;?>" type="text" style="width: 350px;" /></p>


<p><br /><input type="hidden" name="service" value="<?
echo $service;
?>" />

<input type="hidden" name="p" value="<?
echo $p;
?>" />
<input type="submit" value="Order now" /></p>
</form>

发送电子邮件代码在这里

$emailtext = "From: " . $clientname . "\r\n";
$emailtext .= "Service ordered: " . $service . "\r\n";
$emailtext .= "Price to pay: £" . $p . "\r\n";
$emailtext .= "Date of birth: " . $dateofbirth . "\r\n";
$emailtext .= "Questions:\r\n\r\n" . $questions . "\r\n\r\n";
$emailtext .= "Comments:\r\n\r\n" . $comments . "\r\n\r\n";
$emailtext .= $email;

总之,上面的代码是旧的,过时的,不受支持的,需要现代化才能使其有效吗?

感谢。

1 个答案:

答案 0 :(得分:1)

是的,如果PHP配置选项register_globals已打开,则上述代码只能按原样运行。启用此PHP选项是高度不安全的,根本不推荐。您只需要使用实际的$ _POST数组值替换电子邮件模板中的所有变量:

$emailtext = "From: " . $_POST['clientname'] . "\r\n";
$emailtext .= "Service ordered: " . $_POST['service'] . "\r\n";
$emailtext .= "Price to pay: £" . $_POST['p'] . "\r\n";
$emailtext .= "Date of birth: " . $_POST['dateofbirth'] . "\r\n";
$emailtext .= "Questions:\r\n\r\n" . $_POST['questions'] . "\r\n\r\n";
$emailtext .= "Comments:\r\n\r\n" . $_POST['comments'] . "\r\n\r\n";
$emailtext .= $_POST['email'];

我假设所有这些变量都是通过此修改后的代码中的表单发送的。在这些行上方的处理函数中设置的任何变量都不需要像上面那样进行转换。