// Check if user with that email already exists
$result = $connect->query("SELECT * FROM users WHERE email='$email'") or die($connect->error());
// We know user email exists if the rows returned are more than 0 als het email adres niet bestaat gaat de procedure verder.
if ( $result->num_rows > 0 ) {
echo ('true'); //good to register
}
else
{
echo ('false'); //already registered
}
Ik heb het ook nog met een apart bestandje geprobeerd ipv register.php:
if (!empty($_POST['email']))
{
$email = $connect->real_escape_string($_POST['email']);
$query = "SELECT ID FROM users WHERE user_email = '{$email}' LIMIT 1;";
$results = $connect->query($query);
if($results->num_rows == 0)
{
echo 'true'; //good to register
}
else
{
echo 'false'; //already registered
}
}
Ik weet dat de register.php goed moet zijn die geeft aan of er wel of geen email bestaat zonder jQuery.
<?php
/* Registration process, inserts user info into the database
and sends account confirmation email message
*/
// Set session variables to be used on profile.php page
$_SESSION['email'] = $_POST['email'];
$_SESSION['first_name'] = $_POST['firstname'];
$_SESSION['last_name'] = $_POST['lastname'];
// Escape all $_POST variables to protect against SQL injections
$first_name = $connect->escape_string($_POST['firstname']);
$last_name = $connect->escape_string($_POST['lastname']);
$email = $connect->escape_string($_POST['email']);
$password = $connect->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT));
$hash = $connect->escape_string( md5( rand(0,1000) ) );
$password_herh = $connect->escape_string($_POST['password_herh']);
// Check if user with that email already exists
$result = $connect->query("SELECT * FROM users WHERE email='$email'") or die($connect->error());
// We know user email exists if the rows returned are more than 0 als het email adres niet bestaat gaat de procedure verder.
if ( $result->num_rows > 0 ) {
echo ('true'); //good to register
}
else
{
echo ('false'); //already registered
}
// active is 0 by DEFAULT (no need to include it here)
$sql = "INSERT INTO users (first_name, last_name, email, password, hash) "
. "VALUES ('$first_name','$last_name','$email','$password', '$hash')";
// Add user to the database
if ( $connect->query($sql) ){
$_SESSION['active'] = 0; //0 until user activates their account with verify.php
$_SESSION['logged_in'] = true; // So we know the user has logged in
$_SESSION['message'] =
"Confirmation link has been sent to $email, please verify
your account by clicking on the link in the message!";
// Send registration confirmation link (verify.php)
$to = $email;
$subject = 'Account Verification';
$message_body = '
Hello '.$first_name.',
Thank you for signing up!
Please click this link to activate your account:
http://localhost/verify.php?email='.$email.'&hash='.$hash;
mail( $to, $subject, $message_body );
header("location: profile.php");
}
else {
$_SESSION['message'] = 'Registration failed!';
header("location: error.php");
}
//Google reCaptcha
$email = $_POST['email'];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => [
'secret' => 'x',
'response' => $_POST['g-recaptcha-response'],
],
]);
$response = json_decode(curl_exec($curl));
?>
register.php is niet alleen voor de email maar voor het hele formulier.
Ik heb niet in de Network-tab van de browser gekeken maar register.php werkt verder goed alles komt in de database terecht.
Een AJAX-request haalt doorgaans alleen de data die nodig is bij de request. Een hele pagina die nog meer dan dat uitvoert valt daar uiteraard niet onder. Verder ontbreekt je connectie, zoals SanThe al zei.
Ik zou dus liever een extra scriptje maken die je ajax_validatemail.php noemt, en daar controleer aan de hand van je POST-waarde of de mailadres wel of niet is goedgekeurd. Dan geef je bijvoorbeeld een string true of false door. De registratie zelf gebeurt na je het posten van je formulier, is en een uitgebreider proces dan enkel het valideren.
Ik heb nog nooit gewerkt met Network tab ik krijg daar wel een op het laatst bij validatie.js een oranje 304 terwijl er boven aan bij validatie groen een 200 staat bij validatie.js
Zegt jou dit iets?
Ik dacht dat het de captcha was maar nu met de tab naar een ander veld komt die 304 er weer ik zie alleen zo snel nog niet wat de oplossing ervoor is.