2012-01-02 14 views
0

私のPHPログインスクリプトでは、私はdb(データベース)からパスワードを選択するためにmd5()関数を使用しましたが、動作しません。 iT'S SHOW "Password is not !!!!!!"私はdb WITH md5()関数にパスワードを挿入していますが。スクリプトの問題は何ですか?それは100%安全なスクリプトですか? =assignment operatordocs、ないcomparison operatordocsあるのでphpログインスクリプトの問題

<?php 
include("include/session.php"); 
include("header.php"); 
include("db.php"); 
?><head> 
<link href="content/admincss/styleadmin.css" rel="stylesheet" type="text/css" /> 
</head> 

<div id="container"> 
<br /> 
<?php 
if ($_POST['admin'] = "Submit") { 
    $uname = mysql_real_escape_string(trim($_POST['uname_ad'])); 
    $pass = md5(mysql_real_escape_string(trim($_POST['pass']))); 

    $u_ch = mysql_query("SELECT uname_ad FROM admin WHERE uname_ad = '$uname'") or die(mysql_error()); 
    $u_ch_rel = mysql_num_rows($u_ch); 

    $p_ch = mysql_query("SELECT pass FROM admin WHERE pass = '$pass'") or die(mysql_error()); 
    $p_ch_rel = mysql_num_rows($p_ch); 

    if (isset($uname, $pass)) { 
     $err = array(); 

     if (empty($uname) && empty($pass)) 
      $err[] = 'All field required.'; 

     else { 
      if (empty($uname)) 
       $err[] = 'Please write your username'; 

      else { 
       if ($u_ch_rel !== 1) 
        $err[] = 'Username is not correct'; 
      } 

      if (empty($pass)) 
       $err[] = 'Please write your password'; 

      else { 
       if ($p_ch_rel !== 1) 
        $err[] = 'Password is not correct'; 
      } 
     } 

     if (!empty($err)) { 
      foreach ($err as $er) { 
       echo "<font color=red>$er</font><br>"; 
      } 
     } 

     else { 
      if ($u_ch_rel = 1 && $p_ch_rel = 1) { 
       include "include/newsession.php"; //user session 

       $tm = date("Y-m-d H:i:s"); 
       $ip = $_SERVER['REMOTE_ADDR']; 
       echo $ip; 
       $rt = mysql_query("insert into plus_login(id,uname,ip,tm) 
values('$_SESSION[id]','$_SESSION[uname_ad]','$ip','$tm')"); 
       echo mysql_error(); 

       print "<script>"; 
       print " self.location='content/index.php';"; 
       print "</script>"; 
      } 
     } 
    } 
} 
?> 
</div> 

答えて

5

ラインは以下常にTRUEと評価されます:

if($_POST['admin'] = "Submit")

それは次のようになります。また

if($_POST['admin'] == "Submit")またはif($_POST['admin'] === "Submit")

おそらくそのようなことはありません"100%安全"として...悪意のある人の難易度を変えるだけです。あなたはこのようなあなたのMD5コールに「塩」を追加することにより、セキュリティを向上させることができます:パスワードを保存するためのより良い方法として浮上している

$pass = md5('secret_sauce' . mysql_real_escape_string(trim($_POST['pass']))); 

sha1()docsけど。

+0

よく、私のコードを変更しましたが、まだパスワードが正しくありません。 –

+0

if($ _SERVER ['REQUEST_METHOD'] == 'POST')... 'です。特定のフォームフィールドの存在に応じて、悪い方法があります。 –

+0

あるいは単に 'isset()'チェックを追加してください... – rdlowrey