jQuery
및 PHP
을 사용하여 앱에 대한 사용자 등록 및 로그인을 개발하고 있습니다. 회원 데이터베이스에 레코드를 삽입하는 데 문제가 있습니다. 제출을 클릭하면 "등록되지 않음"알림이 표시됩니다. 등록 페이지로 돌아갑니다.jQuery 및 PHP 등록 스크립트가 작동하지 않습니다.
내 jQuery
제출 버튼에 대한 핸들과 HTML
:
$('#regsubmit').click(function(){
$.post("register.php",{reguser: $("#reguser").val(), fname: $("#fname").val(),lname: $("#lname").val(),regpass: $("#regpass").val(), regemail: $("#regemail").val()},function(data){
if(data == true){
alert("Registered");
}else{
alert("Not Registered");
}
});
});
<div data-role="content">
<div data-role="collapsible"><h2>Register</h2>
<form action="" method="post" id="registrationform">
<div data-role="fieldcontain">
<label for="fname">First name:</label>
<input type="text" name="fname" id="fname" value="" />
<div id="fnamecheck"></div>
</div>
<div data-role="fieldcontain">
<label for="lname">Last name:</label>
<input type="text" name="lname" id="lname" value="" />
<div id="lnamecheck"></div>
</div>
<div data-role="fieldcontain">
<label for="regemail">Email:</label>
<input type="email" name="regemail" id="regemail" value="" />
<div id="emailcheck"></div>
</div>
<div data-role="fieldcontain">
<label for="reguser">Username:</label>
<input type="text" name="reguser" id="reguser" value="" />
<div id="usernamecheck"></div>
</div>
<div data-role="fieldcontain">
<label for="regpass">Password:</label>
<input name="regpass" type="password" id="regpass" value="">
<div data-role="fieldcontain"><label for="confirmregpass">Confirm Password:</label>
<input name="confirmregpass" type="password" id="confirmregpass" value=""></div>
</div>
<input name="regsubmit" type="submit" id="regsubmit" value="Register" data-icon="check" data-theme="a"/>
</form>
</div>
그리고 내 register.php가 :
<?php
$MYSQL_SERVER = "localhost";
$MYSQL_USER = "root";
$MYSQL_PASSWORD = "password";
$db = mysql_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASSWORD) or die(mysql_error());
mysql_select_db("hedonsof_conflict") or die(mysql_error());
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['regemail'];
$reguser = $_POST['reguser'];
$regpass = $_POST['regpass'];
//Username check
$usercheck = mysql_query("SELECT * FROM members WHERE username='".$reguser."'");
if(empty($fname)||empty($lname)||empty($email)||empty($reguser)||empty($regpass)){
if(empty($fname)){
$errors[] = "Missing first name.";
}
if(empty($lname)){
$errors[]= "Missing last name.";
}
if(empty($email)){
$errors[]= "Missing email.";
}
if(empty($reguser)){
$errors[]= "Missing user name.";
}
if(empty($regpass)){
$errors[] = "Missing password.";
}
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors = "Not a valid eail address.";
}else{
$fname = strip_tags($fname);
$fname = stripslashes($fname);
$fname = trim($fname);
$lname = strip_tags($lname);
$lname = stripslashes($lname);
$lname = trim($lname);
$email = strip_tags($email);
$email = stripslashes($email);
$email = trim($email);
$reguser = strip_tags($reguser);
$reguser = stripslashes($reguser);
$reguser = trim($reguser);
$regpass = strip_tags($regpass);
$regpass = stripslashes($regpass);
$regpass = trim($regpass);
$sql = mysql_query("INSERT INTO members (username, fname, lname, password, email) VALUES('$reguser','$fname','$lname','$regpass','$email)") or die(mysql_error());
$msg = "Thanks for Registering.";
if($msg){
echo true;
}else{
$errors[] = "Sorry error with database at this time.";
echo $errors;
}
}
?>
편집 :
<?php
$MYSQL_SERVER = "localhost";
$MYSQL_USER = "root";
$MYSQL_PASSWORD = "password";
$db = mysql_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASSWORD) or die(mysql_error());
mysql_select_db("hedonsof_conflict") or die(mysql_error());
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['regemail'];
$reguser = $_POST['reguser'];
$regpass = $_POST['regpass'];
$errors[] = "";
//Username check
$usercheck = mysql_query("SELECT * FROM members WHERE username='".$reguser."'");
if(empty($fname)){
$errors[] = "Missing first name.";
}
if(empty($lname)){
$errors[]= "Missing last name.";
}
if(empty($email)){
$errors[]= "Missing email.";
}
if(empty($reguser)){
$errors[]= "Missing user name.";
}
if(empty($regpass)){
$errors[] = "Missing password.";
}
// }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
// $errors = "Not a valid email address.";
else{
$fname = strip_tags($fname);
$fname = stripslashes($fname);
$fname = trim($fname);
//$fname = mysqli_real_escape_string($fname);
$lname = strip_tags($lname);
$lname = stripslashes($lname);
$lname = trim($lname);
//$lname = mysqli_real_escape_string($lname);
$email = strip_tags($email);
$email = stripslashes($email);
$email = trim($email);
//$email = mysqli_real_escape_string($email);
$reguser = strip_tags($reguser);
$reguser = stripslashes($reguser);
$reguser = trim($reguser);
//$reguser = mysqli_real_escape_string($reguser);
$regpass = strip_tags($regpass);
$regpass = stripslashes($regpass);
$regpass = trim($regpass);
//$regpass = mysqli_real_escape_string($regpass);
$sql = mysql_query("INSERT INTO members (username, fname, lname, password, email) VALUES('$reguser','$fname','$lname','$regpass','$email')") or die(mysql_error());
$msg = "Thanks for Registering.";
if($msg){
echo "true";
}else{
$errors[] = "Sorry error with database at this time.";
echo "false";
}
}
?>
'data'는 값이 'true'이지만 실제로는 문자열 인 부울이 아닙니다. 그래서 나는 두 가지를 추천한다. (만약 당신이 JSON을 사용하지 않는다면) php의'echo' 라인을'echo "true";'로 바꾸고 Javascript에서는'if (data == "true")를 체크한다. – Adi
나는 생각한다. @Adnan이 바로 이것에 맞습니다. 데이터는 문자열 응답입니다. 그렇지 않으면 jQuery에 별도로 말하지 않는 한, 문자열로 표시하고 콘솔의 서버 출력을 확인해야합니다. –
감사합니다.이 변경 사항을 적용했지만 문제는 여전히 존재합니다. – RapsFan1981