[英]how to get the session id
請幫助我有以下 php 代碼用於我的登錄 session 但我試圖獲取 $_session ['user_id'] 而不是 $_session ['email']。 我嘗試使用 print_f function 來查看我可以使用什么,但 user_id 數組顯示 0 除非我讀錯了否則這是正確的。
session_start();
$email = strip_tags($_POST['login']);
$pass = strip_tags($_POST['password']);
if ($email&&$password) {
$connect = mysql_connect("xammp","root"," ") or die (" ");
mysql_select_db("dbrun") or die ("db not found");
$query = mysql_query("SELECT email,pass FROM members WHERE login='$email'");
$numrows = mysql_num_rows($query);
if ($numrows!=0) {
// login code password check
while ($row = mysql_fetch_assoc($query)) {
$dbemail = $row['login'];
$dbpass = $row['password'];
}
// check to see if they match!
if ($login==$dbemail&&$password==$dbpass) {
echo "welcome <a href='member.php'>click to enter</a>";
$_SESSION['login']=$email;
} else {
echo (login_fail.php);
}
} else {
die ("user don't exist!");
}
//use if needed ==> echo $numrows;
} else {
die ("Please enter a valid login");
}
我正在嘗試獲取 $_session['user_id'] 而不是如何使用它而不是 $_session['email']。 嘗試使用 $_session['user_id'] 但我得到了未定義的錯誤消息。
好吧,你沒有在這個腳本的任何地方定義 $_session['user_id'],所以它沒有定義也就不足為奇了。 您必須先為其分配一個值,然后才能引用它。
另外,請注意,此代碼存在各種安全問題。
您正在以 root 用戶身份運行 MySQL 連接。 這不是一個好主意。
您信任用戶輸入,這會將您的腳本打開到 SQL 注入攻擊。 從用戶輸入中去除 HTML 標簽並不能保證安全。 假設我來到您的網站,並在“電子郵件”字段中填寫以下內容:
bob@example.com'; GRANT ALL PRIVILEGES ON *.* TO 'evil_bob' IDENTIFIED BY '0wned_joo';
正如目前所寫的那樣,您的腳本將愉快地正常運行其查詢,並創建一個名為“evil_bob”的帳戶,該帳戶對您服務器上所有數據庫中的所有信息具有完全權限。
為避免這種情況,切勿假設用戶輸入是安全的。 驗證它。 並且要更加確定,不要將變量直接粘貼到您編寫的 SQL 中。 請改用綁定參數。 有一些情況是很難避免的——例如,如果您需要指定列的名稱而不是一條數據的名稱,綁定參數將無濟於事,您必須以其他方式進行。 但是,對於您在查詢中使用的任何數據,請綁定它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.