1

在此处输入图像描述我正在尝试在 PHP 中使用 if/else 语句。目前我想要做的是,如果$_SESSION['usr'];等于$dir_auth2用户试图访问的当前目录 ( ) 变量。然后他们可以访问我在其中的目录或 index.php。否则,如果$_SESSION['usr'];!=到当前目录,则将它们重定向到主页。目前,当用户键入其他人的目录时,他们无法访问该目录。

<?php
session_name('tzLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
//This if statement below is the problem
if($_SESSION['usr'] == $dir_auth1) {
  //This demo.php is the home page
  header("Location: demo.php");

} else {
  echo "You are logged in as " . $dir_auth1;
} 



$dir = getcwd();
$dir1 = str_replace('/home/pophub/public_html/', '/', $dir);


$dir_auth = getcwd();
$dir_auth1 = str_replace('/home/pophub/public_html/gallry/', '', $dir_auth);
echo $_SESSION['usr'];
echo $dir_auth1;

 $dir_user = getcwd();
 $dir_user1 = str_replace('/home/pophub/public_html/gallry', '', $dir_user);


?>
4

2 回答 2

1

要么你没有发布整个脚本,要么你没有在$dir_auth2任何地方定义。这很糟糕,因为您依赖于它的价值

if($_SESSION['usr'] == $dir_auth2) {

另外,您应该die()在调用后使用header()

header("Location: demo.php");
die();

如何在 PHP 中进行重定向?

于 2016-02-08T20:57:45.313 回答
1

我想这就是你要找的。

您需要$dir_auth1在尝试在 if/else 语句中使用它之前定义变量。

我也认为你想要的是!=而不是==

<?php
session_name('tzLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();

$dir = getcwd();
$dir1 = str_replace('/home/pophub/public_html/', '/', $dir);
$dir_auth = getcwd();
$dir_auth1 = str_replace('/home/pophub/public_html/gallry/', '', $dir_auth);
$dir_user = getcwd();
$dir_user1 = str_replace('/home/pophub/public_html/gallry', '', $dir_user);


if($_SESSION['usr'] != $dir_auth1) {
    header("Location: demo.php");
} else {
    echo "You are logged in as " . $dir_auth1;
} 
?>

您也可以将所有字符串函数组合成一个,如下所示:

$dir_auth1 = str_replace(array("/home/pophub/public_html/","/home/pophub/public_html/gallry/"),"",getcwd());
于 2016-02-08T21:19:30.017 回答