Как перенаправить, если пользователь уже вошел в систему

У меня есть сценарий входа, который делает это:

$_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(); } ?> 

Но он не перенаправляет пользователя при входе в мою учетную запись, которую я создал. Почему это?

Solutions Collecting From Web of "Как перенаправить, если пользователь уже вошел в систему"

 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 ()» в конце функции