PHP定义HTML表单$ _POST的索引

时间:2014-02-06 02:18:19

标签: php

我有以下php代码

<?php
    if(isset($_POST['address_building_number']) OR !isset($_POST['address_building_number'])){
        $address_building_number = $_POST['address_building_number'];
        echo 'Hello';
        $good = 'Good bye';
    }
    echo $address_building_number;
    echo $good;

?>

当我点击提交按钮时,会显示Hello和Good bye字样,但它告诉我 PHP注意:未定义索引:现在$_POST['address_building_number'来自带有名称的HTML输入表单address_building_number。

如何修改if(isset($_POST['address_building_number']) OR !isset($_POST['address_building_number'])){以便我可以'定义索引',同时仍然能够回显Hello和Good再见。

2 个答案:

答案 0 :(得分:3)

修改

一体化版

<?php
    if(isset($_POST['address_building_number']) || !empty($_POST['address_building_number'])){
        $address_building_number = $_POST['address_building_number'];
        echo 'Hello';
        $good = 'Good bye';
    }
    echo $address_building_number;
    echo $good;

    // comment out exit; if you want the form to NOT appear after submit
    // exit;
?>

<form action="" method="post">
   Name: <input type="text" name="address_building_number"><br>
   <input type="submit" value="Submit">
</form>

原始答案

你的条件似乎在与自己作斗争。

请注意if(isset

if(!isset$_POST['address_building_number']

这里发生的是“如果 IS 设置,如果设置”;是一个矛盾的陈述。

你可能想要使用的是:

if(isset($_POST['address_building_number']) OR !empty($_POST['address_building_number'])) 

(快速FYI)如果是这种情况,||优先于OR,请使用:

if(isset($_POST['address_building_number']) || !empty($_POST['address_building_number']))

...检查是否已设置,以及是否为空。

以下内容已经成功测试并回显了所有内容,没有错误消息:

<强> HTML

<form action="action.php" method="post">
   Name: <input type="text" name="address_building_number"><br>
   <input type="submit" value="Submit">
</form>

PHP (action.php)例如

<?php
    if(isset($_POST['address_building_number']) || !empty($_POST['address_building_number'])){
        $address_building_number = $_POST['address_building_number'];
        echo 'Hello';
        $good = 'Good bye';
    }
    echo $address_building_number;
    echo $good;
?>

关于“以便我可以'定义索引',同时仍然能够回应Hello和Good bye” - 我很难理解你的意思。< / p>

如果你的意思是“如果你仍然可以回应”Hello and Good bye“在那条件声明之外”,那么答案是肯定的;这正是我的答案所做的,因为它使用OR||)运算符。如果是AND&&)运算符,则无法实现。

答案 1 :(得分:0)

1st - 你的if语句错了它总是导致true。我不确定你在这里做什么?

第二 - PHP注意:显示未定义的索引,因为即使您已提交表单,if语句也始终为true。

第3 - 如果循环到

,可能会改变
if(isset($_POST['submit'])) {

还要确保提交按钮有name="submit"