簡體   English   中英

PHP會話變量試圖在登錄時將其設置為SQL數據庫中的用戶ID

[英]PHP session variable trying to set it to users id from SQL database upon login

我正在嘗試將用戶的會話ID設置為來自數據庫的相應ID。 用戶的ID是SQL數據庫中的簡單自動增量INT。 用戶使用其電子郵件和密碼登錄。 會話啟動后,我想要一個會話變量來存儲該用戶ID。 目前,我用於登錄php文件以創建會話ID的代碼如下。

$_SESSION['user_id'] =  $user_id;

我的將會話用戶ID設置為另一個php文件中的變量的代碼如下:

$user_of_id = $_SESSION['user_id'];

當我嘗試在我聲明過的php腳本中將$ user_of_id插入數據庫的另一個表中時,它不起作用。 我有session_start(); 在所有必要的php文件中。 我希望有人能指出我的錯誤。

用戶登錄php的完整代碼如下:

<?php
 session_start();

$db =mysqli_connect("localhost", "root", "", "project_website1");

if(isset($_POST['Login_Btn']))  {


    $email = mysql_real_escape_string($_POST['email']);
    $password = mysql_real_escape_string($_POST['password']);

    $password = md5($password);// Decrypt hash of password stored in database

    $mySQLQuery = "SELECT * FROM userdetails WHERE email='$email' AND password='$password'";
    $resultOfQuery = mysqli_query($db, $mySQLQuery);

    if (mysqli_num_rows($resultOfQuery) == 1) {

        $_SESSION['user_id'] =  $user_id;
        header("location: User_Home_Page.html");
    }else{          
        $_SESSION['message'] = "Login Fail";

    }




}
 ?>

用於上傳我的文檔的php如下:

<?php
session_start();
$db =mysqli_connect("localhost", "root", "", "project_website1");
if(isset($_POST['upload_btn'])){

    $user_id = $_SESSION['user_id'];
    $taskTitle = mysql_real_escape_string($_POST['tasktitle']);
    $taskDescription = mysql_real_escape_string($_POST['TaskDescription']);
    $numPages = mysql_real_escape_string($_POST['number_of_pages']);

    $file = rand(1000,100000)."-".$_FILES['file_document']['name'];
    $file_loc = $_FILES['file_document']['tmp_name'];
    $file_size = $_FILES['file_document']['size'];
    $file_type = $_FILES['file_document']['type'];
    $folder="uploads/";

    move_uploaded_file($file_loc,$folder.$file);

    $numWords = mysql_real_escape_string($_POST['number_of_words']);
    $deadlineClaim = mysql_real_escape_string($_POST['deadline_claim']);
    $deadlineComplete = mysql_real_escape_string($_POST['deadline_complete']);

    $sql = "INSERT INTO task(user_id, title, description, file, file_type, file_size, pg_num, num_words, deadline_claim, deadline_completion) VALUES( '$user_id', '$taskTitle', '$taskDescription', '$file', '$file_type', '$file_size', '$numPages', '$numWords', '$deadlineClaim', '$deadlineComplete')";
    mysqli_query($db, $sql);
    header("location: User_Home_Page.html");

}

?>

編輯:我的答案用完整的代碼后,問題已更新。 也許這個答案需要重做。

如果您使用session_start(); 正確地(在文檔的開頭),您的代碼就可以了。

file1.php應該是:

<?php    
session_start();
$user_id = 5;
$_SESSION['user_id'] =  $user_id;

file2.php應該是:

<?php    
session_start();
$user_of_id = $_SESSION['user_id'];
echo 'User-ID: '.$user_of_id; //User-ID: 5

如果無法輸出用戶ID,請嘗試通過檢查會話是否已設置來調試代碼( print_r($_SESSION); )。 也許您有一個if子句不會被執行,或者類似這樣的內容( if(false) $_SESSION['user_id'] = $user_id;將是錯誤的)。

如果仍然無法輸出用戶ID,則說明服務器(嘗試使用此最小代碼)或客戶端(嘗試使用其他瀏覽器/計算機)存在問題。

暫無
暫無

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

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