PHP相同会话用户登录


PHP same Session user login

我搜索过,但找不到适合我的解决方案。

我有login.php文件,在我的案例中,它将用户重定向到另一个页面theme.php?id=".$row['log_name']."

<?php
include ('conn.php');
//Uzivatelsky vstup
$log_meno = mysqli_real_escape_string ($Conn, $_POST['login_name']);
$cmp_heslo = sha1($_POST['login_password']);  
$sql = "SELECT id, cmp_heslo, log_meno FROM firmy WHERE log_meno='$log_meno'";
$result = mysqli_query($Conn, $sql);
if (mysqli_num_rows($result) > 0) {    
while($row=mysqli_fetch_assoc($result)) {
        if ($cmp_heslo == $row[cmp_heslo])
{
    session_start();
    $_SESSION['logged'] = 'yes';
            echo "<script language='javascript'>window.location='comp_page/theme.php?id=".$row['log_name']."';</script>";                
}
else
{
    echo "<script language='javascript'>window.location='bad_login.php';</script>";
}     
    }
} else {
    echo "0 results";
}  
mysqli_close($Conn);
 ?>

theme.php

<?php
session_start();
if($_SESSION['logged'] != 'yes' )
    die("You have to sign in first!");
?>

在MySQL中,我有两个用户

  • 通过kukikuki

  • 通过cukicuki

我的问题是,当我在地址栏中以kuki身份登录时:

http://localhost/comp_page/theme.php?id=kuki

但当我在地址栏kukicuki中重写时,我需要更改为拒绝访问,因为现在只有地址栏更改了,但页面相同。我是PHP的新手。

除了在会话中有这个

$_SESSION['logged']='yes';

我建议你还需要添加这样的东西,

$_SESSION['id']=$row['log_name'];

以及在您的theme.php 中

session_start();
if($_SESSION['logged'] != 'yes' ) {
    die("You have to sign in first!");
} else {
 if ($_SESSION['id'] == $_GET['id']) {
  // do somthing
 } else {
  echo "Access Denied!";
 }
}

具有此URL

http://localhost/comp_page/theme.php?id=kuki

意味着您正在使用get方法将id发送到服务器。该$_GET['id']捕获该数据并且将具有来自URI theme.php?id=kukitheme.php?id=cuki的值kukicuki

此条件if ($_SESSION['id'] == $_GET['id'])将确定id的值是否与会话中的用户存储相同。