2014-12-02 51 views
-1

所以我有一個登錄腳本,基於登錄用戶的用戶名創建$ _SESSION。在另一個頁面上,我希望顯示內容該用戶的行有一個1。如果該行中有0,則不顯示內容。無論我嘗試了什麼,我都遇到了問題,無論用戶登錄,它都不會顯示YES。顯示內容如果行== 1如果行== 0不顯示

TEST1 = 1
TEST2 = 0

<? 
require_once 'dbinfo.php'; 

$sess = $_SESSION['authuser']; 

    $link = mysqli_connect($servername, $username, $password); 
    if (!$link) { 
    die('Could not connect: ' . mysqli_error($link)); 
    } 
    mysqli_select_db($link, $database) or trigger_error(mysqli_error($link)); 
    $acc = "SELECT username FROM admins WHERE username = '$sess'"; 
    $result = mysqli_query($link, $acc) or trigger_error(mysqli_error($link)); 
    ob_start(); 
    while($row = $result->fetch_assoc()) 
    { 
    if($row['access'] == 1) 
    { 
     echo 'YES'; 
    } 
    elseif ($row['access'] == 0) 
    { 
     echo 'NO'; 
    } 
    } 
    ob_end_flush() 
?> 

將溶液容易和Class指出來。忘記選擇訪問...而不是用戶名。菜鳥的錯誤。

+1

你應該做的是開始使用參數化查詢的第一件事。您現在查詢的方式不會正確轉義。接下來,在你的查詢後查看'var_dump($ result);',看看你得到了什麼。接下來,'var_dump($ _ SESSION)'。你是否在某個地方開始你的會議? – Brad 2014-12-02 04:20:08

+7

'選擇訪問...'你沒有獲取'access'列 – Class 2014-12-02 04:20:10

+0

哦,geeze。我現在覺得很愚蠢。謝謝上課,我錯過了。我經歷了幾次不同的編碼迭代,一定是錯過了。 – gravvy 2014-12-02 04:27:49

回答

1

你必須寫

session_start(); 
在您所有的文件希望利用 $_SESSION

而你的選擇查詢將只輸出username列,因爲你已經選擇了只此一家,與

SELECT * FROM admins WHERE username = '$sess' 

SELECT username, access FROM admins WHERE username = '$sess' 

,而不是嘗試。

你絕對應該做的是學習準備好的語句,因爲你的實際查詢是廣泛開放的sql注入。

準備語句示例(from php.net

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { 

    $stmt->bind_param("s", $city); 

    $stmt->execute(); 

    $stmt->bind_result($district); 

    $stmt->fetch(); 

    $stmt->close(); 
} 

    $mysqli->close(); 

You can read more about mysqli prepared statements here

0

寫入訪問(列)並嘗試使用isset()函數和運算符===當您在返回的變量中得到0時。