Kayıt formuyla ilgili bir sorun yaşıyorum.SQL Veritabanından E-posta Doğrulaması Kayıt formundaki PHP'yi kullanarak
Veritabanına yeni bir e-posta girdiğimde Veritabanından varolan bir e-postayı attığımda bile geçersiz olmadığını söylüyor.
<?php
include('../admin/admin_header.php');
?>
<div class="container" id="promptContainer">
<div class="jumbotron">
<div class="span6 center">
<?php
try {
$title = 'Save';
$email = null;
$password = null;
$username = null;
$confirm = null;
//Store Info from "Email" and "Password" form to vars
$email = $_POST['email'];
$password = $_POST['password'];
$username = $_POST['username'];
$confirm = $_POST['confirm'];
$ok = true;
//Validation
//If Email or Password blank, $ok = false, throw echo to user
if (empty($email)) {
echo 'Email is required<br />';
$ok = false;
}
if (empty($password)) {
echo 'Password is required<br />';
$ok = false;
if (empty($username)) {
echo 'Username is required<br />';
$ok = false;
if ($password != $confirm) {
echo 'Password must match<br />';
$ok = false;
}
}
}
$sql = "SELECT email FROM AccountInfo WHERE email = :email";
$cmd = $conn->prepare($sql);
$cmd->bindParam(':email', $email);
if (!filter_var($sql, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
echo '<meta http-equiv="refresh" content="2;url=http://otherurl.com">';
$ok = true;
} else {
echo("$email is not a valid email address");
echo '<meta http-equiv="refresh" content="2;url=http://url.com">';
$ok = false;
}
//Save
$cmd->execute;
//If true, Save info to vars
if ($ok == true) {
include('dbCredentials.php');
if (empty($user_id))
//Insert info to SQL DB VALUES
$sql = "INSERT INTO AccountInfo (email, password, username) VALUES (:email, :password, :username)";
//SHA512 Hash Encryption
$encryptpw = hash('sha512', $password);
$cmd = $conn->prepare($sql);
$cmd->bindParam(':email', $email, PDO::PARAM_STR, 50);
$cmd->bindParam(':password', $encryptpw, PDO::PARAM_STR, 128);
$cmd->bindParam(':username', $username, PDO::PARAM_STR, 10);
//Save DB
$cmd->execute();
echo 'Registration successful.';
}
} catch (Exception $ex) {
//Email when expection error
mail('[email protected]', 'Failed to save user registration info!', $ex);
header('location:error.php');
}
?>
</div>
</div>
</div>
<?php include('footer.php');
Bu kod, bir formdan gelir ve gönderilişi zaman, bu koda Gönderiler:
kodudur. Bilgiler doğruysa, veritabanına bilgileri belirtilen sütunlara gönderir.Sorun şu ki, formlara bilgi girip gönderdiğimde, e-postanın veritabanından geçerli olup olmadığını kontrol etmiyor.
Bana yardım ettiğiniz için teşekkür ederiz!
Özgün değişkene filtre uygulanmaz '$ sql' değil – RiggsFolly
Ve her şeyi yanlış sırada yapıyorsunuz. İlk SELECT sorgusunu çalıştırdıktan sonra veritabanına bağlanmadığınız anlaşılıyor. – RiggsFolly
Tekrar başlayın ve bu sefer beyninizle bağlantı kurun veya herhangi bir kodlamaya başlamadan önce kılavuzu okuyun. – RiggsFolly