-1

我有一个充满成员列表 ( listmembers.php) 的表格,其中一列如下所示:

在此处输入图像描述

但是,当我现在点击禁令!或立即解禁!该页面引用dobanunban.php并显示

注意:未定义变量:第 5 行 C:\xampp\htdocs\AM\control\dobanunban.php 中的状态指的是$status = $_REQUEST['status'];

我有以下代码listmembers.php

<?php
        session_start();
        include("control/connect.php");

        if(!empty($_SESSION['usernameonline'])){
            if($_SESSION['usernameonline'] == NULL || $_SESSION['usernameonline'] == ""){
                header("location:index.php");
            }
        }
        if(empty($_REQUEST['username'])){
        $username = "";
      }else{
        $username = $_REQUEST['username'];
        }
        $query = NULL;
        $query = "select image,username,fullname,email,phone,status from member where username <> 'admin'";
        $result = mysql_query($query);

    ?>


    /----------------------------/

    <td>
    <?php echo $row['status'];?>
    <br/>
    <a id="status" href="control/dobanunban.php?username=<?php 
    echo $row['username'];
    echo $row['status'];
    ?>">

    <?php   
    if($row['status']=='banned'){
        echo "Unban now!";}
    else{ echo "Ban now!";}
    ?>
    </a>
    </td>                                

这在我的dobanunban.php

<?php
    include("connect.php");

    $username = $_REQUEST['username'];
    $status = $_REQUEST['status'];

    if($status=="unbanned"){
        $query1 = "update  member SET  Status =  'banned' WHERE  username='$username';";
        mysql_query($query1);
        header("location:../listmembers.php?err=Success ban member");
    }else if($status=="banned"){
        $query2 = "update  member SET  Status =  'unbanned' WHERE  username='$username';";
        mysql_query($query2);
        header("location:../listmembers.php?err=Success unban member");
    }

看起来$status没有从listmembers.php回声中获得价值。我的错误是什么?我该怎么办?

4

5 回答 5

2

您错过了在 URL 中添加状态参数:

<a id="status" href="control/dobanunban.php?username=<?php echo $row['username']; ?>&status=<?php echo $row['status'];?>">
于 2013-05-17T12:21:57.057 回答
2

您忘记在 URL 中指定两个不同的参数,因此未设置 $_REQUEST['status'],因此未设置通知。

你应该修改这个:

<a id="status" href="control/dobanunban.php?username=<?php 
echo $row['username'];
echo $row['status'];
?>">

对此:

<a id="status" href="control/dobanunban.php?username=
<?php echo $row['username'];?>
&status=
<?php echo $row['status'];
?>">

编辑:在 PHP 中使用全局变量时,如 $_GET、$_POST、$_REQUEST、$ SESSION 等,您应该使用 if(isset($ .....)) 检查它们是否已设置!

于 2013-05-17T12:23:38.247 回答
1

尝试 &status=<?php echo $row['status'];?>如下

 id="status" href="control/dobanunban.php?username=<&php  echo $row['username'];?>&status=<&php echo $row['status'];?>
于 2013-05-17T12:26:23.087 回答
1
    <a id="status" href="control/dobanunban.php?username=<?php echo $row['username']; ?>

&status=
    //you missed it here

<?php echo $row['status'];?>">
于 2013-05-17T12:31:13.450 回答
0

确保将 $_POST 或 $_GET 值包装在 isset() 中:

$status = isset($_REQUEST['status']) ? strip_tags($_REQUEST['status']) : false;

if($status===false){ /* An error occured, status is not defined */ }

还有一些方便的建议:

  1. 确保您的代码正确转义
  2. 尽量避免使用原生 mysql_* 函数,尝试使用 mysqli 或 PDO 进行数据库查询。

http://php.net/PDO

于 2013-05-17T12:23:12.183 回答