나는 만들고자하는 간단한 로그인 시스템에 문제가 있습니다.PHP 로그인 스크립트 세션이 생존하지 않습니다.
index.php를
<?php if(!isset($_SESSION['username'])){
session_start();
//present login form with action=login.php
} else {
//display actual page
}
?>
login.php
<?php
if(!empty($_SESSION['username'])){
echo $_SESSION['username'];
} else {
$username=$_POST['username'];
$password=sha1($_POST['password']);
$link=mysqli_connect("localhost","root","password","database",3306,"/tmp/mysql.sock");
$query="SELECT * FROM login WHERE `name`='".$username."' AND `passwordhash`='".$password."' LIMIT 1";
$result=mysqli_query($link,$query);
if(mysqli_num_rows($result)==1){
session_start();
$_SESSION['username']=$username;
$row=mysqli_fetch_assoc($result);
$_SESSION['firstname']=$row['firstname'];
$_SESSION['lastname']=$row['lastname'];
echo "Username: ". $_SESSION['username']." Name: ".$_SESSION['firstname']." ".$_SESSION['lastname']; //this is just here as POC. If I redirect to index.php (using header()), it shows the login form (claims $_SESSION['username'] is unset).
}
}
?>
내가 로그인하면, 그것은 login.php에 잘 내 이름과 이름과 성을 보여줍니다 (: 여기 내 설정이다 데이터베이스 문제가 아님). 그러나 index.php로 리디렉션하면 즉시 로그인 양식이 표시됩니다. 그게 무슨 문제 야? EDIT : login.php에 session_start()를 추가 한 후에도 동일한 결과가 나타납니다.
'으로 session_start()'세션 변수를 사용하는 모든 파일에 포함되어야합니다. –
'$ _SESSION'을 사용하기 전에'session_start();'를 호출하십시오 – Musa