1

チェックボックス(Cookie)にチェックを入れてログインを押すと、メンバーページにヘッダーが表示されませんでした。インデックスページ(現在のページ)へのヘッダーです。

しかし、チェックボックス(Cookie)にチェックを入れて、もう一度ログを押すと、メンバーページにヘッダーが表示されます

誰かが問題がどこにあるのか私を助けることができますか?

<?PHP
session_start();

function loggedin(){
    if(isset($_SESSION['log_email']) || isset($_COOKIE['log_email'])){
    $loggedin=TRUE;
    return $loggedin;   
    }
}

$log_email="";

if(loggedin()){
header("Location:member.php");}

if(isset($_POST['login'])){

    $log_email=strtolower($_POST['log_email']);
    $log_password=$_POST['log_password'];

    if(isset($_POST['cookie'])){
    $cookie=$_POST['cookie'];
    }


    if($log_email && $log_password){
        $connect=mysql_connect("localhost", "root", "");
        $database=mysql_select_db("phplogin", $connect);

        $SQL=mysql_query("SELECT * FROM users WHERE email='$log_email'");
        $numrows=mysql_num_rows($SQL);

        if($numrows!=0){
            while($result=mysql_fetch_assoc($SQL)){
                $db_email=$result['email'];
                $db_password=$result['password'];
                $db_firstname=$result['firstname'];
                $db_lastname=$result['lastname'];
            }

            if($log_email==$db_email && md5($log_password)==$db_password){      
                    if($cookie){
                        setcookie("log_email", $log_email, time()+7200);
                    }
                    else{
                    $_SESSION['log_email']=$log_email;
                    header("location:member.php");
                    exit();
                    }
            }
            else{echo"wrong username or password";}
        }
        else{echo "Can't find the user";}
    }
    else{echo "Please enter email or password";}
}


?>




<html>
<body>
<div id="container">
<div id="logo"></div>
    <div id="search"></div>
    <div id="top_search"></div>


    <div id="login">
        <form action="index.php" method="POST">
        <table>
            <tr>
                <td><lable id="td_1">Email</lable></td>
                <td><lable id="td_1">Password</lable></td>
            </tr>
            <tr>
                <td><input type="text" name="log_email" value="<?PHP echo $log_email; ?>" maxlength="50"/></td>
                <td><input type="password" name="log_password" maxlength="25" /></td>
                <td><input id="log_btn" type="submit" name="login" value="" /></td>
            </tr>
              <tr>
                <td><div id="td_2"><input type="checkbox" name="cookie"/>Remember me</div></td>
                <td><div id=td_2><a href="forgot_password.php">Forgot your password?</div></a></td>
            </tr>
        </table>
        </form>
    </div>   

</div>
</body>
</html>
4

1 に答える 1

1

で開く前に、このページを<html>といくつかのデータで開始します<?php。ヘッダーは、ブラウザーへの出力がまだない場合にのみ機能するため、これは機能しません (表示するコードの前に、ページで何らかの出力バッファリングがアクティブでない限り)。

ログインを確認するために、 および 他のタグ (改行を含む) を php コードの後に<?php​​移動するだけです。<html>

そして、エラーメッセージを で直接出力する代わりに、echoそれらを var のように保存し、$error = "wrong username or password";後で HTML コードで出力します。<?php echo $error; ?>

    <?PHP
    session_start();

    function loggedin(){
        if(isset($_SESSION['log_email']) || isset($_COOKIE['log_email'])){
        $loggedin=TRUE;
        return $loggedin;   
        }
    }

    $log_email="";
    $error = "";

    if(loggedin()){
    header("Location:member.php");}

    if(isset($_POST['login'])){

        $log_email=strtolower($_POST['log_email']);
        $log_password=$_POST['log_password'];

        if(isset($_POST['cookie'])){
        $cookie=$_POST['cookie'];
        }


        if($log_email && $log_password){
            $connect=mysql_connect("localhost", "root", "");
            $database=mysql_select_db("phplogin", $connect);

            $SQL=mysql_query("SELECT * FROM users WHERE email='$log_email'");
            $numrows=mysql_num_rows($SQL);

            if($numrows!=0){
                while($result=mysql_fetch_assoc($SQL)){
                    $db_email=$result['email'];
                    $db_password=$result['password'];
                    $db_firstname=$result['firstname'];
                    $db_lastname=$result['lastname'];
                }

                if($log_email==$db_email && md5($log_password)==$db_password){      
                        if($cookie){
                            setcookie("log_email", $log_email, time()+7200);
                            header("location:member.php");
                        }
                        else{
                        $_SESSION['log_email']=$log_email;
                        header("location:member.php");
                        exit();
                        }
                }
                else{$error = "wrong username or password";}
            }
            else{$error = "Can't find the user";}
        }
        else{$error = "Please enter email or password";}
    }


    ?>


    <html>
    <link href="CSS/login.css" rel="stylesheet" type="text/css" />

    <body>
    <div id="container">
    <div id="logo"></div>
        <div id="search"></div>
        <div id="top_search"></div>


        <div id="login">



            <?php
            if (strlen($error)>0)
              echo $error;
            ?>


            <form action="index.php" method="POST">
            <table>
                <tr>
                    <td><lable id="td_1">Email</lable></td>
                    <td><lable id="td_1">Password</lable></td>
                </tr>
                <tr>
                    <td><input type="text" name="log_email" value="<?PHP echo $log_email; ?>" maxlength="50"/></td>
                    <td><input type="password" name="log_password" maxlength="25" /></td>
                    <td><input id="log_btn" type="submit" name="login" value="" /></td>
                </tr>
                  <tr>
                    <td><div id="td_2"><input type="checkbox" name="cookie"/>Remember me</div></td>
                    <td><div id=td_2><a href="forgot_password.php">Forgot your password?</div></a></td>
                </tr>
            </table>
            </form>
        </div>   

    </div>
    </body>
    </html>
于 2012-12-06T13:21:20.140 に答える