0

これが何らかの理由で私のコードです。パスワードが間違っていることを常に返しています。ブラケットをどこかに忘れてしまったのかどうかもわかりません。また、現在この_post機能を使用しているため、より安全にするにはどうすればよいでしょうか。

<?php
  include 'config.php';

  session_start();
  session_destroy();
  session_start();

  $UserName = $_POST['UserName'];
  $PassWord = $_POST['PassWord'];

  if ($UserName&&$PassWord)
  {
    mysql_select_db("SegmentMath") or die ("Couldn't find database sorry.");   
    $query = mysql_query("SELECT * FROM Users WHERE UserName='$UserName'");    
    $numrows = mysql_num_rows($query);

    if ($numrows!=0)
    {
      // code to login
      while ($row = mysql_fetch_assoc($query))
      {
        $dbUserName = $row['UserName'];
        $dbPassWord = $row['PassWord'];
      }

      //check to see if they match!
      if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
      {
        $_SESSION['UserName']=$dbUsername;
        $_SESSION['PassWord']=$dbPassWord;

        echo "<p>Finished Software</p>";
      }
      else
      {
        echo "Incorrect Password";
      }
    }
    else die("Sorry username not found!");
  }
  else die("Please Enter A Valid Username And Password!");
?>

だから私は何かばかげた間違ったことをしているとほぼ確信しており、それは私をほぼ30分間困惑させました. このファイルはlogin.php基本的に、ユーザーがページにユーザー名とパスワードを入力すると、login.htmlそのデータがこのページにプッシュされますLogin.Php

ログインが正しく、データベースにある場合でも、パスワードが間違っていると表示される理由がわかりません。

4

7 に答える 7

2

これを使用する方が良いと思います。つまり、検索するクエリを作成しusernamepassword

$login = mysql_query("SELECT * FROM users WHERE ID='". $UserName ."' AND PASSWORD='". md5($PassWord) ."');
$row=mysql_fetch_array($login); // fetch row
if($row!=null)   // if found row 
{
$_SESSION['UserName'] = $row['UserName']; // store in session
$_SESSION['PassWord'] = $row['PassWord']; 
} %>

それ以外の

if (($UserName==$dbUsername)&&($PassWord==$dbPassWord))
{

$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;

echo "<p>Finished Software</p>";

}
于 2012-12-20T05:20:10.653 に答える
1

コードにタイプミスがあります。PHP の変数は大文字と小文字が区別されます...

19.     while ($row = mysql_fetch_assoc($query))
20.           {
21.             $dbUserName = $row['UserName'];
22.             $dbPassWord = $row['PassWord'];
23.           }
24.     
25.           //check to see if they match!
26.           if ($UserName==$dbUsername&&$PassWord==$dbPassWord)

21行目の変数は26行目の変数と一致しません。

$dbUserNameと同じではありません$dbUsername

于 2012-12-20T05:30:18.157 に答える
0
if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
      {
        $_SESSION['UserName']=$dbUsername;
        $_SESSION['PassWord']=$dbPassWord;

        echo "<p>Finished Software</p>";
      }
      else
      {
        echo "Incorrect Password";
      }

1)。それはelse状態になります..それで、これらの4つの$変数を私にエコーできますか?

2).str_replaceを使用して$_postからスペースを削除します

于 2012-12-20T05:34:15.037 に答える
0

間違った方法でコーディングしていると思います。セッション開始後にセッション破棄を入れるべきではありません。まず、session_start(); でセッションを開始しましょう。

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM table_name WHERE username = '$username'";
$result = mysql_query($query);
$count = mysql_num_rows($query);
$row = mysql_fetch_assoc($result);

if($count == 0)
{
//if there is no result
}
$dbpassword = $row['password'];
if($dbpassword == $password)
{
//put some session here
}
else
{
//if the password is not match
}

これが役立つことを願っています

于 2012-12-20T14:07:38.963 に答える
0

パスワードが保存されるときに、おそらく何らかの暗号化を使用しています。たとえば、使用している場合md5()(例として、md5 はパスワードに最適ではありません)、次の方法で確認する必要があります。

if ($UserName == $dbUsername && md5($PassWord) == $dbPassWord)
{
于 2012-12-20T05:18:47.170 に答える
0
if ($UserName==$dbUsername <= capitalize $dbUserName)
{
    //YOUR LOGIC
}
于 2012-12-20T05:30:42.103 に答える
-1

最初にデータベースに接続する必要があります。mysql_connect()を使用する

また、この機能は廃止されており、mysqli または PDO の使用が推奨されていることにも注意してください。上記のリンクにこれらへのリンクがあります。

于 2012-12-20T05:18:28.047 に答える