【发布时间】:2018-03-31 03:57:03
【问题描述】:
在学习PHP的过程中,我一直在关注this series on youtube:到目前为止,它真的是一帆风顺。我正在使用 VS Code 1.21.1,我刚刚安装了 PHP 7,并且正在运行 XAMPP 7.2.3(目前只运行 Apache),并在 Chrome 中查看输出,全部在 Windows 7 中。完成教程中的代码看起来像这样
<form action="index.php" method="GET">
Name:<br><input type="text" name="name"><br>
Age:<br><input type="text" name="age" size="5"><br><br>
<input type="submit" value="Submit">
</form>
<?php
$name = $_GET['name'];
$age = $_GET['age'];
if(isset($name) && isset($age) && !empty($name) && !empty($age)) {
echo 'I am '.$name.' and I am '.$age.' years of age.';
} else {
echo 'Please type something.';
}
?>
这对我没有用。
Tutorial 22 Undefined index screenshot
代码末尾的 if(isset) 语句应该避免“未定义索引”错误,但对我来说从来没有。我最终尝试了很多修复,包括添加 PHPCS linting,以防我遗漏了一些新的和令人兴奋的东西。前 9 个错误让我发现了教程遗漏的整个世界(也许大多数只是警告......但仍然......)
我的(部分?)解决方案是从另一个 youtube 视频中提取的,其中为提交按钮提供了一个名称,并且仅针对该字段进行了测试(在本教程中,测试也是这些字段不是空白的。此解决方案不检查这一点。)请注意,在尝试解决所有 linted 问题时还添加了大量其他样板文件,但都没有解决问题......但问题仍然存在,为什么这可以避免无效索引问题,但教程中的问题没有?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="index.php" method="GET" enctype="form-data/multipart">
Name:<br><input type="text" name="name"><br>
Age:<br><input type="text" name="age" size="5"><br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
/**
* MyClass File Doc Comment
*
* PHP Version 7
*
* @category MyClass
* @package MyPackage
* @author A N Other <another@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
* @link http://www.holygenericboilerplatebatman.com/
*/
if (isset($_GET['submit'])) { // It's before the variables, so it works?
$name = $_GET['name'];
$age = $_GET['age'];
echo 'I am '.$name.' and I am '.$age.' years old.';
} else {
echo 'Please type something.';
}
?>
</body>
</html>
我能看到的唯一明显区别是在声明变量之前放置了 if(isset) 语句,但是在该位置使用教程中的语句可以正确加载页面,但不会呈现输入的名称和年龄在表格下方,就像它应该的那样。 URL 会随着 PHP 条目而更新,但页面仍然会说“请输入一些内容”,而不是切换到填充了变量的另一行文本。
我不明白这些方法之间的区别足以知道我应该学习什么! :S
我在所有阅读/尝试中注意到的另一件事是,99% 的未定义索引错误建议都集中在“$_POST”方法上,而不是“$_GET”,包括这里的 SO。因此,我不认为这是一个重复的问题。这是我明显缺少的其他东西吗?提前致谢!
【问题讨论】:
-
我已经在这里检查了看起来像真正权威的答案,包括这个看起来像百科全书的答案:stackoverflow.com/questions/4261133/… 我只是尝试使用 PHP 7 空合并运算符,这也使页面正确显示,但在提交后仍然无法实际呈现完整的文本。