У меня есть сценарий входа, который делает это:
$_SESSION['username']=$username; $_SESSION['password']=$password;
Если пользователь вошел в систему успешно. И поэтому я отредактировал страницу регистрации, чтобы сделать это:
<?php function redirect() { header(' URL= index.php'); } ?> <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js"> <head> <link href='icon.jpg' rel='icon' type='image/jpg'/> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-language" content="en" /> <LINK REL=StyleSheet HREF="Mainstyles.css" TYPE="text/css"></link> <Title>Sign up | JMToday</title> </head> <body> <?php if(isset($_SESSION['username'])){ redirect(); } ?>
Но он не перенаправляет пользователя при входе в мою учетную запись, которую я создал. Почему это?
function redirect() { header('location:index.php'); }
header(' URL= index.php');
должно быть
header ( 'Location: index.php' );
Также вы можете поместить инструкцию die()
после вызова header()
чтобы полностью остановить выполнение скрипта.
И вы, вероятно, должны перенести вызов на redirect()
над любым другим выходом, поскольку заголовки HTTP должны быть первыми в ответе. Возможно, это и является причиной вашей проблемы.
Измените функцию redirect()
на:
header('Location: index.php');
И переместите вызов для перенаправления выше всего вывода html:
<?php session_start(); if(isset($_SESSION['username'])) { redirect(); } ?>
Из документов header()
:
Помните, что header () должен быть вызван до отправки любого фактического результата либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP.
Это то, что должно выглядеть в конце, принимая совет @ Jan, чтобы добавить вызов die()
:
<?php function redirect($DoDie = true) { header('Location: index.php'); if ($DoDie) die(); } php session_start(); if(isset($_SESSION['username'])) { redirect(); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js"> <head> <link href='icon.jpg' rel='icon' type='image/jpg'/> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-language" content="en" /> <LINK REL=StyleSheet HREF="Mainstyles.css" TYPE="text/css"></link> <Title>Sign up | JMToday</title> </head> <body> ?>
Это header('Location: index.php');
если вы хотите перенаправить немедленно, то
function redirect(){ header("Location: home.php"); }
если вы хотите перенаправить с некоторой задержкой, тогда
function redirect(){ header("Refresh: 0;url=default.php"); }
увеличьте значение 0 в «Обновить: 0», чтобы ввести большую задержку.
вы можете использовать это для перенаправления после отображения пользователю или уведомлению пользователя.
Обратите внимание, если у вас возникли проблемы при перенаправлении, тогда поместите функцию «exit ()» в конце функции