-3

パラメータをphp関数に渡そうとしています。しかし、何も起こっていません。つまり、コードは index.php のパラメーターを newPHPClass.php に渡さず、フォームアクションで関数を呼び出すことは可能ですか? ここに私のコードがあります。

index.php

  <?php include '../con_db/connect.php'; ?>
    <?php include '../class/newPHPClass.php'; ?>

<form action="index.php" method="post">
        <label>Username:</label><input type="text" name="username"/><br/>
        <label>Password:</label><input type="text" name="password"/><br/>
        <input type="submit" value="Submit" name="submit"/>
    </form>

    <?php
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $check = new newPHPClass();
        $check->checkLogin($username, $password);
        }
    ?>

そしてクラス

include '../con_db/connect.php';

class newPHPClass {

    public function checkLogin($username, $password) {
        $select = mysql_query('SELECT * FROM users WHERE username = "' . $username . '" AND password = "' . $password . '"');
        if (count($select) > 0) {
            echo "true";
            return true; 
        } else {
            echo "false";
            return false;   
        }
    }
4

2 に答える 2

1

あなたのINSERT構文は正しくありません、

$select = mysql_query("INSERT FROM users (username, password)
                          VALUES ('$username', '$password')"); 

現在のクエリは で脆弱です。SQL Injection時間をかけて以下の記事をお読みください。

PHPでSQLインジェクションを防ぐ最善の方法は?

更新 1

$sql = "SELECT COUNT(*) totalCount 
        FROM users
        WHERE username = '$username' AND password = '$password'");
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if($row["totalCount"] > 0)
{
    echo "true";
    return true; 
} 
else 
{
     echo "false";
     return false;   
}
于 2012-10-09T03:18:26.167 に答える
0

クラスの構文は完全にめちゃくちゃです。まず、ログインを確認するために INSERT を呼び出すのはなぜですか。次に、ここで必要な INSERT であっても INSERT INTO ですが、そうではありません。

$select = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");
if($select->num_rows()==1){
        echo "true";
        return true; 
    } else {
        echo "false";
        return false;   
    }
}

ログイン時に > 0 をチェックしないでください。返される行は 1 行だけです。また、クエリを ' の代わりに " 内に配置すると、クエリを連結せずに変数を読み取ることができます。

于 2012-10-09T03:27:55.443 に答える