这个注册表是由我制作的,但它没有做我想做的事。
我希望它连接到mysql数据库并存储表单给出的信息。我希望它在md5中散列$password
并将其存储在“gebruikers”表中。请不要回复“该死的,你不知道你在做什么”或类似的东西。我通过查看示例和后续教程来学习PHP。请记住,mysql插入代码没有填写正确,因为我被困在上面几行。
所以,我的问题是:我想检查mysql表是否已包含$email
。如果它已经在mysql表中,我想显示一条错误消息,我可以把它放在我的PHP页面的其他地方。如果给出的电子邮件地址是唯一的,那么$password
应该散列到md5并存储到mysql数据库中,就像其他表单条目一样。
我该怎么做?
<?php
// Fetching all the form details
$email = $_POST["email"];
$password = $_POST["password"];
$voornaam = $_POST["voornaam"];
$tussenvoegsel = $_POST["tussenvoegsel"];
$achternaam = $_POST["achternaam"];
$dag = $_POST["dag"];
$maand = $_POST["maand"];
$jaar = $_POST["voornaam"];
$straat = $_POST["straat"];
$postcode = $_POST["postcode"];
$woonplaats = $_POST["woonplaats"];
$cniveau = $_POST["cniveau"];
$oniveau = $_POST["oniveau"];
$voornaam = $_POST["voornaam"];
$aboutme = $_POST["aboutme"];
//Here's where I don't know how to continue
$check = mysql_query("SELECT * FROM `gebruikers` WHERE `email` = '$email'");
if($check === FALSE) {
//there is a user already registered
echo("$email is al in gebruik. <a href='login.php'>Inloggen</a>?");
} else {
//There isn't a username
//mysql_query("INSERT INTO `user` (`id` ,`username` ,`password`) VALUES (NULL , '{$_POST['email']}', MD5( '{$_POST['password']}' ))");
echo("You have been registered!");
}
P.S。:我不是母语为英语的人,所以请忽略我的语法错误/错别字。
答案 0 :(得分:2)
首先,你犯了一个重大错误:有一个SQL注入安全漏洞。 请阅读:http://php.net/manual/en/security.database.sql-injection.php 其次,你应该使用mysqli而不是mysql,因为不推荐使用mysql。
您的错误是SQL只在查询无效时返回false,而不是在没有结果时返回。因此,检查是否有结果的正确方法是使用http://php.net/manual/en/mysqli-result.num-rows.php
答案 1 :(得分:0)
$result = mysql_query("SELECT * FROM `gebruikers` WHERE `email` = '$email' LIMIT 1");
if(mysql_fetch_array($result) !== false)
{
...
} else {
....
}
您还应该阅读有关防止SQL注入的信息。
答案 2 :(得分:0)
也许您忘了设置mysql_connect
声明。
但我强烈建议您从现在开始使用mysqli_
功能,因为正如Aragon0所说,在PHP的最新版本中不推荐使用mysql。
此外,mysqli语句比mysql语句简单,例如,您使用一个语句(mysqli_connect
)连接到您的主机并同时选择您的数据库,而不是使用分隔语句({mysql_connect
1}}和mysql_select_db
)。
哦,使用它不需要额外的服务包。 :)