1

そこで、PHP & MySQL の練習用の Web サイトを構築していて、メンバーのシステムをセットアップしようとしています。ユーザーがログイン ページに移動し、登録済みのユーザー名とパスワード (登録プロセスで機能します) を使用してログインすると、ページが更新されて「メンバー」エリアに移動します。これが私のコードです:

<?php  
if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])) {   
    echo "<h1>Member Area</h1>"; 
    echo "<p>Thanks for logging in! You are <b>" . $_SESSION['Username'] . "</b> and your email address is <b>" . $_SESSION['EmailAddress'] . "</b>.</p>";    

} elseif(!empty($_POST['username']) && !empty($_POST['password'])) {  
    $username = mysql_real_escape_string($_POST['username']);  
    $password = md5(md5(mysql_real_escape_string($_POST['password'])));  

    $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'");  

    if(mysql_num_rows($checklogin) == 1) {  
        $row = mysql_fetch_array($checklogin);  
        $email = $row['EmailAddress'];  

        $_SESSION['Username'] = $username;  
        $_SESSION['EmailAddress'] = $email;  
        $_SESSION['LoggedIn'] = 1;  

        echo "<center>";
        echo "<h1>Success</h1>";  
        echo "<p>We are now redirecting you to the member area.</p>";  
        echo "<meta http-equiv='refresh' content='2;login.php' />";
        echo "</center>";  
    } else {  
        echo "<h1>Error</h1>";  
        echo "<p>Sorry, your account could not be found. Please <a href=\"login.php\">click here to try again</a>.</p>";  
    }  
} else {  
    echo "<center>";
    echo "<h1>Login</h1>";
    echo "<p>Thanks for visiting! Please either login below, or <a href=\"register.php\">click here to register</a>.</p>";
    echo "<form method=\"post\" action=\"login.php\" name=\"loginform\" id=\"loginform\">";
    echo "<label for=\"username\">Username:</label><input type=\"text\" name=\"username\" id=\"username\" /><br />";
    echo "<label for=\"password\">Password:</label><input type=\"password\" name=\"password\" id=\"password\" /><br /> "; 
    echo "<input type=\"submit\" name=\"login\" id=\"login\" value=\"Login\" />";
    echo "</form>";
    echo "</center>";
}  
?>

したがって、基本的に、ページが読み込まれ、ユーザーがすでにログインしているかどうかがチェックされ、ログインしている場合は、メンバー エリアが読み込まれます。そうでない場合は、ユーザーがログインしようとしているかどうかを確認し、そうでない場合はログイン フォームを表示します。私の問題は、私または他の誰かがログインしようとするたびにページがリロードされますが、「メンバー」エリアに移動する代わりに、ログインフォームに戻ることです...また、ドキュメントには次の行があります: <?php include "base.php"; ?> base.php ファイルには がありますが、session_start()それは関係ないのでしょうか? 助言がありますか?ありがとう。

編集: ユーザーを登録するコードは、別の php ファイルにあります。繰り返しになりますが、次の base.php ファイルがsession_start();ドキュメントの先頭に含まれています
。 _POST['ユーザー名']);
$password = md5(md5(mysql_real_escape_string($_POST['password'])));
$email = mysql_real_escape_string($_POST['email']);

    $checkusername = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");  

    if(mysql_num_rows($checkusername) == 1) {  
        echo "<h1>Error</h1>";  
        echo "<p>Sorry, that username is taken. Please go back and try again.</p>";  
     } else {  
        $registerquery = mysql_query("INSERT INTO users (Username, Password, EmailAddress) VALUES('".$username."', '".$password."', '".$email."')");  
        if($registerquery) {  
            echo "<h1>Success</h1>";  
            echo "<p>Your account was successfully created. Please <a href=\"login.php\">click here to login</a>.</p>";  
        } else {  
            echo "<h1>Error</h1>";  
            echo "<p>Sorry, your registration failed. Please go back and try again.</p>";      
        }         
     }  
} else {  

   echo "<h1>Register</h1>";

   echo "<p>Please enter your details below to register.</p> "; 

    echo "<form method=\"post\" action=\"register.php\" name=\"registerform\" id=\"registerform\">";
    echo "    <label for=\"username\">Username:</label><input type=\"text\" name=\"username\" id=\"username\" /><br /> "; 
    echo "    <label for=\"password\">Password:</label><input type=\"password\" name=\"password\" id=\"password\" /><br />  ";
    echo "    <label for=\"email\">Email Address:</label><input type=\"text\" name=\"email\" id=\"email\" /><br />";  
    echo "    <input type=\"submit\" name=\"register\" id=\"register\" value=\"Register\" />"; 
    echo "</form>";   
}  
?>
4

4 に答える 4

3

あなたは行方不明のようです

session_start()

そのphpスクリプトの先頭に

于 2013-06-21T22:09:37.167 に答える