0

ユーザーがログインしたら、jQuery を使用してコンテンツ div を空にし、別のページをその div にロードしたいと考えています。

ボタンがクリックされると機能する通常の方法を使用します。

$(document).ready(function() {
    $("#login").click(function() {
        $("#content").empty();
        $("#content").load("DIS-loginform.php");
    });
});

コンテンツ div に別のページをロードするために何かをクリックしたくありません。

これはメイン ページのサイドバーにあるログイン スクリプトで、ログインするとユーザーのユーザー名が出力されます。

<?php  //LOGIN PHP SCRIPT
    $login = $_POST['username'];
    $loginpass =$_POST['password'];
    if((isset($login)) || (isset($loginpass))){
        include("DIS-connect.php");
        $query = "SELECT * FROM user WHERE username='$login' and password=('$loginpass')";
        $result = mysql_query($query) or die($query."<br/><br/>".mysql_error());
        $count = mysql_num_rows($result);
        //echo $count;
        if($count >0){
            echo "Logged in as <button id='user' value='$login'>$login</button>";
            $_SESSION['valid_user'] = $login;
        }
        else{
            echo "<p>sorry login failed</p>";
        }
    }
// LOGIN PHP END ?> `

これは、ログイン オプションが選択されたときにメイン ページのコンテンツ div に読み込まれる単純なログイン フォームです。

<div id="login">
    <form name="login" action="DIS-home.php" method="POST" 
                onSubmit="return confirm('Continue with Login?');">
        <table border="1">
            <tr>
                <th>Username</th><td><input name="username" type="text" id="username" /></td>
            </tr>
    <tr>
        <th>Password</th><td><input name="password" type="password" id="password" /></td>
    </tr>
        </table>
        <input type="submit" name="Submit" value="Login" id="loginbutton" />
    </form>
</div>
4

1 に答える 1

0

何もクリックされたくない場合は、単に使用してください

$(document).ready(function() {
    $("#content").empty();
    $("#content").load("DIS-loginform.php");
});

それ以外の

$(document).ready(function() {
    $("#login").click(function() {
        $("#content").empty();
        $("#content").load("DIS-loginform.php");
    });
});

SQL クエリは保存されないため (SQL インジェクション)、変更したほうがよいと思います。また、クエリでは、パスワード値にハッシュなどはありませんか? では、MD5 または SHA2 暗号化の使用について考えてみませんか?

そして、私が今のところ最後に見るもの:

使用する代わりに:

if($count >0)

使用する

if($count == 1)

これにより、ハッカーが複数の行を返す SQL インジェクションでログインするのを防ぎます。

例えば:

パスワードなしでこのユーザー名を使用してログインできます。

' or 'test'='test' -- '

すべてのユーザーで結果が得られ、クエリのパスワード部分がコメントアウトされるためです。

于 2013-04-15T04:17:39.250 に答える