可能重复:
PHP: “Notice: Undefined variable” and “Notice: Undefined index”
我正在学习PHP,我使用post方法提交表单数据,我不知道为什么会出现这两个错误:
注意:未定义的索引:第5行的\ xampp \ htdocs \ samir \ indexes.php中的search_for
注意:未定义的索引:第6行的\ xampp \ htdocs \ samir \ indexes.php中的replace_with
if(isset($_POST['user_input']) && isset($_POST['search_for']) && isset($_POST['replace_with'])
&& !empty($_POST['user_input']) && !empty($_POST['search_for']) && !empty($_POST['replace_with']))
echo $user_input = $_POST['user_input'];
echo $search_for = $_POST['search_for'];
echo $replace_with = $_POST['replace_with'];
答案 0 :(得分:1)
使用$ _POST
或$ _GET
从表单中检索变量时,您可能会遇到此错误:
注意:'当前行''正在执行的'php文件路径'中未定义的索引''字段'
由于您的PHP错误报告设置而出现此错误。通常,当您的变量未正确设置时,它会出现。有两种方法可以解决这个问题:
1.在使用之前检查是否设置了$_POST['action']
或$GET['action']
。例如:
if (!isset($_POST['action'])) {//your pure stuff }
if (!isset($_GET['action'])) {//your pure stuff }
2。抑制通知警告
通过更改PHP.ini中的error_reporting变量可以抑制警告警告。可以设置error_reporting以显示除通知和编码标准警告之外的所有错误:error_reporting = E_ALL& 〜E_NOTICE
<?php error_reporting (E_ALL ^ E_NOTICE); ?>
但我的个人建议是解决警告,而不是使用2方法
更新了问题解答
你没有添加括号{}
所以if后面只有一行会考虑如果你的if和你的第二和第三个回声是否为真或者是
应该是
if(isset($_POST['user_input']) && isset($_POST['search_for'])
&& isset($_POST['replace_with']) && !empty($_POST['user_input'])
&& !empty($_POST['search_for']) && !empty($_POST['replace_with'])) {
echo $user_input = $_POST['user_input'];
echo $search_for = $_POST['search_for'];
echo $replace_with = $_POST['replace_with'];
}
答案 1 :(得分:1)
如果您在表单发布之前使用变量,例如$var = $_POST['var'];
它将返回错误。
最好检查是否按下了提交按钮。
示例:
if(isset($_POST['submit'])){
//form has been posted
}
然后,我会确保你将使用的所有post变量都被设置,如果没有抛出错误。
示例:
$error = false;
//['submit'] is the button used to post the form.
if(isset($_POST['submit'])){
$testVar = (isset($_POST['testVar']) && strlen($_POST['testVar']) > 0 ? $_POST : $error[] = 'Please enter something.');
if(!$error){
//Submit for
}
else{
foreach($error as $e){
echo $e;
}
}
}