php: перенаправление заголовка не удается перенаправить

#php

#php

Вопрос:

Я работаю над проектом для клиента, но у меня возникли проблемы с перенаправлением на страницу их участника. Я полагаю, что правильно настроил перенаправление, но оно продолжает перенаправлять обратно на ту же страницу без ошибок. Кто-нибудь сможет помочь мне разобраться в этом.

 <?php
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
include ( "_includes/functions.php");
include ( "_includes/header.php");

session_start();

if (isset($_POST["action"])) {
    // validate user account and set proper permissions

    $email= $_POST["email"];
    $password = $_POST["password"];

    // Connecting, selecting database
    $link = mysql_connect(mysql_host, mysql_user, mysql_password)
        or die('Could not connect: ' . mysql_error());
    mysql_select_db(mysql_db) or die('Could not select database');

    // Performing SQL query
    $query = "SELECT * FROM v_clients_members WHERE email='$email'";
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    $num_rows = mysql_num_rows($result);        

    if ($num_rows == 0) {
        $msg = '<span class="txtError">Incorrect email, please try again.</span>';
    } else {
        //get and then set the membership id
        $temp = mysql_fetch_array($result);
        //print_r($temp);
        $memId = $temp['membership_id'];

        //check if person already has logged in before
        $query = "SELECT * FROM v_client_member_login WHERE membership_id='$memId' AND is_active=1";
        $result = mysql_query($query) or die('Query failed 1:' . mysql_error());
        $num_rows = mysql_num_rows($result);

        if($num_rows == 0){
            //if no then insert the password as their new password, and start session
            echo $query = "INSERT INTO v_client_member_login (id,membership_id,email,password,is_active,receive_email) VALUES ('','$memId','$email','$password',1,1)";
            $result = mysql_query($query) or die('Query failed 2:' . mysql_error());

            $_SESSION['is_admin'] = True;
            $_SESSION['member_id'] = $memId;
            ini_set(’session.gc_maxlifetime’, 60*60);
            //header('Location: /members/index.php');
        }else{
            $temp = mysql_fetch_array($result);
            $retEmail = $temp['email'];
            $retPass = $temp['password'];

            if($email != $retEmail || $password != $retPass){
                //email and/or password are the same as the database ones
                $msg = '<span class="txtError">Incorrect login, please try again.</span>';
            }else{
                //just start a session
                $_SESSION['is_admin'] = True;
                $_SESSION['member_id'] = $memId;
                ini_set(’session.gc_maxlifetime’, 60*60);
                //header('Location: /members/index.php');
            }

        }
        if(isset($_SESSION['is_admin'])) header('Location: /members/edit.php');
    }


    // Closing connection
    mysql_close($link);

} else {
    $msg = '<span class="txtNormal">Please login:</span>';
}

?>
<form action="login.php" method="post" style="margin:0px">
<div align="center">
<table cellpadding="0" cellspacing="0" border="0" style="border: 4px solid #0066CC">
    <tr>
        <td width="300" height="25" align="center"><span class="txtLogin"><strong>Member Login</strong></span></td>
    </tr>
    <?php if(isset($msg)){ ?>
    <tr>
        <td width="300" height="50" align="center"><?php echo $msg;?></td>
    </tr>
    <?php } ?>
    <tr>
        <td width="300" align="center" valign="top">
            <table cellpadding="0" cellspacing="0" border="0">
                <tr>
                    <td width="150" align="left"><span class="txtNormal"><strong>Email</strong></span><br>
                    <input type="text" id="email" name="email" style="width:150px"></td>
                </tr>
                <tr>
                    <td width="150" align="left"><span class="txtNormal"><strong>Password</strong></span><br>
                    <input type="password" name="password" style="width:150px"></td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td width="300" height="50" align="center"><input type="submit" name="action" value="Login"></td>
    </tr>   
</table>
</div>
</form>

<? include ( "_includes/footer.php"); ?>
  

Комментарии:

1. «но он продолжает перенаправлять обратно на ту же страницу без ошибок» — Вы проверяете наличие ошибок? Сообщение «включено»? Если нет, добавьте сообщение об ошибке в начало вашего файла (ов) error_reporting(E_ALL); ini_set('display_errors', 1); , и вы вполне можете получить "header already sent...." Если да, то поместить session_start(); прямо под ним <?php

2. У вас также есть фигурные / интеллектуальные кавычки для обоих ini_set(’session.gc_maxlifetime’, 60*60); изменений, которые на ini_set('session.gc_maxlifetime', 60*60); которые сами по себе нарушат ваш код и выдадут ошибку 500 . Также убедитесь, что включены короткие открытые теги, <? include ( "_includes/footer.php"); ?> если нет, сделайте <?php include ( "_includes/footer.php"); ?> — у вас должно быть достаточно для дальнейшей отладки вашего кода.

3. Пожалуйста, не используйте mysql_* функции в новом коде . Они больше не поддерживаются и официально устарели . Видите красное поле ? Вместо этого изучите подготовленные инструкции и используйте PDO или MySQLi эта статья поможет вам решить, что именно. Если вы выбираете PDO, вот хороший учебник .

4. @esqew Да, я знаю. Я сказал клиенту, но они не желают обновляться до текущих стандартов

5. @Fred-ii- Я добавил сообщение об ошибке в начало и переместил начало сеанса в начало, но проблема все еще существует. Я также только что использовал элемент сетевого инспектора Chrome, но он по-прежнему перенаправляет обратно на login.php