0

/ /でSPAログインシステムを作成しました。私はすべてのコードが機能する時点にいます - 私はちょうどいくつかの検証をしようとしています. 「テキストフィールドが空白の場合、「何か」をエコーする」のように。if/else ステートメントはスクリプト内から機能しますが、フォームの送信時にまだ実行されているため、空白のセッション情報を含むパスワードで保護されたページが表示されます。phpmysqljqueryphpjquery

ログイン時に実行されるスクリプトは次のとおりです。

checklogin.php

<?php

session_start();

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="xxx"; // Mysql password
$db_name="itit"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
$mysqli = new mysqli("$host", "$username", "$password", "$db_name")or die("cannot connect");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

if(!$_POST['myusername'] || !$_POST['mypassword']) {
    echo "Username and password cannot be blank!";
    session_destroy();
}
else {
    $sql = $mysqli->prepare("SELECT * FROM $tbl_name WHERE username=? and password=?");
    $sql->bind_param('ss',$myusername,$mypassword);
    $sql->execute();
    $sql->store_result();//apply to prepare statement
    $numRows = $sql->num_rows;
    if($numRows === 1){
        $_SESSION['username'] = $myusername;
    }
    else {
        echo "Wrong Username or Password";
        session_destroy();
    }
}
?>

ご覧のとおり、ユーザー名またはパスワードのフィールドが空白かどうかをチェックする if ステートメントがあります。そうでない場合は続行しますが、そうである場合は停止し、if ブロック内の echo ステートメントを実行することになっています。ajax呼び出しを実行してはならないことをjqueryに認識させるために、jqueryに何かをする必要があると思います(またはそのようなもの)。これが私のjqueryです:

js/application.js

$(document).ready(function() {
    $("#main").load("templates/indexforms.php", function () {
        $("#login").submit(function(e) {
            e.preventDefault();
            $.post("checklogin.php", $(this).serialize(), function() {
                $("#main").load("templates/login_success.php");
                $("#login").remove();
                $("#register").remove();
            });
        });
    });
});

基本的に、送信機能を停止する必要があります...ページの内容が変更されないようにします。繰り返しますが...単一ページのアプリケーションを作成しようとしているので、index.phpファイル内の div の内外を切り替えるだけです。

4

1 に答える 1

0

投稿データを送信する前に、フィールドが空白かどうかを確認してください。

$(document).ready(function() {
$("#main").load("templates/indexforms.php", function () {
    $("#login").submit(function(e) {
        e.preventDefault();
        if ($('#myusername').val() != '' && $('#mypassword').val() != '') {
            $.post("checklogin.php", $(this).serialize(), function() {
                $("#main").load("templates/login_success.php");
                $("#login").remove();
                $("#register").remove();
            });
        } else {
            alert('Please enter a Username/Password');
        }
    });
});

});

于 2013-06-20T14:55:27.950 に答える