2016-05-07 73 views
1

我有注册代码(使用数据库)。当我在表单中输入信息并提交时,没有任何反应。任何帮助将非常感激!谢谢。PHP&MYSQL:注册/创建一个帐户

- 我希望我可以登录后修复此问题!

register.php

<!doctype html> 
<html> 
<head> 
<title>Register</title> 
</head> 
<body> 

<p><a href="register.php">Register</a> | <a href="login.php">Login</a></p> 
<h3>Registration Form</h3> 
<form action="" method="POST"> 
Username: <input type="text" name="user"><br /> 
Password: <input type="password" name="pass"><br /> 
<input type="submit" value="Register" name="submit" /> 
</form> 
<?php 
if(isset($_POST["submit"])){ 

if(!empty($_POST['user']) && !empty($_POST['pass'])) { 
    $user=$_POST['user']; 
    $pass=$_POST['pass']; 

    $con=mysqli_connect('localhost','root','') or die(mysqli_error()); 
    mysqli_select_db('database') or die("cannot select DB"); 

    $query=mysqli_query("SELECT * FROM login WHERE username='".$user."'"); 
    $numrows=mysqli_num_rows($query); 
    if($numrows==0) 
    { 
    $sql="INSERT INTO login(username,password) VALUES('$user','$pass')"; 

    $result=mysqli_query($sql); 


    if($result){ 
    echo "Account Successfully Created"; 
    } else { 
    echo "Failure!"; 
    } 

    } else { 
    echo "That username already exists! Please try again with another."; 
    } 

} else { 
echo "All fields are required!"; 
} 
} 
?> 

</body> 
</html> 

数据库信息:

CREATE TABLE IF NOT EXISTS `login` (
    `username` varchar(200) NOT NULL, 
    `password` varchar(200) NOT NULL, 
    PRIMARY KEY (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8_general_ci; 
+4

你大开被黑客攻击 –

+2

再次阅读手册,你这样做是错误的 –

+2

你忘了把一个价值在你的action属性:'行动=“”'我想你想要将它发送到同一页面,所以我建议使用'action =“<?php echo htmlspecialchars($ _ SERVER [PHP_SELF]);我强烈推荐阅读Fred -ii-发布的手册,因为你的代码在其他方面是非常可行的。 – Webeng

回答

8

阅读以下两个手册:

这就是为什么你的代码失败。两者都需要db连接,并且作为第一个参数,它都在那里。

Plus,mysqli_error()还要求将db连接作为参数传递。

同时还要检查针对您的查询的错误;你没有那样做。

关于您的连接的旁注。

实际上,你可以摆脱mysqli_select_db()完全,只是使用全部4个参数在mysqli_connect()

例如,从手册:

$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); 

密码

我还注意到您可能以纯文本格式存储密码。这不被推荐。

使用下列之一:

有关列长度重要旁注:

如果当你决定使用password_hash()或兼容包(如PHP < 5。5)https://github.com/ircmaxell/password_compat/,重要的是要注意,如果你现在的密码列的长度是低于60的任何东西,它将需要被改变为(或更高)。本手册建议长度为255.

您需要更改列的长度,并使用新散列重新开始以使其生效。否则,MySQL将无声无息地失败。

关注其他链接:

+0

感谢您的提示!我会在这工作! – DDG

+0

@HLD不客气。 –

+0

这是一个推荐的密码系统列表,但'password_hash()'应该是#1,其余的只是“需要知道”的基础。这是唯一一个不需要大量专业知识就能可靠工作的人。 – tadman