제출 된 데이터를 처리 한 후 내 서명 스크립트가 사용자를 색인 페이지로 다시 리디렉션합니다. 문제는 내 색인 페이지에서 사용자가 로그인했는지 여부를 확인할 수 없다는 것입니다. 나는 삽입 한 :로그인 페이지에 문제가 있습니다.
if (isset($_SESSION['id']))
{echo $_SESSION['id']; die();}
목적을 확인하기위한 인덱스 페이지의 시작 부분에. 그러나 그것은 아무 것도 울리지 않습니다.
내 로그인의 스크립트는 다음과 같습니다
<?php
include '../includes/common.php';
$page='signin';
$err = array();
foreach($_GET as $key => $value) {
$get[$key] = filter($value);
}
if ($_POST['dologin']=='Daxil ol') {
foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}
$login = $data['login'];
$pass = $data['pwd'];
if (strpos($login,'@') === false) {
$user_cond = "login='$login'";
} else {
$user_cond="email='$login'";
}
$result = $db->query("SELECT `id`,`pwd`,`fname`,`lname`,`approved`,`type`,`level` FROM users WHERE $user_cond AND `ban` = '0'") or die($db->error());
$num = $result->num_rows;
if ($num > 0) {
list($id,$pwd,$fname,$lname,$approved, $type, $level) = $result->fetch_row();
if (!$approved) {
$err[] = 6;
}
if ($pwd === PwdHash($pass,substr($pwd,0,9))) {
if (empty($err)) {
session_start();
session_regenerate_id(true);
$_SESSION['id']= $id;
$_SESSION['fname'] = $fname;
$_SESSION['lname'] = $lname;
$_SESSION['type'] = $type;
$_SESSION['level'] = $level;
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
$stamp = time();
$ckey = GenKey();
$db->query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die($db->error());
//set a cookie
if (isset($_POST['remember'])) {
setcookie("id", $_SESSION['id'], time()+60*60*24*COOKIE_TIME_OUT, "/");
setcookie("key", sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT, "/");
setcookie("fname",$_SESSION['fname'], time()+60*60*24*COOKIE_TIME_OUT, "/");
}
header("Location: ../../../index.php");
}
} else {
$err[] = 7;
}
} else {
$err[] = 8;
}
if (!empty($err)) {
include "../includes/error.php";
}
}
?>
검사 PHP는 오류 로그를. 오류 없음. 또한 MySql DB 테이블을 점검했습니다. 그것은 ctime과 ckey를 설정합니다. 로그인 부분이 작동합니다 (제 생각 엔). 필터 기능은 common.php
입니다 (게시물 데이터 삭제).
에 session auto start directive 세트를 가지고하지 않는 한 세션 데이터를 필요로 각 페이지에 세션을 시작하는 데 필요한'첫번째 확인 전에이 어떤'$ 경우 _SESSION' 변수가 설정되어 있습니까? – Artyom
당신은 session_start()를 가지고 있습니까? 색인 페이지에도 있습니까? – realshadow
예 페이지 시작 부분에 있습니다 –