簡體   English   中英

如何獲得 session id

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

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