表单没有向php提交数据

时间:2014-05-04 13:06:14

标签: php html forms macos

我在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"; 

2 个答案:

答案 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