2016-05-20 22 views
-1

私は私はいくつかのエラーを得た真の資格情報を使用して接続しよう「ユーザー名とパスワードが見つからない」無効なフォーム

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Login Page PHP Script</title> 
    <style type="text/css"> 
    body 
    { 
     font-family:Arial, Helvetica, sans-serif; 
     font-size:14px; 
    } 
    label 
    { 
     font-weight:bold; 
     width:100px; 
     font-size:14px; 
    } 
    .box 
    { 
     border:1px solid #006D9C; 
     margin-left:10px; 
     width:60%; 
    } 
    .submit{ 
     border:1px solid #006D9C; 
     background-color:#006D9C; 
     color:#FFFFFF; 
     float:right; 
     padding:2px; 
    } 
    </style> 
</head> 
<body bgcolor="#FFFFFF"> 

    <div align="center"> 
     <div class="tLink"><strong>Login Detail:</strong></div><br /> 
     <div style="width:300px; border: solid 1px #006D9C; " align="left"> 
      <?php 
       if(isset($errMsg)){ 
        echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>'; 
       } 
      ?> 
      <div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Login</b></div> 
      <div style="margin:30px"> 
       <form action="" method="post"> 
        <label>Username :</label><input type="text" name="username" class="box"/><br /><br /> 
        <label>Password :</label><input type="password" name="password" class="box" /><br/><br /> 
        <input type="submit" name='submit' value="Submit" class='submit'/><br /> 
       </form> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

PHP

<?php 
session_start(); 

//DB configuration Constants 
define('_HOST_NAME_', '127.0.0.1'); 
define('_USER_NAME_', 'root'); 
define('_DB_PASSWORD', ''); 
define('_DATABASE_NAME_', 'ads_database'); 

//PDO Database Connection 
try { 
    $databaseConnection = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD); 
    $databaseConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 

if(isset($_POST['submit'])){ 
    $errMsg = ''; 
    //username and password sent from Form 
    $username = trim($_POST['username']); 
    $password = trim($_POST['password']); 

    if($username == '') 
     $errMsg .= 'You must enter your Username<br>'; 

    if($password == '') 
     $errMsg .= 'You must enter your Password<br>'; 


    if($errMsg == ''){ 
     $records = $databaseConnection->prepare('SELECT nom_user, pass_user FROM user WHERE nom_user = :username'); 
     $records->bindParam(':username', $username); 
     $records->execute(); 
     $results = $records->fetch(PDO::FETCH_ASSOC); 
     if(count($results) > 0 && password_verify($password, $results['pass_user'])){ 
      $_SESSION['username'] = $results['username']; 
      header('location:dashboard.php'); 
      exit; 
     }else{ 
      $errMsg .= 'Username and Password are not found<br>'; 
     } 
    } 
} 

?> 
+0

あなたのクエリが失敗し、おそらくいくつかの理由のために。しかし、私のSpideyの感覚はパスワードの列の長さが短すぎると言いますが、<60 {問題}ならば。 Spideyはまた、私のコメントを噛んでいる誰かを感知している。 *それを待ってください... * –

+0

'print_r($ results)' –

+0

私は問題を区別できません。それがPDO接続の質問かログイン自体の場合。 PDO接続の場合は 'define( '_ HOST_NAME_'、 '127.0.0.1');'を 'define( '_ HOST_NAME_'、 'localhost');に変更してみてください。だからここに入るのを恥ずかしくないでください。私はずっとずっと前に立つつもりはない。魔法の答えは現れません。しかし、再び。太陽はどこかに降り始めるので、それはちょうど私が推測する時間の問題です。 –

答えて

1

編集:あなたが述べたようにコメントでは、列の長さは255です。したがって、元々はパスワードを保存していた方法である可能性があり、その方法は不明です。

  • 私の脚注に相談してください。

私はあなたのコードは、私はあなたがコメントに応答していない見て、私の答えを投稿することを決めた理由であるチェックアウトするので、パスワード欄には、長さが短すぎることを次の確信にしています。

実際にそうで、パスワード列の長さが60未満の場合は、それを変更する必要があります。 60または255のいずれかを選択することをお勧めします。

  • これはよく見落とされるものです。

あなたは後に新しいハッシュおよびクエリを作成し、列の長さを変更し、最初の存在ハッシュを削除する必要があります。

参考:


脚注:

また、ハッシュを保存/作成するために必要だろう。プレーンテキストのみを保存していた場合は、それが問題です。

あなたのPHPバージョンは、パスワード/ハッシュ作成中にPHPを使用しようとすると、password_hash()機能もサポートする必要があります。

互換性パックを使用する必要があります。

関連する問題