사용자가 로그인 할 때 데이터베이스의 데이터를 저장하기 위해 SESSIONS를 사용하고 있습니다. 그러나 다른 페이지의 데이터베이스를 쿼리 할 때 SESSION 변수가 새 값을 할당하지 않고 변경됩니다.
누구에게 어떤 문제가 있는지 알 수 있습니까?
변수 저장 로그인 페이지 :
enter code here
session_start();
if($_POST['login_button']) {
require_once('includes/config.inc.php');
$username = $_POST['login_username'];
$password = $_POST['login_password'];
$hash_pwd = sha1($password);
if(($username != NULL) && ($password != NULL)) {
$conn = mysql_connect('localhost', 'admin', 'root') or die(mysql_error());
mysql_select_db('main') or die(mysql_error());
$check_users = "SELECT * ".
"FROM users ".
"WHERE email = '{$username}' AND password = '{$hash_pwd}' ".
"LIMIT 1";
$result = mysql_query($check_users);
$counted = mysql_num_rows($result);
if($counted != 1) {
header("location:login.php?fail"); } else {
while ($row = mysql_fetch_array($result)) {
$useR_login_un = $row['name'];
$useR_login_user_id = $row['user_id'];
$useR_login_login_time = $row['login_times'];
$useR_login_user_email = $row['email'];
$useR_login_course = $row['course'];
$useR_login_campus = $row['campus'];
$useR_login_login_time = $useR_login_login_time + 1;
$useR_login_datenow = date("Y-m-d") . " " . date("H:i:s");
$useR_login_sid = sha1($useR_login_user_id) . rand() . md5($pinch_o_salt);
$update_login_times = "UPDATE users ".
"SET login_times = '{$useR_login_login_time}', last_login = '{$useR_login_datenow}' ".
"WHERE email = '{$useR_login_user_email}' AND user_id = '{$useR_login_user_id}'";
mysql_query($update_login_times);
mysql_close($conn);
$_SESSION['sid'] = sha1($useR_login_user_id) . $pinch_o_salt;
$_SESSION['user_id'] = $useR_login_user_id;
$_SESSION['username'] = $useR_login_user_email;
$_SESSION['name'] = $useR_login_un;
$_SESSION['course'] = $useR_login_course;
if($useR_login_login_time == 0) {
session_write_close();
header("Location: first_run.php");
exit;
}
else {
session_write_close();
header("Location: home.php");
exit;
}
}
}
} else { header("Location: login.php?fail"); exit; } }
편집 : 그것은 변수를 저장하고 내가 다른 페이지로 이동하면 변수가 나타납니다,하지만 난 새로 고칠 때, 그들 중 일부는 그 중 일부를 손실을 동일하게 유지하고 일부는 데이터베이스의 다른 사용자의 정보로 변경합니다.
EDIT2 : 데이터베이스를 다시 쿼리 할 때만 발생한다는 것을 깨달았습니다. 문제를 일으키는
것은 (home.php ON)입니다 :이 주석 경우
$conn = mysql_connect('localhost', 'ggordan_admin', 'valeg0r') or die(mysql_error());
mysql_select_db('ggordan_wmin') or die(mysql_error());
$query = "SELECT * ".
"FROM users ".
"WHERE course = '".$_SESSION['course']."' ".
"LIMIT 3";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
echo $numrows;
while ($my = mysql_fetch_array($result)) {
$id = $row['user_id'];
$name = $row['name'];
}
, 그런 일은하지 않는 것 같습니다.
편집 : 다른 스크립트의 변수 충돌과 관련이 있다는 것을 깨달았습니다. 그 페이지가 HTTPS 또는 다른 서버에 HTTP로 전환하는 경우가 될 수 이유에
$conn = mysql_connect('localhost', 'ggordan_admin', 'valeg0r') or die(mysql_error());
mysql_select_db('ggordan_wmin') or die(mysql_error());
$query = "SELECT * ".
"FROM users ".
"WHERE course = '".$_SESSION['course']."' ".
"LIMIT 3";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
echo $numrows;
while ($my = mysql_fetch_array($result)) {
// if i change $id to $user_id it breaks the login script
$id = $row['user_id'];
$name = $row['name'];
}
코드? –