Redirect user who already logged in PHP

Refresh

November 2018

Views

534 time

2

I want to redirect logged in users to home page(member-index.php), I have used the following code to accomplish this, but this doesn't work.

<?php

function redirect() {
header('location:member-index.php');
}
 ?> 
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <?php
  if(isset($_SESSION['SESS_FIRST_NAME'])){
   redirect();
  }
?> 

<form id="loginForm" name="loginForm" method="post" action="login-exec.php">
    <input name="email" type="text" class="textfield" id="login" placeholder="username" />
    <input name="password" type="password" class="textfield" id="password" placeholder="password"/>
    <input type="submit" name="Submit" value="LOGIN" />
</form>
</body>
</html>

session variables at (login-exec.php)

 $qry="SELECT * FROM members WHERE email='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) == 1) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['fullname'];

The other pages with sessions, works perfectly fine, I could get and print the logged in user on another page, But couldn't get session work in login-form page.. Any help would be appreciated!

3 answers

0

Делайте это в верхней части файла вместо

<?php
    session_start();
    if(isset($_SESSION['SESS_FIRST_NAME'])){
        header("location: member-index.php");
    } 
?>
<html>....the rest of your html

Вы можете посмотреть на PHP документы для заголовка , чтобы понять , почему у вас возникли проблемы. Этот пункт , который начинается с «Помни» специально

1

Я добавил этот код в верхней части моей формы входа, и это сработало!

<?php
      //Start session
      session_start();

  //Check whether the session variable SESS_MEMBER_ID is present or not
  if(isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
    header("location: member-index.php");
    exit();
  }

?>
1

Я удивлен , что сообщения об ошибках error_reporting(E_ALL); ini_set('display_errors', 1);не бросить вам предупреждение о выводе до того заголовка.

То есть:

Внимание: session_start (): Не удается отправить ограничитель сессии кэш - заголовки уже отправлены ...

Переместить ваши <?php session_start(); ?>в верхней части вашего кода.

<?php session_start(); ?>

<?php
function redirect() {
header('location:member-index.php');
exit;
}
?>

и добавить exit;после заголовка , чтобы избежать дальнейшего выполнения.

Также убедитесь, что все ваши файлы не содержат метки порядка байтов (BOM), и что нет никакого вывода, прежде чем заголовок. Пространство, HTML, ничто, даже печенье, или что-нибудь еще, что бы объяснить, как выход.

  • Все файлы должны быть сохранены в редакторе кода, в UTF-8 без BOM.