0

我用//创建了一个SPA登录系统。我正处于我所有代码功能的地步——我只是想进行一些验证。例如,“如果文本字段为空白,则回显‘某事’”。if/else 语句在脚本中工作 - 但仍在表单提交时执行,因此它会显示一个带有空白会话信息的受密码保护的页面。phpmysqljqueryphpjquery

这是登录时运行的脚本:

检查登录.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 语句。我想我需要对我的 jquery 做一些事情,让它认识到不应该执行 ajax 调用(或类似的东西)。这是我的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 回答