[英]PHP & MYSQL: Register/Create an Account
我有用於注冊的代碼(也使用數據庫)。 當我在表單中輸入信息並提交時,什么也沒有發生。 任何幫助將非常感激! 謝謝。
-修復此問題后,我可以登錄!
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;
閱讀以下兩個方面的手冊:
mysqli_select_db()
=> http://php.net/manual/zh/mysqli.select-db.php mysqli_query()
=> http://php.net/manual/zh/mysqli.query.php 這就是您的代碼失敗的原因。 兩者都需要數據庫連接,並且作為第一個參數,它們都在其中。
另外, mysqli_error()
還要求將數據庫連接作為參數傳遞。
mysqli_error()
=> http://php.net/manual/zh/mysqli.error.php 同時還根據您的查詢檢查錯誤; 你沒有那樣做。
關於您的連接的旁注。
實際上,您可以完全擺脫mysqli_select_db()
,而只需在mysqli_connect()
使用所有4個參數:
手冊中的示例:
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
密碼
我還注意到您可能以純文本形式存儲密碼。 不建議這樣做。
使用以下之一:
password_hash()
函數。 有關列長的重要旁注:
如果並且當您決定使用password_hash()
或兼容性包(如果PHP <5.5) https://github.com/ircmaxell/password_compat/時 ,請務必注意,如果當前密碼列的長度小於60,它將需要更改為該值(或更高)。 手冊建議長度為255。
您將需要更改列的長度並以新的哈希值重新開始,以使其生效。 否則,MySQL將靜默失敗。
其他感興趣的鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.