سلام وقت بخیر امید وارم حالتون خوب باشه
من روی ی فرم تماس به کمک php و ajax jquery کار میکنم که به صورت ajax اطلاعات به خوبی انتقال داده میشد ولی زمانی که ایمیل یا نام کاربری در دیتابیس وجود داشت ، تنها در فایل php که از طریق ajax متصل میشد ، ارور میداد و متاسفانه در صفحه تماس با ما نمایش داده نمیشد که به کاربر اطلاع بده که نام کاربری یا ایمیل در دیتابیس موجود است .
@Raymond
@saghari
پروژه هم دارای 2 تا فایل php و js هست :
JS :
function validateEmailId(input) {
var emailFormat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (emailFormat.test(input)) {
return true;
} else {
return false;
}
}
function pregMatch(input) {
var regExp = /^[a-zA-Z-ا-ی ]*$/;
if (regExp.test(input)) {
return true;
} else {
return false
}
}
function ajaxRegistration() {
$(".error").text("");
$('#first-name-info').removeClass("error");
$('#last-name-info').removeClass("error");
$('#register-email-info').removeClass("error");
$('#contact-no-info').removeClass("error");
$('#register-passwd-info').removeClass("error");
$('#confirm-passwd-info').removeClass("error");
var firstName = $('#first-name').val();
var lastName = $('#last-name').val();
var emailId = $('#register-email-id').val();
var contactNumber = $('#contact-number').val();
var password = $('#register-password').val();
var confirmPassword = $('#confirm-password').val();
var actionString = 'registration';
if (firstName == "") {
$('#first-name-info').addClass("error");
$(".error").text("ضروری");
} else if (!pregMatch(firstName)) {
$('#first-name-info').addClass("error");
$(".error").text('لطفا فاصله بین کلمات نگذارید');
} else if (lastName == "") {
$('#last-name-info').addClass("error");
$(".error").text("ضروری");
} else if (!pregMatch(lastName)) {
$('#last-name-info').addClass("error");
$(".error").text('لطفا فاصله بین کلمات نگذارید');
} else if (emailId == "") {
$('#register-email-info').addClass("error");
$(".error").text("ضروری");
} else if (!validateEmailId(emailId)) {
$('#register-email-info').addClass("error");
$(".error").text("بی اعتبار");
} else if (contactNumber == "") {
$('#contact-no-info').addClass("error");
$(".error").text("ضروری");
} else if (isNaN(contactNumber) || (contactNumber.indexOf(" ") != -1) || contactNumber.length > 10) {
$('#contact-no-info').addClass("error");
$(".error").text("بی اعتبار");
} else if (password == "") {
$('#register-passwd-info').addClass("error");
$(".error").text("ضروری");
} else if (confirmPassword == "") {
$('#confirm-passwd-info').addClass("error");
$(".error").text("ضروری");
} else if (password != confirmPassword) {
$('#confirm-passwd-info').addClass("error");
$(".error").text("رمز عبور تأیید شما مطابقت ندارد.");
} else {
$('#loaderId').show();
$.ajax({
url : 'assets/php/register.php',
type : 'POST',
data : {
firstName : firstName,
lastName : lastName,
emailId : emailId,
contactNumber : contactNumber,
password : password,
confirmPassword : confirmPassword,
action : actionString
},
success : function(response) {
if (response.trim() == 'error') {
alert("ارور !")
console.log("ارور !")
} else {
alert("با موفقیت ثبت نام شما انجام شد !")
console.log("OKKKK")
}
}
});
}// endif
}
PHP :
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'form_sign_up');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
try {
$conn = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$firstName = filter_var($_POST['firstName'], FILTER_SANITIZE_STRING);
$lastName = filter_var($_POST['lastName'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['emailId'], FILTER_VALIDATE_EMAIL);
$phone = filter_var($_POST['contactNumber'], FILTER_SANITIZE_STRING);
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$stmt = $conn->prepare("SELECT * FROM users WHERE email = :email OR phone = :phone");
$stmt->execute(['email' => $email, 'phone' => $phone]);
$existingUser = $stmt->fetch();
if ($existingUser) {
echo "<p class='error'>کاربری با این ایمیل یا شماره تلفن قبلاً ثبت نام کرده است.</p>";
} else {
$stmt = $conn->prepare("INSERT INTO users (first_name, last_name, email, phone, password) VALUES (:firstName, :lastName, :email, :phone, :password)");
$stmt->execute(['firstName' => $firstName, 'lastName' => $lastName, 'email' => $email, 'phone' => $phone, 'password' => $password]);
if ($stmt->rowCount() > 0) {
header("Location: dashboard.php");
} else {
echo "<p class='error'>خطایی در ثبت نام رخ داده است. لطفاً با پشتیبانی تماس بگیرید.</p>";
}
}
$conn = null;
} catch(PDOException $e) {
error_log($e->getMessage());
echo "<p class='error'>خطایی در ثبت نام رخ داده است. لطفاً با پشتیبانی تماس بگیرید.</p>";
}
فایل HTML و صفحه تماس با ما :
<form id="register-form" action="" method="post" role="form">
<div class="form-group">
<label for="">نام</label>
<span id="first-name-info"></span> <input type="text" name="first-name" id="first-name" class="input-field" value="">
</div>
<div class="form-group">
<label for="">نام خانوادگی</label>
<span id="last-name-info"></span> <input type="text" name="last-name" id="last-name" class="input-field" value="">
</div>
<div class="form-group">
<label for="">ایمیل</label>
<span id="register-email-info"></span> <input type="email" name="register-email-id" id="register-email-id" class="input-field" value="">
</div>
<div class="form-group">
<label for="">شماره تماس</label>
<span id="contact-no-info"></span> <input type="text" name="contact-number" id="contact-number" maxlength="10" class="input-field" >
</div>
<div class="form-group">
<label for="">رمز عبور</label>
<span id="register-passwd-info"></span> <input type="password" name="register-password" id="register-password" class="input-field" >
</div>
<div class="form-group">
<label for="">تکرار رمز عبور</label>
<span id="confirm-passwd-info"></span> <input type="password" name="confirm-password" id="confirm-password" class="input-field">
</div>
<div class="form-group col-lg-12">
<input type="button" id="submit-btn" class="btn_one" value="ثبت نام" onclick="ajaxRegistration()">
</div>
</form>
به jamshid iraneii کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟