1

このログインスクリプトがあります:

<?php
session_start();


$username = $_POST['username'];
$password = $_POST['password'];

include 'includes/connect.php';

$username = mysqli_real_escape_string($con, $username);
$query = "SELECT password, salt
    FROM member
    WHERE username = '$username';";

$result = mysqli_query($con, $query);

if(mysqli_num_rows($result) == 0) 
{
header('Location: login.html');
}

$userData = mysqli_fetch_array($result, MYSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $password) );

$_SESSION['username']=$username; 

if($hash != $userData['password']) 
{
header('Location: login.html');
}else{ // Redirect to home page after successful login.
 $_SESSION['username']=$username; 
header('Location: stats.php');
}
?>

次に、これは stats.php です。

 <?php 
 session_start();
 if(!isset($_SESSION['username'])){
 header("Location:register.html");
 }
 ?>

この下に私のhtml 5ドキュメントがあります。

ただし、ログインしているかどうかは問題ではなく、それでも stats.php にアクセスできます。

4

3 に答える 3

1

セッション値を保存していないため、 if 条件は常に失敗します。

だから追加

$_SESSION['username'] = $userData['username'];

中身login.php.

于 2013-09-12T06:51:37.067 に答える
0

まだセッションを設定していません。そのため、リダイレクトされます。

login.phpこのようにコードにセッションを設定します

$userData = mysqli_fetch_array($result, MYSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $password) );
//Set here like this
$_SESSION['username']=$username; // or whatever you have
于 2013-09-12T06:49:35.240 に答える