Я отправляю статус входа = сбой, обратно на мою страницу входа. Вот мой код-
header("location:index.php?login=fail");
но это отправка через URL-адрес,
http://localhost/303/index.php?login=fail
есть ли способ передать значение, не указывая в URL-адресе? И как получить это значение на второй странице?
Вы передаете это значение через запрос GET, поэтому он отображается в URL-адресе. Чтобы передать значение, не показывая его в URL-адресе, вы хотите передать его через запрос POST.
Чтобы сделать это, вы не захотите «вернуть» значение на свою страницу входа. Вместо этого любая форма php обрабатывает процесс регистрации в пользователе после нажатия кнопки «Войти», будет определять, что показывать пользователю.
В PHP post переменные могут быть доступны глобальным объектом $ _POST –
$_POST['username'];
Получил бы значение с именем «username», которое вы передали через POST:
<form method="post" action="checkLogin.php"> Username: <input type="text" name="username" maxlength="25" /> Password: </td><td><input type="password" name="password" /> <input type="submit" name="submit" value="Login"> </form>
Чтобы динамически сохранять и показывать ошибки пользователю, вы можете сохранить их в сеансе, например, иметь файл под названием «errors.php»,
<?php if (isset($_SESSION['errors'])) { echo $_SESSION['errors']; } unset($_SESSION['errors']) ?>
с<?php if (isset($_SESSION['errors'])) { echo $_SESSION['errors']; } unset($_SESSION['errors']) ?>
И в вашем php, который проверяет логин, выполните:
session_start(); $_SESSION['errors'] = "Invalid username or password.";
Затем переадресовывайтесь на свою страницу входа (не передавайте никакие переменные), и в вашей форме всегда есть это поле:
<?php include("errors.php"); ?>
Если у вас не было никаких ошибок, он ничего не отобразит, и страница входа будет выглядеть нормально.
Примечание . В любой форме php, используемой session_start (), она должна быть первой в форме.
Другие способы использования сеансовых или скрытых полей, но вы, что вы делаете, подходят для этой цели. Вы можете позже получить значение следующим образом:
if ($_GET['login'] === 'fail') { // failed....... }
есть несколько способов выполнить вашу задачу