post方法中的未定义索引

时间:2012-09-20 09:34:52

标签: post php

  

可能重复:
  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'];

2 个答案:

答案 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;
        }
    }
}