сессия — PHP, если / еще не работает должным образом

введите описание изображения здесьЯ пытаюсь использовать оператор if / else в PHP. В настоящее время я пытаюсь сделать, если $_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);?>

1

Решение

Либо вы не опубликовали весь сценарий, либо не определили $dir_auth2 в любом месте. Что плохо, так как вы полагаетесь на его ценность в

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

Кроме того, вы должны использовать die() после звонка header()

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

Как сделать редирект в PHP?

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());
1

По вопросам рекламы [email protected]