php表单标签不起作用? (未定义的变量错误)

时间:2013-03-26 21:41:09

标签: php html

首先,我正在使用wamp服务器并学习基本的PHP语法。

所以我的第一个表单php文件是

<form action="foo.php" method="post">
Name:  <input type="text" name="username" /><br />
Email: <input type="text" name="email" /><br />
<input type="submit" name="submit" value="Submit me!" />
</form>

和foo.php文件是

<?php 
// Available since PHP 4.1.0

echo $_POST['username'];
echo $_REQUEST['username'];

import_request_variables('p', 'p_');
echo $p_username;

// As of PHP 5.0.0, these long predefined variables can be
// disabled with the register_long_arrays directive.

echo $HTTP_POST_VARS['username'];

// Available if the PHP directive register_globals = on. As of 
// PHP 4.2.0 the default value of register_globals = off.
// Using/relying on this method is not preferred.

echo $username;
?>

但是当我打开localhost / form2.php它工作正常然后我输入“用户名”和“电子邮件”。之后它会出现以下错误:

注意:未定义的变量:第13行的C:\ wamp \ www \ foo.php中的HTTP_POST_VARS  注意:未定义的变量:第19行的C:\ wamp \ www \ foo.php中的用户名

显然,这些代码应该有效,但由于某些原因它不适用于我。 wamp服务器有什么问题吗?或者我如何设置配置可能有问题?谢谢!

3 个答案:

答案 0 :(得分:3)

正如您在php.net上所看到的那样,$HTTP_POST_VARS已被弃用。实际上自PHP5.4起它们就不再可用了,所以难怪它会说Undefined variable

$username,这只适用于REGISTER_GLOBALS=ON - 您的WAMP可能会在OFF上显示,因为它应该是这样。

Summa summarum:使用$_POST

答案 1 :(得分:2)

$HTTP_POST_VARS未定义,因为register_long_arrays已被关闭。如果您使用的是PHP 5.4.0,那么它已被删除

答案 2 :(得分:0)

自php 5.4.0版起,函数import_request_variables()已被弃用并删除。

使用$ _POST而不是$ HTTP_POST_VARS。后者也被弃用了。

做这样的事情:

<?php
$userName = '';
$email = '';

if (isset($_POST['username'])) {
    $userName = $_POST['username'];
}

if (isset($_POST['email'])) {
    $email = $_POST['email'];
}


echo 'username=' . $userName;
echo 'email=' . $email;
?>