不能让我的PHP表单工作

时间:2016-05-06 21:47:12

标签: php

我完全傻眼了,我似乎无法找到解决方案。您是否应该做一些额外的事情来创建一个简单的PHP表单?

php代码:

<?php

$name = $_GET['name'];
$age = $_GET['age'];

echo "Hello $name. Congratulations on being $age years old!";

?>

表单html:

    <form action="get.php" method="get">
        <p>What's your name?</br><input type="text" name="name"></p>
        <p>How old are you?</br><input type="text" name="age"></p>
        <p><input type="submit" value="Skicka"></p>
    </form>

正手谢谢!祝你们过得愉快。

4 个答案:

答案 0 :(得分:1)

首先,空间根本不重要。

“未定义索引”表示您最有可能将输入字段留空。在这种情况下,它不会被浏览器发送,PHP将发出通知,即您正在访问未初始化的变量。

如果两个代码片段都在同一页面上,那么第一页加载时将始终抛出“未定义的索引” - 因为没有提交的数据,并且没有填充的$ _GET数组。

正确的方法是检查是否有提交的数据,例如:

<?php
if (isset($_GET['name']) || isset($_GET['age'])) {
    // ...
}
?>

此外,在尝试获取每个索引的值之前检查每个索引是否存在是一个好习惯,例如:

<?php
// check variables with isset() before accessing them
$name = isset($_GET['name']) ? $_GET['name'] : '';
$age  = isset($_GET['age'])  ? $_GET['age']  : '';
?>

如果您不熟悉什么?:(或者如果未设置变量则需要特殊处理),上面的代码与此相同:

<?php
// check variables with isset() before accessing them
if (isset($_GET['name'])) {
    $name = $_GET['name'];
} else {
    $name = '';
}
if (isset($_GET['age'])) {
    $age = $_GET['age'];
} else {
    $age = '';
}
?>

最后,正如Daniel Ferrans推荐的那样,我总是将$ _POST用于表单数据。这实际上就是它的意思。

答案 1 :(得分:0)

我会发帖而不是Get。 (我不会在生产中使用get,因为表单的所有信息都在URL中)

但是,因为看起来你正在做测试,我会想到以下几点。 1)在你同时拥有表单和get.php

的根文件夹中

我会通过打开一个网址来测试获取PHP脚本:

实施例。 http://localhost/get.php?name=TESTNAME&age=xx

在php中我会有以下代码

<?php
$name = $_GET['name'];
$age = $_GET ['age'];

echo "Hello $name. Congratulations on being $age years old!";
?>

这应该输出一些东西。让我知道它是否有效

答案 2 :(得分:-1)

仅测试所有1个文件,如下所示: test.php的

<?php

$name = $_GET['name'];
$age = $_GET ['age'];

echo "Hello $name. Congratulations on being $age years old!";

?>
    <form action="test.php" method="get">
        <p>What's your name?</br><input type="text" name="name"></p>
        <p>How old are you?</br><input type="text" name="age"></p>
        <p><input type="submit" value="Skicka"></p>
    </form>

它为我工作。

或者更喜欢这样:

<?php
if (isset($_GET['name']) && isset($_GET['age'])){
$name = $_GET['name'];
$age = $_GET ['age'];

echo "Hello $name. Congratulations on being $age years old!";
}else{
?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
        <p>What's your name?</br><input type="text" name="name"></p>
        <p>How old are you?</br><input type="text" name="age"></p>
        <p><input type="submit" value="Skicka"></p>
    </form>
<?php
}
?>
像这样,您可以将此代码粘贴到您喜欢的任何地方,并且无需修改即可使用...

答案 3 :(得分:-2)

这是get.php的正确形式:

<?php

$name = $_GET['name'];
$age = $_GET ['age'];

echo "Hello ".$name." Congratulations on being ".$age." years old!";

?>