我目前有一個html登錄頁面,其中有兩個用於電子郵件地址和密碼的文本框。 HTML包含一個表單和一個按鈕,它會觸發一些javascript來檢查數據輸入是否有效。如果數據是有效的,那麼數據被髮布到php應用程序中。HTML,Javascript,PHP登錄頁面
此php應用程序根據登錄詳細信息是否有效提供響應。
這裏是我的PHP:
if(isset($_POST['username']) && isset($_POST['password'])){
//connect to database
$dbh = connect();
$user = mysql_real_escape_string($_POST['username']);
$usertype = mysql_real_escape_string($_POST['usertype']);
$pass = md5($_POST['password']);
$query = "";
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $user)) {
if($usertype == "SupportStaff"){
$query = "SELECT staffId, fName, lName, gender, email FROM SupportStaff WHERE email = '$user' AND password = '$pass'";
}else{
$date = $_POST['currdate'];
$query = "SELECT athleteId, fName, lName, gender, email FROM Athletes WHERE email = '$user' AND password = '$pass'";
}
//make query
$result = mysql_query($query) or die ("didn't query");
//see if there's an EXACT match
$num = mysql_num_rows($result);
if ($num == 1){
$row = mysql_fetch_assoc($result);
if($usertype == "Athlete"){
$user = str_replace("@","at",$user);
$user = str_replace(".","dot",$user);
$user .= "Entries";
$query = mysql_query("SELECT * FROM $user WHERE date = '$date'");
$exists = false;
if(mysql_num_rows($query) == 1){
$exists = "true"; //to see if questionnaire is complete
}else{
$exists = "false";
}
$row['complete'] = $exists;
}
echo json_encode($row);
} else {
echo ($user." ");
echo ($pass);
echo ("&result=invalid");
}
}else{
mysql_close($dbh);
echo ("&result=false"); //invalid e-mail address
}
mysql_close($dbh);
}
?>
如果回聲&result=false
OR &result=invalid
然後我想用戶送達了登錄頁面再次顯示錯誤消息或類似的東西,如果它是成功的( echo json_encode($row)
)那麼它應該採取home.html(即主頁)...什麼是最好的方式來實現這一目標?
參見[PHP登錄腳本(http://php-login-script.com/) ,閱讀代碼並瞭解它是如何完成的。祝你好運! – CuriousMind
在您使用代碼更新您的問題之前,我提交了我的答案,但我的建議仍然是一種可能的解決方案。如果您有效地編寫代碼,則可以通過編寫函數(或完整的OO代碼)而不是純粹的程序代碼來防止PHP文件變得太大/不規範。 – ChrisW