尝试在用户刷新页面时保留网址中的数据时未定义的索引

时间:2014-01-13 16:35:41

标签: php

我试图将用户输入的数据保存到网址的注释框中,这样如果用户刷新他们输入的数据仍然在表单中。 Bellow是一直反复出现的错误消息。 注意:未定义的索引:在第21行的/home/4199203/public_html/phone.php中发表评论

这是我正在使用的代码

<?php
if(isset($_GET['comment'])){
$RefillComment = $_GET['comment'];
}elseif(isset($_GET['name'])){
$RefillName = $_GET['name'];
}

if($_POST['comment'] !=""){
if($_POST['name'] !=""){
if(isset($_POST['comment'], $_POST['name'])){
$name = $_POST['name'];
$comment = $_POST['comment'];
echo"name = ".$name."";
echo"comment = ".$comment."";
}
}else{
if($_POST['name'] !=""){
    header('location: phone.php?phone='.$Review_ID.'&name='.$_POST['name']);
    die();
}else{
if($_POST['comment'] !=""){
    header('location: phone.php?phone='.$Review_ID.'&comment'.$_POST['comment']);
    die();  
}
}


    }
    }
   ?>

这是表格

<form name="form1" <?php {echo 'action="'.'phone.php?phone='.$Review_ID.'"';}?> method="POST">
    <colgroup>
        <col widht="25%" style="vertical-align:top;"/>
        <col widht="75%" style="vertical-align:top;"/>
    </colgroup>



    <table>
        <tr>
            <td><label for="name">Name</label></td>
            <td><input type="text" name="name" <?php if(isset($_GET['name'])){echo      'value="'.$RefillName.'"';}?> /></td>
        </tr>
        <tr>
            <td><label for="comment">Comment:</label></td>
            <td><input type="comment" name="comment" <?php if(isset($_GET['comment'])){echo 'value="'.$RefillComment.'"';}?></textarea></td>
        </tr>
        <tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr>
    </table>
</form>

2 个答案:

答案 0 :(得分:2)

在代码中使用数组密钥($_POST)之前,需要先检查它是否已设置。

替换:

if($_POST['name'] !=""){

为:

if(isset($_POST['name']) && !empty($_POST['name'])){

和,替换:

if($_POST['comment'] !=""){

为:

if(isset($_POST['comment']) && !empty($_POST['comment'])){

这现在适合你吗?

答案 1 :(得分:0)

大多数时候awnser注意:未定义的索引是ISSET

总是使用isset,在帖子上获取,

我在你的代码中看到有时候你会使用它,有时你也不会。

它只是检查var是否设置..然后你必须检查var或post是否为空

//if post isset and its not empty
if (isset($_POST) && !empty($_POST)) {
//do this
}