передавать значение со страницы на другую в PHP

Я отправляю статус входа = сбой, обратно на мою страницу входа. Вот мой код-

header("location:index.php?login=fail"); 

но это отправка через URL-адрес,

 http://localhost/303/index.php?login=fail 

есть ли способ передать значение, не указывая в URL-адресе? И как получить это значение на второй странице?

Related of "передавать значение со страницы на другую в PHP"

Вы передаете это значение через запрос 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....... } 

есть несколько способов выполнить вашу задачу

  • Современный способ AJAX. Форма отправляется с использованием AJAX. Не перезагружайте страницу, пока пароль не будет прав. Ошибки показаны на месте. Requres javascript.
  • Post / Redirect / Получить шаблон. Форма отправляется с использованием регулярного POST. Нет переадресации на ошибки, показанные на месте.
  • сеансов, когда мы храним ошибку в сеансе