我在mac上设置了一个本地服务器目录:https://discussions.apple.com/docs/DOC-3083
我尝试进行简单的测试,然后执行以下操作:http://php.about.com/od/learnphp/ss/php_forms.htm 并且process.php既不显示名称也不显示年龄,它们只是无效:
Your name is
You are years old
In 25 years you will be 25 years old
我的设置可能有什么问题?
P.S。
1. http://localhost/process.php?Name=Bill&Age=35
的输出相同
2.这是我设置表单示例所做的:
[14:46:00]~/Sites/Tests$ cat > form2.html
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h2>Data Collection</h2><p>
<form action="process.php" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="Name"/></td>
</tr>
<tr>
<td>Age:</td>
<td><input type="text" name="Age"/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit"/>
</td>
</tr>
</table>
</form>
</body>
</html>[14:52:32]~/Sites/Tests$ cat > process.php
<?php
print "Your name is ". $Name;
print "<br />";
print "You are ". $Age . " years old";
print "<br />"; $old = 25 + $Age;
print "In 25 years you will be " . $old . " years old";
答案 0 :(得分:3)
在process.php中,将$Name
替换为$_REQUEST['Name']
,将$Age
替换为$_REQUEST['Age']
PHP脚本运行时,不会定义变量$ Name和$ Age。你需要初始化它们。
传递给PHP脚本的参数可以通过$_REQUEST超全局数组访问。此数组包含使用参数名称作为键的每个参数的值。将参数传递给脚本的常用方法是通过POST或GET。 $ _REQUEST超全局适用于两种方法(与$_GET和$_POST不同,它们是类似的超全局数组,但它们仅适用于其中一种方法。)
如果您想保留原始代码,还可以使用
之类的内容初始化变量$Name = $_REQUEST['Name'];
请务必在使用$ Name之前放置此行。
答案 1 :(得分:3)
很久以前,这是大多数PHP用户认为PHP工作的常用方法。
来自请求的参数自动注册为同名变量。
http://www.php.net/manual/en/security.globals.php
从文章中可以看出,这似乎是一个糟糕的决定,团队决定弃用并最近删除此功能。
因此,请求变量不会自动转换为同名变量。您应该指定您希望输入的来源。例如,POST,GET或COOKIE。
虽然@talkol可能是正确的,你可以使用$_REQUEST
进行POST和GET,但很少有理由这样做。
在大多数情况下,您需要期望它们来自您希望用户传递的请求方法。在您的情况下,以其指定的POST形式,因此您只希望它们作为POST变量。
要访问它们,您需要使用$ _POST超全局数组。例如。 $_POST['Name']
您可以在PHP官员文档中找到有关超全球的所有信息:http://www.php.net/manual/en/language.variables.superglobals.php