尝试将注册验证与PHP和Ajax结合在一起。不知道出了什么问题,但提交没有发生。如果我不添加验证部分一切看起来很好,我能够将数据插入到mysql。
<script type="application/javascript">
$("#submit").submit(function (event) {
event.preventDefault();
var datatopost = $(this).serializeArray();
console.log(datatopost);
$.ajax({
url: "signupregister.php",
type: "POST",
data: datatopost,
success: function (data) {
if (data) {
$("#signupmessage".html(data));
}
},
error: function () {
$("#signupmessage").html("<div class = 'alert alert-danger'></div>")
}
});
});
</script>
_
<?php
session_start();
include('mysqlconnection.php');
include('index.php');
function customError($errors, $errorslevel)
{
}
set_error_handler("customError", E_ALL);
if (isset($_POST['submit'])) {
if ($_POST($first_name) == "") {
$errors .= $first_nameError;
} else {
$first_name =
filter_var($_POST["first_name"], FILTER_SANITIZE_STRING);
}
}
if ($errors) {
$resultMessage = '<div class="alert alert-danger">' .
$errors . '</div>';
echo $resultMessage;
exit;
}
$first_nameError = '<p>first name required</p>';
答案 0 :(得分:0)
首先,在您的验证PHP脚本中,您不需要包含&#39; index.php&#39;
尝试将表单重定向到空白页面,其中只包含验证数据,同时为遇到的第一个错误设置会话变量。
在验证结束时,如果您的错误变量包含错误,您可以重定向到表单并在方便的位置显示您的错误。请记住,如果要保留所有用户输入,则必须在会话变量中保存表单数据(从而消除了反复填写表单的麻烦)。 如果没有,您可以继续在数据库中插入数据,然后重定向到您想要的目标网页。
以下是基于您的输入的示例代码:
<?php
session_start();
if(isset($_POST['submit'])){
$_SESSION['fname'] = $_POST['fname'];
//so on for your other variables
if($_SESSION['fname'] == ""){
$_SESSION['err'] = "First Name Required";
}
if(//insert your format validation for first name){
$_SESSION['err'] = "First Name Invalid";}
}
//end of validation
if isset($_SESSION['err']){
header('Location: myform.php');
}
else{
//save all your variables into normal ones, i.e $fname-$_POST['fname'];
//insert into database;
//check correct insertion;
//redirect to landing page;
}
}
?>