0

ログインページから保存されたCookieをCookieが見つけるのに問題があります。ログインページのコードは次のとおりです。

<?php 
// Connects to your Database 
include("dbconnect.php");
mysql_select_db("maxgee_close2");
//Checks if there is a login cookie

if(isset($_COOKIE['ID_my_site']))
 //if there is, it logs you in and directes you to the members page
{ 
    $username = $_COOKIE['ID_my_site']; 
    $password = $_COOKIE['Key_my_site'];
    $check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
    while($info = mysql_fetch_array( $check )) 
    {
        if ($password != $info['password'])
        {
        }
        else
        {
            header("Location: members.php");
        }
    }
}
//if the login form is submitted 
if (isset($_POST['submit'])) { // if form has been submitted
 // makes sure they filled it in
    if(!$_POST['username'] | !$_POST['password']) {
        die('You did not fill in a required field.');
    }
    // checks it against the database

    if (!get_magic_quotes_gpc()) {
        $_POST['email'] = addslashes($_POST['email']);
    }
    $check = mysql_query("SELECT * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error());

    //Gives error if user dosen't exist
    $check2 = mysql_num_rows($check);
    if ($check2 == 0) {
        die('That user does not exist in our database. <a href=add.php>Click Here to Register</a>');
    }
    while($info = mysql_fetch_array( $check ))  
    {
        $_POST['password'] = stripslashes($_POST['password']);

        $info['password'] = stripslashes($info['password']);

        $_POST['password'] = md5($_POST['password']);

        //gives error if the password is wrong

        if ($_POST['password'] != $info['password']) {
            die('Incorrect password, please try again.');
        }
        else 
        { 
            // if login is ok then we add a cookie 
           setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */


          //then redirect them to the members area and the line with the error
          header("Location: members.php");
        }
    } 
  }
  else
  { 
    // if they are not logged in
     ?>
     <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
     <h1>Login</h1>
     Username:
    <input type="text" name="username" maxlength="40"> 
    Password:
    <input type="password" name="password" maxlength="50"> 
    <input type="submit" name="submit" value="Login">
    </form> 
<?php 
 } 
 include("topsite.php");
?> 

メンバーページ:これは、ブラウザに保存されているCookieを見つけられなかったページです。このページはCookieを見つけることができません。

<?php 
include("dbconnect.php");
mysql_select_db("maxgee_close2");

//checks cookies to make sure they are logged in 

if(isset($_COOKIE['maxgee.me'])) 

 { 

$username = $_COOKIE['maxgee.me']; 

$password = $_COOKIE['maxgee.me']; 

    $check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error()); 

while($info = mysql_fetch_array( $check ))   

    { 



  //if the cookie has the wrong password, they are taken to the login page 

    if ($password != $info['password']) 

        {           header("Location: login_test.php"); 

        } 



    //otherwise they are shown the admin area    

else 

        { 

         echo "Admin Area<p>"; 

   echo "Your Content<p>"; 

   echo "<a href=logout.php>Logout</a>"; 

        } 

    } 

    } 

    else 



   //if the cookie does not exist, they are taken to the login screen 

  {          

   header("Location: login_test.php"); 

   } 

   ?> 
4

2 に答える 2

0

ログインスクリプトにエラーがあります。

if(!$_POST['username'] | !$_POST['password']) {
    die('You did not fill in a required field.');
}

そしてそれは

if(!$_POST['username'] || !$_POST['password']) {
    die('You did not fill in a required field.');
}

また、ログインページにCookieを保存していません。コメントを探してください

// if login is ok then we add a cookie 

そこにCookieを追加していません。以下はCookieを追加する方法です。

setcookie("TestCookie", $value);

以下は、時間とともにCookieを設定する方法です。

setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */

そして、以下はクッキーを取得する方法です。

echo $_COOKIE["TestCookie"];
于 2012-10-22T05:54:32.623 に答える
0

これはあなたが聞きたいものではないかもしれないと思いますが、このコードを最初からやり直す必要があると思います。手始めに、あなたは$ _POSTに直接書き込んでいますが、これはデバッグに関しては悪い考えです。さらに、パスワードをクリアテキストでデータベースに保存しているだけでなく、Cookieにも保存しているようです。あなたのサイトはハッカーの夢精になるでしょう。この投稿をチェックしてください:

ユーザー認証とパスワードセキュリティのためのPHPのベストプラクティス

于 2012-10-22T05:59:37.540 に答える