gpt4 book ai didi

php - 如何为已有五年历史的简单但可靠的 PHP 表单注入(inject)新的活力?

转载 作者:行者123 更新时间:2023-12-02 07:12:20 25 4
gpt4 key购买 nike

我在 php 5.2 中有一个脚本。我想使用一个简单的表格。大约 5 年前,我找到了一个程序员为我制作的东西。当我使用它时,PHP 现在会输出错误,除非我设置 register_long_arrays = On,然后它才能正常工作。

然而,在 PHP 网站上,它说:

Warning This feature has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged. It's recommended to turn them off, for performance reasons. Instead, use the superglobal arrays, like $_GET.

我应该听取 PHP 的警告,还是只启用该选项并继续愉快地使用我的旧表单?如果是前者,那么我该如何/在哪里更改这个简单的表单,使其不依赖于已弃用的设置?非常感谢您的回答。

表格.htm

<html><body>
<form method="POST" action="form_sent.php">
...
</form>
</body></html>

form_sent.php

<html><body>
<?php
$email = $HTTP_POST_VARS[email];
$mailto = "info@website.com";
$mailsubj = "A Form was Sent from Website!";
$mailhead = "From: $email\n";
reset ($HTTP_POST_VARS);
$mailbody = "Values submitted from web site form:\n";
while (list($key, $val) = each ($HTTP_POST_VARS)){$mailbody .= "$key : $val\n";}
if (!eregi("\n",$HTTP_POST_VARS[email])) {
mail($mailto, $mailsubj, $mailbody, $mailhead); }
?>

<b>Form Sent. Thank you.</b>
</body></html>

最佳答案

这很简单。更改您拥有 $HTTP_POST_VARS 的位置并在其位置使用 $_POST

所以,你最终会得到:

<html><body>
<?php
$email = $_POST[email];
$mailto = "info@website.com";
$mailsubj = "A Form was Sent from Website!";
$mailhead = "From: $email\n";
$mailbody = "Values submitted from web site form:\n";
while (list($key, $val) = each ($_POST)){$mailbody .= "$key : $val\n";}
if (!eregi("\n",$_POST[email])) {
mail($mailto, $mailsubj, $mailbody, $mailhead); }
?>

<b>Form Sent. Thank you.</b>
</body></html>

而且,是的,您绝对应该听取 PHP 文档并进行这些更改。我真的很惊讶那些旧的超全局变量还没有被删除。

此外,不需要 reset() 部分。它可能是使用内部数组指针的此表单的旧版本遗留下来的,但您没有使用数组指针。您将其用作关联数组。

关于php - 如何为已有五年历史的简单但可靠的 PHP 表单注入(inject)新的活力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com