2012-02-24 9 views
-1

電子メールとパスワードがフォームから送信され、クエリが実行されたアクションページに渡されるスクリプトを作成しようとしています。私が何を入力しても、いつも「あなたはログアウトしました」という返事を誰にも見せることができますか?誰もこのMySQLユーザログインでエラーを見ることができますか?

<div id="signinform"> 

    <fieldset> 

     <legend>Please enter your email address and password</legend> 

     <form action="account.php" method="POST"> 
       <label>Email :</label> 
       <input type="text" name="email" /><br /> 
       <label>Password :</label> 
       <input type="text" name="password" /><br/> 
       <input class="signbutt" type="submit" value="Log in"/><br /> 

     </form> 

    </fieldset> 

</div> 

アクションページ:

<?php 

session_start(); 


$con = mysql_connect("localhost","******","******"); 
    mysql_select_db("deucalio_photostore", $con); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 


if(isset($_POST['email']) && isset($_POST['password'])) 
{ 
    $username = $_POST['email']; 
    $password = $_POST['password']; 

    //used because if md5 is used in password itself md5 has is created for blank as well so user can get away with not entering password 


    if(!empty($username) && !empty($password)) 
    { 

     $query = "SELECT userID FROM users WHERE email = '$username' AND password = '$password' "; 

     if($query_run = mysql_query($con, $query, array())) 
     { 
      $query_num_rows = mysql_num_rows($query_run); 

      if($query_num_rows == 0) 
      { 
       echo 'Invalid username/password combination'; 
      } 

      else if($query_num_rows == 1) 
      { 
       while($row =  mysql_fetch_array($query_run,mysql_fetch_assoc)) 
       { 

        $user_name = $row['email']; 
        $userid = $row['userID']; 

        $_SESSION['userID'] = $userid; 
        $_SESSION['email'] = $user_name; 

       } 

      } 
     } 

    } 
    else 
    { 
     echo 'You must supply a username and password'; 
    } 
} 
?> 


    <!doctype html> 
    <html lang="en"> 
     <head> 
      <meta charset="utf-8"> 
      <title>My account</title> 
      <meta name="description" content="Easy HTML5 Template"> 
      <meta name="author" content=""> 
      <link rel="stylesheet" type="text/css" href="styles.css" /> 
      <script type="text/javascript" src="script.js"></script> 

     </head> 

    <body class="home"> 

      <div id="header"> <!-- THIS IS THE TOP DIV THAT CONTAINS THE LOGIN, SITE LOGO AND BASKET CONTAINER --> 

      </div> <!-- END HEADER CONTAINER --> 

      <div id="main"> 
         <div id="content"> 
         <?php 
         if (isset($_SESSION['userID'])){ 

          echo'<p > Hello ' . $user_name. '!</p>' ;} 

          else{ 

            echo 'You have logged out';} 
         ?> 

        </div> <!-- END CONTENT CONTAINER --> 


      </div> <!-- END MAIN CONTAINER --> 


      <div id="footer" > 


      </div> <!-- END FOOTER CONTAINER --> 

     </body>  

    </html> 
    </html> 

は、私が2時間これに取り組んできました、私はそれがMySQLの構文かもしれないと思います。

ありがとうございました。

+1

私は '$ query_run = mysql_query($ con、$ query、array())'の呼び出しに慣れていません。あなたはそれらの議論について確かですか? http://php.net/manual/en/function.mysql-query.phpにはいくつかの異なる引数があります。 – Basti

+0

私はこれをSQLSRV構文を使用してコードから変換していますが、私は良い仕事をしているようには見えません! – deucalion0

+1

あなたのコメントはここにあります://パスワード自体にmd5が使用されているために使用されますmd5 hasは空白のために作成されますので、パスワードを入力しなくてもかまいません はデータベースにプレーンテキストのパスワードこれは災害のためにあなたを設定しています。パスワードがあなたの要件を満たしていることを確認するために他のチェックを行うべきです(空白でないなど)。パスワードをハッシュしないことを意味しません。 –

答えて

1

$ useridをエコーし​​ましたか。何かを出力するかどうかを確認してください。そうでないと、あなたはいつも「あなたがログアウトしました」、

+0

私は$ useridと$ user_nameをエコーし​​ようとしましたが、何もエコーしていないので、変数には値がありません。私はそれが原因で何が起こっているのか分かりません。 – deucalion0

+0

これを試してみてください。 '$ variable。' 'の代わりに' $ '。 mysqlクエリにphp変数を代入するときは、あなたの変数に何かが含まれているかどうかを確認してください。もしあなたがそれらを保持することを期待している値を表示したら、SQLクエリに問題があります。 – magicianiam

+0

ログインに成功した場合にのみこれらの変数を設定し、投稿変数をエコーし​​てその内容を確認してみてください。 –

0

$_SESSIONを使用する前に、ご要望に応じてsession_start()に電話する必要があります。私はあなたの "行動ページ"のどこにもそれを見ません。

+0

私の質問で間違いを犯しました。編集を参照してください。タブインする際に混乱しました。ありがとうございます。 – deucalion0

+0

おそらく彼はsession.autostartを設定していますphp.ini? –

関連する問題