[英]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.