PHP表单 - 检查mysql是否已包含电子邮件数据

时间:2013-06-26 16:23:30

标签: php mysql forms

这个注册表是由我制作的,但它没有做我想做的事。

我希望它连接到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。:我不是母语为英语的人,所以请忽略我的语法错误/错别字。

3 个答案:

答案 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)。

哦,使用它不需要额外的服务包。 :)