【发布时间】:2017-08-14 23:48:37
【问题描述】:
我昨天在这里遇到了同样的问题,但我稍微更改了代码。我试图在用户登录时获取用户的用户 ID 并将其存储为会话变量。我不知道我做错了什么,因为当我尝试将此会话变量传递到另一个 php 文件中的另一个 SQL INSERT 语句时,它不起作用。如果我将局部变量传递给 INSERT 语句,它会起作用并将所有值插入我的数据库中。当我尝试传递会话变量时,它不起作用。
这是我声明会话变量的登录文件:
<?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']);
$id_retrieve = mysqli_query("SELECT user_id FROM userdetails WHERE email='$email'");
$retrieved_id = mysqli_fetch_row($id_retrieve);
$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'] = $retrieved_id[0];
header("location: User_Home_Page.html");
}else{
$_SESSION['message'] = "Login Fail";
header("location: User_Login.html");
}
}
?>
这是我尝试插入此会话变量的文件:
<?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']);
$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);
$numPages = mysql_real_escape_string($_POST['number_of_pages']);
$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");
}
?>
如果有人能提供解决方案,我将不胜感激。
【问题讨论】:
-
尝试将此
mysqli_fetch_row更改为mysqli_fetch_array,然后将此变量$_SESSION['user_id'] = $retrieved_id[0];更改为$_SESSION['user_id'] = $retrieved_id['user_id'];并尝试var_dump($_SESSION);这将显示所有会话名称和值 -
仍然没有解决问题,我该把 var_dump($_SESSION);部分代码?
-
session_start();下 -
仍然没有运气,真的很困惑过去几天一直在寻找解决方案,似乎没有任何工作。
-
那一刻我会让你的代码工作
标签: php html mysql sql session