我已经在logout.php中创建了会话和销毁会话但是如果我输入了url(http://localhost/demo/home.php)it显示loggedin.It应该在index.php上重定向或找不到显示页面。
我正在实现的目标 - 我有登录部分并且没有问题。我能够使用我的凭据登录并且页面成功重定向到home.php。从home.php我有注销链接,我点击了该页面在index.php上重定向,但如果我输入home.php显示登录.. 请帮助我。
的index.php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$sel_user = "SELECT * FROM admin WHERE Username='$username' and Password='$password'";
$run_user = mysqli_query($conn, $sel_user);
$check_user = mysqli_num_rows($run_user);
if($check_user>0){
echo "<script>window.open('home.php','_self')</script>";
$_SESSION['user_email']=$username;
}
else {
$msg="Username and Password is incorrect.";
}
Home.php
<h2>Home page</h2>
<a href="logout.php">logout</a>
logout.php
<?php
session_start();
if(session_destroy())
{
header("Location: index.php");
}
?>
答案 0 :(得分:3)
您的home.php
应检查用户是否已登录。只需在顶部添加if
语句即可。
类似的东西:
if (isset($_SESSION['user_email']) == FALSE){
header("Location: index.php");
}
你的logout.php
也只是创建会话,然后检查它是否被销毁。为此你可以:
unset($_SESSION['user_email']);
并且您的home.php
只会重定向,因为此var不再被声明。
答案 1 :(得分:1)
在您的主页
if (!isset($_SESSION['user_email'])){
header("Location: index.php");
}
在您的退出页面
<?php
unset($_SESSION['user_email']);
header("Location: index.php");
?>
在mysql请求中也使用mysqli_real_escape_string($conn, $variable)
以避免注入sql
$sel_user = "SELECT * FROM admin WHERE Username='".mysqli_real_escape_string($conn, $username)."' and Password='".mysqli_real_escape_string($conn, $password)."'";
在添加到数据库之前检查POST方法收到的数据。