簡體   English   中英

試圖設置會話變量

[英]trying to set session variable

if(isset($_SESSION['admin'])) {
echo "<li><b>Admin</b></li>";
}

<?php
session_name('MYSESSION');
session_set_cookie_params(0, '/~cgreenheld/');
session_start();

$conn = blah blah
$query2 = 'Select Type from User WHERE Username = "'.$_SESSION['user'].'" AND Type =\'Admin\'';
$result2 = $conn->query($query2);
if($result2->num_rows==1) {
$_SESSION['admin'] = $result2;
}
?>

嗨,我正在嘗試設置此會話變量,但似乎沒有設置,我想知道是否有人可以提供幫助。 如果設置了session ['admin'],則應回顯admin按鈕。 但是我不太確定為什么? (我確實在每個頁面上都有會話啟動和所有內容,這不是問題,也不是我檢查了mysql查詢的任何“您沒有php標記”問題,並且確實從表中返回了一些東西。請問有什么想法嗎?

您的session_start(); 應該與頁面變量無關的頁面頂部。

文檔

當調用session_start()或自動啟動會話時,PHP將調用打開並讀取會話保存處理程序。

編輯評論:

<?php
    session_name('MYSESSION');
    session_set_cookie_params(0, '/~cgreenheld/');
    session_start();
    // Moved to start after answer was accepted for better readability
    // You had the <?php after this if statement? Was that by mistake?
    if(isset($_SESSION['admin'])) 
    {
        echo "<li><b>Admin</b></li>";
    }

    // If you have already started the session in a file above, why do it again here?

    $conn = blah blah;
    $query2 = 'Select Type from User WHERE Username = "'.$_SESSION['user'].'" AND Type =\'Admin\'';
    // Could you echo out the above statement for me, just to 
    // make sure there aren't any problems with your sessions at this point?
    $result2 = $conn->query($query2);
    if($result2->num_rows==1) 
    {
        $_SESSION['admin'] = $result2;
        // It seems you are trying to assign the database connection object to it here.
        // perhaps try simply doing this:
        $_SESSION['admin'] = true;
    }
?>

從進一步的評論中編輯2:

您實際上必須像這樣提取數據-從本教程中摘錄可能會幫助您一些更多的事情:

$query  = "SELECT name, subject, message FROM contact";
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "Name :{$row['name']} <br>" .
     "Subject : {$row['subject']} <br>" .
     "Message : {$row['message']} <br><br>";
} 

但是,盡管如此,在我們談論它的同時,最好不要使用舊的mysql_*函數,而要使用更好的PDO

移動session_start(); 到頁面頂部。 您正在嘗試檢索未加載的會話。

編輯:嘗試回顯$_SESSION['admin'] ,即使它包含某些內容。 還可以嘗試通過添加echo('its working');調試if($result2->num_rows==1)代碼echo('its working'); die('its working'); 在其中檢查$ result2是否正好包含1行,因為當前看來$ result2包含多於1行或根本沒有行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM