2

現在、管理パネルが必要なサイトを実行していますが、php の問題があります。ユーザー名とパスワードの値を正しく挿入すると、行数が取得されないようです。phpコードは次のとおりです。

admin_login.php

<?php 
session_start();
if (isset($_SESSION["manager"])) {
    header("location:index.php"); 
    exit();
}
?>
<?php 
if (isset($_POST["username"]) && isset($_POST["password"])) {
    $manager = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]); 
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]); 
    // Connect to the MySQL database  
    include "../storescripts/connect_to_mysql.php"; 
    $sql = mysql_query("SELECT id FROM admin WHERE username='$manager' AND password='$password' LIMIT 1"); // query the person
    $existCount = mysql_num_rows($sql); // count the row nums
    if ($existCount == 1) { // evaluate the count
         while($row = mysql_fetch_array($sql)){ 
             $id = $row["id"];
         }
         $_SESSION["id"] = $id;
         $_SESSION["manager"] = $manager;
         $_SESSION["password"] = $password;
         header("location: index.php");
         exit();
    } else {
        echo 'That information is incorrect, try again <a href="index.php">Click Here</a>';
        exit();
    }
}

SQLデータベースへの接続は正常に機能し、エコーを行って機能することを確認しました

index.php php コードは次のとおりです。

<?php 
session_start();
if (!isset($_SESSION["manager"])) {
    header("location: admin_login.php"); 
    exit();
}

?>
<?php 
$managerID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]); 
$manager = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["manager"]); 
$password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]); 
include "../storescripts/connect_to_mysql.php"; 
$sql = mysql_query("SELECT * FROM admin WHERE id='$managerID' AND username='$manager' AND password='$password' LIMIT 1");
$existCount = mysql_num_rows($sql);
 if(!$existCount == 0){
     echo "Your login session data is not on record in the database.";
     exit();
}
?>

私はそれが $existCount のエラーであり、カウントを取得していないと思いますか?

乾杯

4

2 に答える 2

0

あなたの問題はおそらく最後の if ステートメントにあります。変化する:

if(!$existCount == 0){
     echo "Your login session data is not on record in the database.";
     exit();
}

に:

if($existCount == 0){
     echo "Your login session data is not on record in the database.";
     exit();
}

が欠落していることに注意してください!。これは、望ましくない方法で式を否定します。

于 2013-07-10T23:05:55.550 に答える
0

あなたはdevelopphpからコードを取っていると思います。上記のコードを使用すると、パスワードに英数字以外の文字が含まれている場合、フィルターによってそれらの文字が削除され、データベースとの一致が失われ、$existCount がゼロとして返される可能性があります。

于 2014-08-16T04:54:09.833 に答える