2013-05-17 34 views
-1

我充滿成員名單(listmembers.php)和列的一個表是這樣的:未定義的變量 - PHP MYSQL HTML

enter image description here

但是,當我點擊禁令吧!或現在不用了!網頁是指dobanunban.php,它顯示

說明:未定義變量:狀態在C:\ XAMPP \ htdocs中\ AM \控制\上線dobanunban.php 5 其指$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回聲的值。 我的錯誤是什麼?我該怎麼做?

+3

我聞到SQL注入... – ThiefMaster

回答

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

&status= 
    //you missed it here 

<?php echo $row['status'];?>"> 
2

你已經錯過了在URL中添加狀態參數:

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

謝謝!有用。對不起,我仍然不喜歡這個東西。 – noobprogrammer

+0

You'r welcome @noobprogrammer :) – Jaid07

0

確保你包裹在isset()函數的$ _POST或$ _GET值:

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

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

而且一些方便的建議:

  1. 確保您的代碼正確逃脫
  2. 嘗試將void使用本地mysql_ *函數,嘗試使用mysqli或PDO進行數據庫查詢。

http://php.net/PDO

2

你忘了指定有你的URL兩個不同的參數,所以$ _REQUEST [「狀態」]沒有設置,從而通知。

你應該修改此:

<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等,你應該檢查他們是否設置,如果(isset($ .....))!

+0

謝謝!有用。對不起,我仍然不喜歡這個東西。 – noobprogrammer

1

嘗試像&status=<?php echo $row['status'];?>如下

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