我的註冊頁面出現問題。您可以通過使用其他電子郵件註冊一個已經註冊了用戶名的新用戶。使用不同的用戶名和電子郵件註冊新用戶
例如,第一次註冊:
用戶名:用戶1
密碼:123
電子郵件:[email protected]
消息接收:「您正在註冊」
另一註冊:
用戶名:用戶1
密碼:123
電子郵件:[email protected]
收到消息:「你註冊」
頁應顯示「用戶名已存在「但這不是偶然。我真的不知道缺少什麼。
下面是代碼:
<?php
if(isset($_POST["register"])){
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
if (!empty($username) && !empty($password) && !empty($email)){
$checkusername = mysql_query("SELECT `id` FROM `user` WHERE `username` = '".$username."'") or die(mysql_error());
$checkemail = mysql_query("SELECT `id` FROM `user` WHERE `email` = '".$email."'") or die(mysql_error());
if(mysql_num_rows($checkusername) == 1){
?><p><?php echo "Username already exists"; ?></p><?php
}
if(mysql_num_rows($checkemail) == 1){
?><p><?php echo "Email already exists"; ?></p><?php
}
else{
mysql_query("INSERT INTO `database`.`user`(`username`,`password`,`email`) VALUES ('".$username."','".$password."','".$email."')") or die(mysql_error());
?><p><?php echo "You are Registered"; ?></p><?php
}
}
else{
if(empty($username)){
$error[] = "Please insert a username";
}
if(empty($password)){
$error[] = "Please insert a password";
}
if(empty($email)){
$error[] = "Please insert a email";
}
foreach ($error as $value) {
?><p><?php echo "'".$value."'<br>"; ?></p><?php
}
}
}
?>
編輯:
感謝您的幫助球員,但我發現這個問題更好的解決方案。我使用$值也顯示「用戶名已存在」和「電子郵件已存在」也改變mysql_num_rows($ checkusername)== 1到mysql_num_rows($ checkusername)> 0爲你們中的一些人建議。下面是新的代碼:
<?php
include "header.php";
if(isset($_POST["register"])){
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
if (!empty($username) && !empty($password) && !empty($email)){
$checkusername = mysql_query("SELECT `id` FROM `user` WHERE `username` = '".$username."'");
$checkemail = mysql_query("SELECT `id` FROM `user` WHERE `email` = '".$email."'");
if(mysql_num_rows($checkusername) == 0 && mysql_num_rows($checkemail) == 0){
mysql_query("INSERT INTO `database`.`user`(`username`,`password`,`email`) VALUES ('".$username."','".$password."','".$email."')") or die(mysql_error());
?><p><?php echo "You are Registered"; ?></p><?php
}
else{
if(mysql_num_rows($checkusername) > 0){
$error[] = "Username already exists";
}
if(mysql_num_rows($checkemail) > 0){
$error[] = "Email already exists";
}
foreach ($error as $value) {
?><p><?php echo "'".$value."'<br>"; ?></p><?php
}
}
}
else{
if(empty($username)){
$error[] = "Please insert a username";
}
if(empty($password)){
$error[] = "Please insert a password";
}
if(empty($email)){
$error[] = "Please insert a email";
}
foreach ($error as $value) {
?><p><?php echo "'".$value."'<br>"; ?></p><?php
}
}
}
?>
快速猜測> 0而不是==(或清除表格)。例如你已經有一個以上的用戶叫Fred了。 –
您正在使用已棄用和過時的mysql連接。而且,你非常容易受到SQL注入的攻擊。另外,你的'if'是錯誤的。如果用戶名匹配,但電子郵件不會繼續創建新用戶。 – GolezTrol
你爲什麼對此感到驚訝?你檢查重複的用戶名,但不要對這些信息做任何事情。你只是盲目地插入新的記錄。另外,你很容易受到[sql注入攻擊](http://bobby-tables.com) –