【问题标题】:Accessing $_POST variables cause errors访问 $_POST 变量会导致错误
【发布时间】:2009-12-06 16:00:34
【问题描述】:

我想知道您是否可以帮助我解决以下问题:

我正在将一些填写在表格中的信息传递到下一页以显示。我正在使用$_POST 方法。尽管在检查代码时会在浏览器中显示信息,但会显示 Notice: undefined index 错误,并且没有任何传递值的痕迹(在代码中)。我认为这与上面的错误有关。

我称它为 ex:

$name = $_POST['name'];

我还试图在一些隐藏字段中获取相同的信息,以便将它们(查看页面后)存储在数据库中,但这里也没有传递任何值。 hidden 中的值为空。

对不起,如果这看起来很愚蠢......但是赌注并且不知道我做错了什么。 非常感谢任何帮助。非常感谢弗朗西斯科

【问题讨论】:

    标签: php variables


    【解决方案1】:

    在 PHP 中,您无法读取访问不存在的变量。对于像$foo$bar 这样不存在的普通变量,您将收到一个未定义变量 通知,对于像$array['foo']$array['bar'] 这样不存在的数组索引,您将收到一个未定义索引通知,对于不存在的对象属性,如$object->foo$object->bar,您将收到未定义属性通知。

    这是因为在 PHP 中必须先声明变量,然后才能进行读取访问。 PHP 有函数isset 来测试变量是否存在,array_key_exists 用于数组索引,property_exists 用于对象属性。此外,isset 是一种测试存在性的通用工具。 (注意,值 null 等价于不存在。)

    因此,在您的情况下,您应该在尝试阅读之前测试$_POST['name'] 是否存在:

    if (array_key_exists($_POST, 'name')) {
        $name = $_POST['name'];
    }
    // or
    if (isset($_POST['name']) {
        $name = $_POST['name'];
    }
    

    但请注意,$name 的存在现在取决于$_POST['name'] 的存在。

    【讨论】:

    • 感谢 Gumbo 的反馈,尽管我仍然不确定我做错了什么。我使用 isset 收到警告。这是否意味着这些值被错误地发布了?
    • @francesco:每当您想读取不确定是否存在需要测试的变量时,请使用isset。看看我发布的示例,在我读取它的值之前测试了 $_POST['name'] 的存在性。但是现在 $name 依赖于 $_POST['name'] 并且您需要在想要读取它时测试该变量是否也存在。或者您使用默认值(例如 null"")声明 $name 并仅在 $_POST['name'] 存在时覆盖它。
    【解决方案2】:

    出于调试目的,您可以尝试:

    print_r($_POST);

    它将显示一个帖子数组中的所有变量。 看看你的变量是否在那里,如果没有 - 你的表单有问题。

    莱昂蒂

    【讨论】:

    • 谢谢莱昂蒂。变量在那里。如上所述,该值实际上显示在页面中,因此它们被传递。
    • 那么它们在某处被取消设置,或者您在页面上看到的值不是来自 $_POST var。
    猜你喜欢
    • 2023-04-09
    • 2011-05-24
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多