检查登录状态并保存登录会话(PHP)

检查登录状态并保存登录会话(PHP),php,login-script,Php,Login Script,每当用户试图访问未经授权的页面时,我都在使用登录系统 然后他应该在登录页面返回登录,我如何执行它 下面是我的登录脚本 <?php session_start(); $host="localhost"; // Host name $db_username="root"; // Mysql username $db_password=""; // Mysql password $db_name="designshop"; // Database name $tbl_name="mem

每当用户试图访问未经授权的页面时,我都在使用登录系统 然后他应该在登录页面返回登录,我如何执行它

下面是我的登录脚本

<?php

session_start();
$host="localhost"; // Host name 
$db_username="root"; // Mysql username 
$db_password=""; // Mysql password 
$db_name="designshop"; // Database name 
$tbl_name="member"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$member_username=$_POST['member_username']; 
$password=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection)
$member_username = stripslashes($member_username);
$password = stripslashes($password);
$member_username = mysql_real_escape_string($member_username);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM $tbl_name WHERE member_username='$member_username' and password='$password'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['member_username']=$_POST['member_username'];
$_SESSION['password']=$_POST['password'];

header("location:login_success.php");
}
else {
header("location:try_again.html");
}
?>

您所要做的就是检查
$\u会话['member\u username']
是否存在(以及是否为空)。如果设置了,则表示您的用户已登录,因此无需重新登录

注:

  • 在会话中不需要存储用户的密码:事实上,最好不要这样做
  • 您通过MySQL进行身份验证,这意味着您将密码存储在明文中:这是一种糟糕的做法。最好仅基于
    用户名
    从数据库中检索
    用户名
    密码
    ,并在PHP代码中进行比较:例如,这将允许您存储
    sha1
    'd密码

您所要做的就是检查
$\u会话['member\u username']
是否存在(以及是否为空)。如果设置了,则表示您的用户已登录,因此无需重新登录

注:

  • 在会话中不需要存储用户的密码:事实上,最好不要这样做
  • 您通过MySQL进行身份验证,这意味着您将密码存储在明文中:这是一种糟糕的做法。最好仅基于
    用户名
    从数据库中检索
    用户名
    密码
    ,并在PHP代码中进行比较:例如,这将允许您存储
    sha1
    'd密码

只要把它放在
会话\u start()下面的顶部即可。

   if(!empty($_SESSION['member_username'])){header("location: login_success.php");}
就像这样

session_start();

 if(!empty($_SESSION['member_username'])){
 header("location: login_success.php");}

 $host="localhost"; // Host name 
 $db_username="root"; // Mysql username 
 $db_password=""; // Mysql password 
 //REST OF CODE

只要把它放在
session\u start()
下面的顶部即可

   if(!empty($_SESSION['member_username'])){header("location: login_success.php");}
就像这样

session_start();

 if(!empty($_SESSION['member_username'])){
 header("location: login_success.php");}

 $host="localhost"; // Host name 
 $db_username="root"; // Mysql username 
 $db_password=""; // Mysql password 
 //REST OF CODE

使用
session\u start()
启动代码,并在任何用户尝试访问页面时检查会话是否已设置,如果已设置会话,则重定向到页面,否则重定向到登录页面


您可以使用isset()

启动代码和
会话\u start()
进行检查,并在任何用户尝试访问页面时检查会话是否已设置,如果已设置会话,则重定向到页面,否则重定向到登录页面

您可以使用isset()进行检查。

遵循以下代码

 <?php session_start();
    include('conn.php');
    $Name = $_POST['login_id'];
    $Pass = $_POST['password'];
    $select="select * from admin_login where admin_name='$Name' AND admin_pwd='$Pass'";
    $query=mysql_query($select) or die($select);
    $rows=mysql_fetch_array($query);
    $row=mysql_num_rows($query);


    if($row != 0)
    {
        $_SESSION['admin_name']=$rows['admin_name'];
        echo "<script>window.location.href='index.php'</script>";

    }else
    {
        $message = 'Invalid Username Or Password';
         echo '<script type="text/javascript">alert("'.$message.'")</script>'; 
        echo "<script>window.location.href='login.php'</script>";

    }
    ?>
遵循此代码

 <?php session_start();
    include('conn.php');
    $Name = $_POST['login_id'];
    $Pass = $_POST['password'];
    $select="select * from admin_login where admin_name='$Name' AND admin_pwd='$Pass'";
    $query=mysql_query($select) or die($select);
    $rows=mysql_fetch_array($query);
    $row=mysql_num_rows($query);


    if($row != 0)
    {
        $_SESSION['admin_name']=$rows['admin_name'];
        echo "<script>window.location.href='index.php'</script>";

    }else
    {
        $message = 'Invalid Username Or Password';
         echo '<script type="text/javascript">alert("'.$message.'")</script>'; 
        echo "<script>window.location.href='login.php'</script>";

    }
    ?>

您至少应该阅读如何使用会话?还有一件事不要将密码保存到会话中,这是一种错误的做法您的代码容易受到SQL注入的攻击。也可以使用
mysqli*
PDO
而不是
mysql*
,而不是滚动您自己的身份验证和为粗心者带来的所有问题,为什么不使用许多可用的库中的一个,例如OpenID。您至少应该阅读如何使用会话?还有一件事不要将密码保存到会话中,这是一种不好的做法您的代码容易受到SQL注入的攻击。也可以使用
mysqli*
PDO
而不是
mysql*
而不是滚动您自己的身份验证和所有给不小心者带来的大量问题,为什么不使用众多可用库中的一个,例如OpenID。为什么使用php来回送一个重定向。为什么不直接从php使用header()重定向?javascript的用途是什么?我刚刚给出了一个例子。你可以使用任何你想重定向页面的方法。你到底为什么建议使用一个容易受到SQL注入攻击的解决方案?如果javascript被禁用,那么您的整个系统就会崩溃。使用php来响应重定向。为什么不直接从php使用header()重定向?javascript的用途是什么?我刚刚给出了一个例子。你可以使用任何你想重定向页面的方法。你到底为什么建议使用一个容易受到SQL注入攻击的解决方案?如果禁用javascript,整个系统将崩溃