Как дать новую жизнь пятилетней простой, но надежной форме PHP? - PullRequest
2 голосов
/ 13 января 2011

У меня есть скрипт в php 5.2.Я хочу использовать простую форму.Я нашел то, что программист сделал для меня около 5 лет назад.Когда я его использую, PHP выводит ошибку сейчас, если я не установил register_long_arrays = On, тогда он работает нормально.

На веб-сайте PHP, однако, он говорит:

Предупреждение Эта функция устарела с версии PHP 5.3.0.Полагаться на эту функцию крайне не рекомендуется.Рекомендуется отключить их из соображений производительности.Вместо этого используйте суперглобальные массивы, такие как $_GET.

Должен ли я слушать предупреждение PHP или просто включить опцию и продолжать счастливо использовать мою старую форму?Если первое, то как / где я могу изменить эту простую форму, чтобы она не зависела от устаревших настроек?Ваш ответ высоко ценится.

form.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>

Ответы [ 2 ]

4 голосов
/ 13 января 2011

Это $HTTP_POST_VARS доставляет вам неприятности. Выньте его и замените на $_POST. Кроме того, я думаю вы должны убрать reset ($HTTP_POST_VARS);, это не помогает вам, что я могу видеть.

<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>
4 голосов
/ 13 января 2011

Это просто.Измените, где у вас есть $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().Вероятно, это было из старой версии этой формы с использованием внутреннего указателя массива, но вы не используете указатель массива.Вы используете его как ассоциативный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...