注意:未定义的索引:第2行的C:\ xampp \ htdocs \ php \ second.php中的名称

时间:2016-05-18 06:31:51

标签: php

我是在php的初学者。这个代码我一直在从tutorialspoint.com练习。在该站点中,此代码生成了实际结果,但在我的localhost中运行时,它表示未定义的索引:名称在第2行的C:\ xampp \ htdocs \ php \ second.php中。

<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<!------------Form----------------->
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

使用isset函数来避免undefined index错误

使用

if( isset($_POST["name"]) || isset($_POST["age"])) 

而不是

if( $_POST["name"] || $_POST["age"] )

答案 1 :(得分:0)

您好,您已经在同一页面中编写了html和php,因此首次加载页面时,您将无法获得$_POST中的任何值,因此您可以尝试使用以下代码,这样您就不会收到错误。< / p>

<?php
if(isset($_POST))
{
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
}
?>
<!------------Form----------------->
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>

在这个第一次没有提交页面加载时它会检查$_POST是否设置然后运行php代码,否则不运行。实际上php脚本逐行运行所以没有$_POST如果你试图访问那么你会得到错误试试这段代码可能对你有所帮助。