我刚开始学习PHP,youtube上的视频教程和内容,我无法弄清楚为什么以下不起作用。
我有两个文件,一个index.php
,另一个secondpage.php
index.php
<html>
<head>
<title>Hello World</title>
</head>
<body>
<form action="secondpage.php">
<input name="name" type="text">
<input type="submit">
</form>
</body>
</html>
secondpage.php
<html>
<head>
<title>Second page</title>
</head>
<body>
<?php
echo $name;
?>
</body>
</html>
我希望在第一页上点击提交只会输出我在输入框中输入的任何文字,但我只是得到一个空白页面。为什么呢?
答案 0 :(得分:4)
您需要先获得该值。此外,您需要在表单标记中使用正确的方法。
如果未定义方法,则 <form>
默认为GET,因此使用method="post"
。
HTML:
<form action="secondpage.php" method="post">
PHP:
<?php
$name = $_POST['name'];
echo $name;
?>
那就行了。
编辑:不是故意这个答案。在编写它的时候,就像有4条评论说同样的事情。答案 1 :(得分:2)
因为单击“提交”时未设置$ name。
要访问输入,您必须向表单添加方法(POST)。
<form action="secondpage.php" method="post">
而不是在第二页上访问你的输入:
<?php
echo $_POST['name'];
?>
提示:启用错误报告:
error_reporting(-1);
答案 2 :(得分:1)
你看,当你省略表单方法时,它默认为GET ,因为你没有告诉PHP如何检索变量,它没有& #39;知道如何处理它。
如果错误报告已开启,则很可能会抛出一个
Notice: Undefined variable: name in...(path to file) on line X
错误消息。
请参阅下面有关错误报告的说明。
如果你完成echo $_GET['name'];
它就会有用。
或者
$name = $_GET['name'];
echo $name;
但是,如果您明确使用&#34;帖子&#34;表单方法,然后您必须将其包含在表单中。
即:method="post"
然后使用echo $_POST['name'];
或
$name = $_POST['name'];
echo $name;
然而 ,使用isset()
将是一个额外的变量处理函数。
错误报告:
此外,在编写代码以查找发现的错误时,错误报告很重要;如果有的话。
<强> 脚/旁注: 强>
如果省略该方法并且GET是您想要使用的,那么这是完全可以接受的。否则,请使用POST方法以及所示的示例。
有关表格的更多信息,请访问PHP.net的网站:
您还应该了解(XSS)跨站点脚本。
以下是一些可供阅读的链接:
您可以使用&#34; XSS注入php&#34;进一步研究。 (和/或在您最喜爱的搜索引擎中添加&#34;表示$ _GET和$ _POST&#34;)作为关键字。
答案 3 :(得分:0)
使用secondpage.php作为
<html>
<head>
<title>Second page</title>
</head>
<body>
<?php
echo $_POST['name'];
?>
</body>
</html>