我正试图从文本框中获取文本并通过POST方法打印,但在第14行中出现错误Undefined index:name
<html>
<head>
<title>Form with PHP </title>
</head>
<body>
<form method = "post">
<input type ="text" name="name">
<input type="button" value="submit" id="submit">
</form>
<?php
$name=$_POST["name"];
echo "my name is" .$name;
?>
</body>
</html>
您需要在表单的input/name元素上使用条件语句isset()
,因为您在同一页中运行整个代码。
通知显示在初始页面加载时;这就是为什么,因为它还没有"设定"。
此处:
if(isset($_POST['name'])){
$name=$_POST["name"];
echo "my name is" .$name;
}
或者将HTML表单和PHP分离为单独的页面,并将您的操作设置为action="handler.php"
。然而,使用条件isset()
最好是以任何一种方式使用。
您可能还想将提交按钮更改为提交类型:
<input type="submit" value="submit" id="submit">
然而,根据您提交按钮类型的外观;看起来你可能将JS与你发布的代码结合使用,但没有将其包含在你的问题中,因此你也应该发布它,并/或确保你已经正确地设置了它的属性。
如果加载页面(不提交表单),那么$_POST['name']将不存在,因此它会给出"未定义索引"错误消息。在使用之前,您需要确保它存在。
if (isset($_POST['name'])) {
$name=$_POST["name"];
echo "my name is" .$name;
}
您使用的是$name
而不是$_POST["name"]
。正确的方法是:
if(!empty($_POST['name']))
echo "my name is" .$_POST["name"];