#javascript #php
#javascript #php
Вопрос:
Я пытаюсь проверить, не вошел ли пользователь в cart.php , если их нет — перенаправьте их на login.php .
Это не работает, поэтому я попытался поместить это в оператор elseif. Если они вошли в систему и находятся на странице корзины, перенаправьте их на страницу корзины, а если они не перенаправлены на страницу входа.
Он работает в том смысле, что он перенаправляет, но если я войду в систему, он все равно перенаправляет на login.php .
Также я не уверен, почему ни одно из предупреждений JS не работает.
if (isset($_SESSION['username'])){
header("Location: http://localhost/techiteasy/cart.php");
}
else if (!isset($_SESSION['username'])){
header("Location: http://localhost/techiteasy/login.php");
echo '<script language="javascript">';
echo 'alert("Please Login/Register")';
echo '</script>';
}
Комментарии:
1. Вы не можете получить вывод после использования
header()
для перенаправления2. Также не кажется, что
else if
достаточно простогоelse
3. Насколько я вижу, вы перенаправляете на
login.php
во втором случае. Что в этом плохого?4. После выполнения a
header('Location: ...')
вы отправляете браузеру команду перейти на другую страницу. Поэтому все, что вы повторяете после этого, просто исчезнет в эфире, поскольку текущей страницы больше нет в браузере5. Я попытался упростить код, который не работает. Чтобы иметь только один заголовок — — — if (!isset($_SESSION[‘username’])){ заголовок(«Местоположение: localhost/techiteasy/login.php » ); }
Ответ №1:
После перенаправления вы не можете добавить больше кода, новая страница будет вызвана, и будет запущен скрипт новой страницы.
Вам нужно что-то перенести со страницы на другую.
Обычно я использую файл cookie с коротким временем (2-5 секунд), новая страница будет вызывать проверку, установлен ли файл cookie, если он показывает предупреждение и отменяет установку файла cookie.
Здесь в коде, который вы можете видеть, я ввел только оператор if (без else или else if), потому что, когда скрипт запускает местоположение заголовка, следующий код не запускается, и загружается новая страница.
if (!isset($_SESSION['username'])){
setcookie('notlogged', true, time() 3;)
header("Location: http://localhost/techiteasy/login.php");
}
header("Location: http://localhost/techiteasy/cart.php");
В login.php
if (isset($_COOKIE['notlogged']) amp;amp; $_COOKIE['notlogged'] == true){
echo '<script language="javascript">';
echo 'alert("Please Login/Register")';
echo '</script>';
unset($_COOKIE['notlogged']);
}
Попробуйте это 😉
Вы также можете не устанавливать истекшее время, это просто для того, чтобы избежать ошибок, но каждый раз напоминать о сбросе, в противном случае пользователь только регистрируется, не переходя из корзины, будет просматривать предупреждение.
Ответ №2:
Вы можете просто использовать, как показано ниже. Не нужно снова проверять отрицательное условие. Просто используйте if-else .
if (isset($_SESSION['username'])){
header("Location: http://localhost/techiteasy/cart.php");
}
else{
header("Location: http://localhost/techiteasy/login.php");
echo '<script language="javascript">';
echo 'alert("Please Login/Register")';
echo '</script>';
}
Ответ №3:
Попробуйте это на PHP5
if(isset($_SESSION['username'])){ header("Location: http://localhost/techiteasy/cart.php");
}
else{
if(!isset($_SESSION['username'])){
echo '<script>alert("Login with vaild user and pass");</script>';
header("Location: http://localhost/techiteasy/login.php");
exit;
}}
Для PHP7
if(isset($_SESSION['username'])){ header("Location: http://localhost/techiteasy/cart.php, true, 301");
}
else{
if(!isset($_SESSION['username'])){
echo '<script>alert("Login with vaild user and pass");</script>';
header("Location: http://localhost/techiteasy/login.php, true, 301");
exit;
}}