如何检查电子邮件是否已被使用?如果在使用中,将警告用户已经使用了电子邮件,如果没有,则会继续。
在我的代码中,它不起作用,即使我输入了相同的电子邮件,它仍然会注册。
<?php
session_start();
$con=@mysql_connect("localhost","root","secretpassword");
$dbcheck = mysql_select_db("buybranded");
if (!$dbcheck) {
echo mysql_error();
}
$new_email= $_POST['email'];
$xxx = mysql_query("SELECT email FROM users WHERE email = $new_email");
$yyy = mysql_fetch_row($xxx);
if(!isset($yyy['email'])){
$hashed_password = hash( 'sha512', $_POST['password'] );
$type="customer";
$sql="INSERT INTO users(first_name, middle_name, last_name, gender, email, password, birth_date, home_address, postal_code, home_phone, mobile_phone, source, type)
VALUES
('$_POST[first_name]','$_POST[middle_name]','$_POST[last_name]','$_POST[gender]','$_POST[email]','$hashed_password','$_POST[birth_date]','$_POST[home_address]','$_POST[postal_code]','$_POST[home_phone]','$_POST[mobile_phone]','$_POST[source]','$type')";
}
else {
echo "hahaha";
}
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error($con));
}
header('refresh: 0; url=../index.php#openModal');
$message = "You are now Registered, Please Sign In.";
echo("<script type='text/javascript'>alert('$message');</script>");
&GT?;
我希望你们能帮忙,我是php的新手。 :)谢谢!
答案 0 :(得分:1)
您的查询语法错误,导致所有查询失败。你也没有检查失败,所以你只是假设一切都会继续工作:
$xxx = mysql_query("SELECT email FROM users WHERE email = $new_email");
^---------^--- no quotes
这将产生
... WHERE email = foo@exam
ple.com
我非常怀疑您的用户表中有foo@example.com
列。
$xxx = mysql_query("SELECT email FROM users WHERE email = '$new_email'") or die(mysql_error());
^----------^--
请注意此处的引号,以及or die(...)
。
然后你有进一步的逻辑错误。 $sql
仅在第一个查询DOESN&T退回任何有效数据时才会设置。但是你无条件地尝试执行`$ sql varaible,即使它从未设置过。
if (...) {
$sql = "INSERT ...";
}
mysql_query($sql);
由于只有在电子邮件DIDN&t存在的情况下才会设置,因此您盲目地尝试执行不存在的查询,然后THAT query()调用也会失败。代码应该更像:
if (...) {
$sql = "INSERT..."
mysql_query($sql) or die(mysql_error());
die("Email created");
}
die("Email not created");
除此之外,您还容易受到sql injection attacks
的攻击