Привет, я создал систему входа в систему, но по какой-то причине она не работает, я запускаю сеанс после некоторого входа в систему, а затем сделал чек, если сеанс isetet, и если сеанс не более 1 часа:Сессия не работает
это мой сценарий Войти на index.php:
<?php
require 'mysql.php';
if(isset($_SESSION["username"]) && time() - $_SESSION["CREATED"] > 3600){
session_start();
session_unset();
session_destroy();
}
if(isset($_SESSION["username"]) && time() - $_SESSION["CREATED"] < 3600){
header('Location: main.php');
}
if (isset($_POST["login"])){
$username = $_POST["username"];
$password = $_POST["password"];
$stmt = $connect->prepare("SELECT username, password FROM users WHERE username=? ");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
$rowcount = $result->num_rows;
if ($rowcount > 0){
while ($row = $result->fetch_assoc()) {
if ($row["username"] == $username && $row["password"] == $password){
if(!isset($_SESSION)) {
session_start();
}
$_SESSION["username"] = $username;
$_SESSION["usertype"] = $row["usertype"];
$_SESSION["userid"] = $row["id"];
$_SESSION["CREATED"] = time();
header('Location: main.php');
} else {
$error_msg2 = "Username or password does not mach";
$error2 = "error";
}
}
} else {
$error_msg2 = "No such user";
$error2 = "error";
}
echo $error_msg2;
$stmt->close();
$connect->close();
}
?>
и это main.php код:
if(isset($_SESSION["username"]) && time() - $_SESSION["CREATED"] > 3600){
session_start();
session_unset();
session_destroy();
header('Location: index.php');
}
так те, что вы войти вы будете перенаправлены от main.php и если сессия установлены u shou ld не сможет получить доступ к index.php, потому что если вы попробуете u и сеанс не истекли, вы получите перенаправленный обратно main.php, то с main, если сессия истекла, вы будете перенаправлены обратно в index.php для входа в систему, но неважно если вы вошли в систему или нет, вы можете свободно ходить между ними.
начать сеанс вне если условия. –
@FrayneKonok согласился. и уничтожить его с вашим состоянием. –
то же самое, и я знаю, что код хорош, несмотря на то, что я вошел в систему, и получил перенаправление на главную.php, поэтому он должен пройти весь предыдущий ожидаемый код и начать сеанс – yahoo5000