我搜索过,但找不到适合我的解决方案。
我有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中,我有两个用户
通过
kuki
的kuki
通过
cuki
的cuki
我的问题是,当我在地址栏中以kuki身份登录时:
http://localhost/comp_page/theme.php?id=kuki
但当我在地址栏kuki
到cuki
中重写时,我需要更改为拒绝访问,因为现在只有地址栏更改了,但页面相同。我是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=kuki
或theme.php?id=cuki
的值kuki
或cuki
。
此条件if ($_SESSION['id'] == $_GET['id'])
将确定id的值是否与会话中的用户存储相同。