0

作成しようとしている単純なログインシステムで問題が発生しています。これが私の設定です:

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にリダイレクトすると、すぐにログインフォームが表示されます。何が問題なのですか?編集:login.phpにsession_start()を追加した後でも、同じ結果になります。

4

1 に答える 1

2

session_start()をファイルの最初の行にし、セッション変数を使用するすべてのファイルに含める必要があります

于 2012-12-17T01:53:02.003 に答える