2013-06-20 50 views
0

我創建了一個SPA登錄系統,其中包含php/mysql/jquery。我處於所有代碼函數的地步 - 我只是想做一些驗證。就像,「如果文本框是空白的,回聲'的東西'」。 if/else語句可以在php腳本中運行 - 但jquery仍然在表單提交中執行,因此會彈出帶有空白會話信息的受密碼保護的頁面。在php腳本中停止jquery if/else子句

這裏是獲取在登錄時運行該腳本:

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語句。我認爲我需要對我的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的內容。

回答

0

試着將一張支票,如果字段爲空您發送POST數據之前:

$(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'); 
     } 
    }); 
}); 

});

+0

非常感謝! – ewizard