登録フォームを作成中です。ユーザ名とメールアドレスが登録されている場合、登録を許可しないでください。ユーザ名とメールアドレスを確認した後にのみデータベースに挿入
ので、ユーザ情報を挿入し、サインアップ受け入れる前に、私はチェックしています2つの主要な条件 1.ユーザ名が取られている場合 2.電子メールは
前に登録された後、登録のみが通過することができます。
私はPHPにデータを送信するためのAjaxを使用していますが、データが何らかの理由でDBに挿入されません(エラーは表示しない!)
私が間違っているつもりはどこ?
HTMLコード:
<form method="post" role="form" id="register-form" autocomplete="off" action="includes/check_signup.php">
<div class="form-header">
<h3 class="form-title"><i class="fa fa-user"></i><span class="glyphicon glyphicon-user"></span> Sign Up</h3>
<div class="pull-right">
<h3 class="form-title"><span class="glyphicon glyphicon-pencil"></span></h3>
</div>
</div>
<div class="form-body">
<!-- json response will be here -->
<div id="errorDiv"></div>
<!-- json response will be here -->
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div>
<input name="name" type="text" id="name" class="form-control" placeholder="Name" maxlength="40" autofocus="true" onBlur="checkname();">
</div>
<span class="help-block" id="error error-username"></span>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></div>
<input name="email" id="email" type="text" class="form-control" placeholder="Email" maxlength="50" onBlur="checkemail();">
</div>
<span class="help-block" id="error error-email"></span>
</div>
<div class="row">
<div class="form-group col-lg-6">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div>
<input name="password" id="password" type="password" class="form-control" placeholder="Password">
</div>
<span class="help-block" id="error"></span>
</div>
<div class="form-group col-lg-6">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div>
<input name="cpassword" type="password" class="form-control" placeholder="Retype Password">
</div>
<span class="help-block" id="error"></span>
</div>
</div>
</div>
<div class="form-footer">
<button type="submit" class="btn btn-info" id="btn-signup" name="signup">
<span class="glyphicon glyphicon-log-in"></span> Sign Me Up
</button>
</div>
<p id='result'></p>
</form>
Ajaxコード:
//check username availability
function checkname() {
jQuery.ajax({
url: "includes/check_signup.php",
data:'username='+$("#name").val(),
type: "POST",
success:function(data){
$("#error").html(data);
},
error:function(){}
});
}
function checkemail()
{
jQuery.ajax({
url: "includes/check_signup.php",
data:'email='+$("#email").val(),
type: "POST",
success:function(data){
$("#error").html(data);
},
error:function(){}
});
}
$('document').ready(function()
{
// name validation
var nameregex = /^[0-9a-zA-Z]+$/;
$.validator.addMethod("validname", function(value, element) {
return this.optional(element) || nameregex.test(value);
});
// valid email pattern
var eregex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$.validator.addMethod("validemail", function(value, element) {
return this.optional(element) || eregex.test(value);
});
$("#register-form").validate({
rules:
{
name: {
required: true,
validname: true,
minlength: 4
},
email : {
required : true,
validemail: true,
remote: {
url: "check-email.php",
type: "post",
data: {
email: function() {
return $("#email").val();
}
}
}
},
password: {
required: true,
minlength: 5,
maxlength: 15
},
cpassword: {
required: true,
equalTo: '#password'
},
},
messages:
{
name: {
required: "Username is required",
validname: "Username can be a combination of Alphabets & Numbers",
minlength: "your username is too short"
},
email : {
required : "Email is required",
validemail : "Please enter valid email address",
remote : "Email already exists"
},
password:{
required: "Password is required",
minlength: "Password at least have 5 characters"
},
cpassword:{
required: "Retype your password",
equalTo: "Password did not match !"
}
},
errorPlacement : function(error, element) {
$(element).closest('.form-group').find('.help-block').html(error.html());
},
highlight : function(element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).closest('.form-group').removeClass('has-error');
$(element).closest('.form-group').find('.help-block').html('');
},
submitHandler: submitForm
});
});
$('#register-form').submit(function(){
return false;
});
$('#btn-signup').click(function(){
$.post(
$('#register-form').attr('action'),
$('#register-form :input').serializeArray(),
function(result){
$('#result').html(result);
}
);
});
PHPコード:たぶん
<?php
function name(){
global $connection;
if(isset($_POST['username']))
{
$name=$_POST['username'];
$checkdata="SELECT * FROM users WHERE userName='$name' ";
$query=mysqli_query($connection, $checkdata);
if(mysqli_num_rows($query)>0)
{
echo "User Name is taken";
return true;
}
exit();
}
}
function email() {
global $connection;
if(isset($_POST['email']))
{
$emailId=$_POST['email'];
$checkdata=" SELECT * FROM users WHERE userEmail='$emailId' ";
$query=mysqli_query($connection, $checkdata);
if(mysqli_num_rows($query)>0)
{
echo "Email Already Exist";
return true;
}
exit();
}
}
function insert_db(){
global $connection;
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$pass = trim($_POST['cpassword']);
$full_name = strip_tags($name);
$user_email = strip_tags($email);
$user_pass = strip_tags($pass);
// sha256 password hashing
$hashed_password = hash('sha256', $user_pass);
$query = "INSERT INTO users(userName,userEmail,userPassword) VALUES('$name', '$email', '$hashed_password')";
$result = mysqli_query ($connection, $query);
if ($result) {
echo "You have been registered";
return true;
} else {
die ("error". mysqli_error ($connection));
}
}
if (name()) {
} elseif (email()) {
} else {
insert_db;
}
変数はすべて単独で底に座っています。確かにあなたはそれが関数呼び出しであることを意味していませんでしたか? –
ajaxコールコードを追加してください。 – Ayush
なぜあなたはただ1つのクエリを使用しないのですか? –