【发布时间】:2015-01-24 05:41:37
【问题描述】:
我有这个注册表单,当用户完成表单后,他最终会提交它,但我想检查用户名和电子邮件是否已经存在,简单吧? 试图解决这个问题已经 2 天了,但没有运气。 对不起,我没有使用最新版本的 MySQL,因为这是我在课堂上学到的唯一版本。我会学习改进的。
我在 Google 上做了很多研究,我发现这是一些 LOCK 之王,当我们插入表格时会被锁定..
if(isset($_POST['button'])){
$query_global = mysql_query("SELECT Username FROM users WHERE Username = '".$_POST['username']."' ") or die(mysql_error());
$row = mysql_num_rows($query_global);
if($row == 1){
$error_username = "The username is already registered, please choose another one <br>";
}
$query_email = mysql_query("SELECT Email FROM users WHERE Email = '".$_POST['email']."' ") or die(mysql_error());
$row_email = mysql_num_rows($query_email);
if($row_email == 1){
$error_email = "This email : '".$_POST['email']."' is already registered ";
}
if(isset($_POST['Username'])) { $Username = $_POST['Username']; }
if(isset($_POST['email'])) { $email = $_POST['email']; }
$nom = $_POST['nom'];
$sexe = $_POST['sexe'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$adresse = $_POST['adresse'];
$ville = $_POST['ville'];
$pseudo = $_POST['pseudo'];
$mdp = $_POST['mdp'];
$date = $_POST['date'];
$profession = $_POST['profession'];
// location where initial upload will be moved to
$target = "images/" .$_FILES['uploaded']['name'] ;
// find thevtype of image
switch ($_FILES["uploaded"]["type"]) {
case $_FILES["uploaded"]["type"] == "image/gif":
move_uploaded_file($_FILES["uploaded"]["tmp_name"],$target);
break;
case $_FILES["uploaded"]["type"] == "image/jpeg":
move_uploaded_file($_FILES["uploaded"]["tmp_name"],$target);
break;
case $_FILES["uploaded"]["type"] == "image/pjpeg":
move_uploaded_file($_FILES["uploaded"]["tmp_name"],$target);
break;
case $_FILES["uploaded"]["type"] == "image/png":
move_uploaded_file($_FILES["uploaded"]["tmp_name"],$target);
break;
case $_FILES["uploaded"]["type"] == "image/x-png":
move_uploaded_file($_FILES["uploaded"]["tmp_name"],$target);
break;
default:
$error[] = 'Seulement les JPG, PNG ou GIF sont acceptés!.';
}
$error="";
if (!$error) {
$query = "INSERT INTO Users Values ('', '".$nom."', '".$sexe."', '".$email."', ".$tel.", '".$adresse."', '".$ville."', '".$pseudo."', '".$mdp."', curdate(), '$target', '".$date."', '".$profession."')";
$add_user = mysql_query($query) or die(mysql_error());
header('Location: Login/index.php');
}
}
//display any errors
if (!empty($error))
{
$i = 0;
echo "<p><span class='error'>";
while ($i < count($error)){
echo $error[$i].'<br />';
$i ++;}
echo "</span></p>";
}
即使所有这些都解决了,是否有任何方法可以在输入错误时阻止表单提交,我的意思是我已经在另一个文件中尝试过它并且它有效,但是即使输入错误,表单也会被提交。
迫不及待想听到你的答案。
【问题讨论】:
-
你应该将你的代码分割成functions - 它主要是你的缩进/结构使你的任务复杂化。然后阅读数据库转义,更好的是avoiding mysql。
-
你说得对,我实际上将插入到查询中分割成一个函数,现在一切正常!谢谢!!