![](/img/trans.png)
[英]PHP and SQL: using login session variable not updating the database correctly
[英]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.