我在 php 中调用必要的 jQuery 函数时遇到了困难,所以我将它们添加到 javascript,但是我熟悉的方法(成功函数)阻止 php 执行除 INSERT INTO 和 SELECT 查询之外的任何操作。我将如何更改此脚本以完成 php,和/或如何组合代码以完成以下操作?
验证表格(男性和女性有单独的规则)
如果验证成功:Both Genders: parent.close_field('notice'); (目前仅适用于 javascript)
如果性别是女性:
- 在 customer_info 表中插入信息
- 标识分配给此帐户的 user_id
- 将用户重定向到下一页(目前在 php 和 javascript 中)
如果性别是男性:
- 生成电子邮件通知我请求
- 将信息插入到邀请请求表中
- 给男士的回声信息(目前在两者中;首选方法是在 php 中)
- 关闭 Fancybox iframe(目前仅适用于 javascript)
我正在使用 fancybox2 和这个 jQuery 验证插件http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Javascript
var $custInfo = $("#customer_info");
$(document).ready(function () {
var validator = $custInfo.validate({
rules: {...},
messages: {...},
errorLabelContainer: "#messageBox",
submitHandler: function () {
$custInfo.ajaxSubmit({
success: function () {
if ($('input[name=gender][value=female]').is(':checked')) {
parent.close_field('notice');
window.location.href = "page1.html";
} else if ($('input[name=gender][value=male]').is(':checked')) {
parent.close_field('notice');
parent.$.fancybox.close();
alert("This isn’t available yet for men, but we’ll send you an invitation as soon as it is");
}
}
});
}
});
$custInfo.find("input[name=gender]").change(function () {
if ($(this).val() == "male") {
$custInfo.submit();
}
});
});
PHP
<?php
//Start session and connection to database goes here
//Function to sanitize values received from the form goes here
$gender = $_POST['gender'];
if ($gender==="female" ) {
// INSERT information into customer_info table
$qry = "INSERT INTO customer_info(fname, lname, gender, zip, email, phone, terms, security_question, security_answer, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[security_question]','$_POST[security_answer]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')";
$result = @mysql_query($qry);
if($result) {
// Identifies user_id assigned to this account
$qry="SELECT * FROM customer_info WHERE user_name='$user_name' AND password='".md5($_POST['password'])."'";
$result=mysql_query($qry);
if($result) {
if(mysql_num_rows($result) == 1) {
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_USER_ID'] = $member['user_id'];
$_SESSION['SESS_USER_NAME'] = $member['user_name'];
session_write_close();
// Redirects user to the next page
header("location: page1.html");
exit();
}else { //user_name failed
header("location: login_failed.html");
exit(); }
}else { die("Unable to access your account (Error Message 1)"); }
}else { die("Unable to access your account (Error Message 2)"); }
}
// If Gender is Male
else {
// Notify us of request via email
$sendto = "info@click2fit.com";$userfname = $_POST['fname'];$userlname = $_POST['lname'];$usermail = $_POST['email'];$gender = $_POST['gender'];$subject = "Invite Request - " . ($gender) . " ";
// INSERT information into invite_requests table
$qry = "INSERT INTO invite_requests(fname, lname, gender, zip, email, phone, terms, participating_retailers, notify_new_items, notify_promotions, priority1, priority2, priority3, priority4, priority5, gift_privacy, user_name, password, Quickfill) VALUES('$_POST[fname]','$_POST[lname]','$_POST[gender]','$_POST[zip]','$_POST[email]','$_POST[phone]','$_POST[terms]','$_POST[participating_retailers]','$_POST[notify_new_items]','$_POST[notify_promotions]','$_POST[priority1]','$_POST[priority2]','$_POST[priority3]','$_POST[priority4]','$_POST[priority5]','$_POST[gift_privacy]','$user_name','".md5($_POST['password'])."','$_POST[Quickfill]')";
$result = @mysql_query($qry);
// Echo message to Men
echo "<p><strong>Click2Fit is not yet available for men, but we'll be sure to send an invitation as soon as it is</strong></p>";
// Redirects user - This should be replaced with the function which closes the fancybox iframe
header("location: home.html");
exit();
}
?>