ユーザーがログインした後もログイン状態を維持するために $_SESSION を使用しています。
ホームページに戻ると、最初はログインしているように見えますが、ページを一度更新すると、ログインしなくなります。
注: 私はまだ PHP プログラミングを学んでいるので、私のコードのほとんどがかなり初心者であることを気にしないでください。
Index.php コード:
<?php
session_start();
$UserOnline = "Guest";
if (isset($_SESSION['username'])) {
$UserOnline = $_SESSION['username'];
}
echo $UserOnline;
?>
Login.php コード:
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username)) {
$InvalidLogin = "Please submit a username";
$_SESSION['IL'] = $InvalidLogin;
header ('Location: http://localhost/practice/index.php');
exit;
} elseif (empty($username)) {
$InvalidLogin = "Please submit a password";
$_SESSION['IL'] = $InvalidLogin;
header ('Location: http://localhost/practice/index.php');
exit;
}
require 'required/connect.php';
$result = mysqli_query($con, "SELECT * FROM users WHERE username='$username'");
$row = mysqli_fetch_array($result);
if ($password == $row['password']) {
$_SESSION['username'] = $username;
echo "Successful Login!";
echo "<br>";
echo "<a href='index.php'>Return to HomePage?</a>";
} else {
$InvalidLogin = "Your info didn't match ours!";
$_SESSION['IL'] = $InvalidLogin;
header ('Location: http://localhost/practice/index.php');
exit;
}
?>
ユーザーがセッションにいる場合、login.phpページでテストしましたが、常に正しい戻り値が得られます。問題は、Index.php ページを一度更新した後、ユーザーがセッションに参加していないことです。
忘れていることがありますか、それとも $_SESSION を正しく使用していませんか? 私が単に知らない別のエラーはありますか?