php
  • html
  • mysql
  • post
  • 2014-10-11 31 views 0 likes 
    0

    我正在創建一個敏感頁面,其他用戶無需訪問管理員即可訪問該頁面。但是,當我試圖訪問該頁面而不是管理它的作品!未能通過功能驗證管理員權限

    所有用戶都不是管理員,所以他們不應該能夠訪問它。

    enter image description here

    但頁面加載罰款對他們(非管理員)。

    PHP代碼:

    function isAdmin(){ 
    
        $admin = mysql_query("SELECT `admin` FROM `users` WHERE `username` = '".$_SESSION['username']."'"); 
    
        if(!($admin)){ 
    
    
         echo 'You are not authorised'; 
         return false; 
    
    }else{ 
         return true; 
    } 
    } 
    

    敏感的頁面上的代碼:

    if(isAdmin()){ 
         $name = $_POST['name']; 
         $description = $_POST['description']; 
         $image = $_POST['image']; 
         $amount = $_POST['amount']; 
    
         $sql = "INSERT INTO `store`(`name`, `description`, `price`, `image`) VALUES ('$name','$description','$amount','$image')"; 
         mysql_query($sql); 
    
    
    
         echo 'Done!'; 
    
    } 
    

    當我發佈數據這一頁,它加載和呼應Done!,但它不應該因爲:

    • 當前用戶不是管理員
    • S O,isAdmin()返回false
    • 然後if(isAdmin())接收false
    • 所以if聲明不應該執行。

    是的,我有這些:

    • MySQL連接
    • 與正確 php.ini
    • 正確配置我的我的users
    • admin在我的MySQL users
    • PHP服務器int

    回答

    2

    您正在根據您的條件判斷您的查詢在語法上是否正確。由於您的查詢是有效的,它總是會返回false以外的內容。

    改爲使用mysqli_num_rows。

    if(msyql_num_rows($admin)<1)){ 
    
    
         echo 'You are not authorised'; 
         return false; 
    
    }else{ 
         return true; 
    } 
    } 
    
    +0

    謝謝!它的工作 – 2014-10-11 04:37:22

    +0

    我不會忘記! :) – 2014-10-11 04:38:52

    0

    計數而不是資源值。請檢查以下代碼

    function isAdmin(){ 
    
         $admin = mysql_query("SELECT `admin` FROM `users` WHERE `username` = '".$_SESSION['username']."'"); 
         $count = mysql_num_rows($admin); 
    
         if(!($count)){ 
    
    
          echo 'You are not authorised'; 
          return false; 
    
        }else{ 
          return true; 
        } 
    
    } 
    
    相關問題