0

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

我希望它连接到 mysql 数据库并存储表单提供的信息。我希望它$password在 md5 中散列并将其存储在“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!"); 
                            } 

PS:我不是以英语为母语的人,所以请忽略我的语法错误/错别字。

4

3 回答 3

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

于 2013-06-26T16:27:24.997 回答
0

也许你忘了设置mysql_connect语句。

但我强烈建议您从现在开始坚持使用该mysqli_功能,因为正如 Aragon0 所说,mysql 在 PHP 的最新版本中已被弃用。

此外,mysqli 语句比 mysql 语句更简单,例如您使用一个语句 ( mysqli_connect) 连接到您的主机并同时选择您的数据库,而不是使用单独的语句 (both mysql_connectand mysql_select_db)。

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

于 2013-06-26T16:50:23.063 回答
0
$result = mysql_query("SELECT * FROM `gebruikers` WHERE `email` = '$email' LIMIT 1");

if(mysql_fetch_array($result) !== false)
{
    ...
} else { 
    ....
} 

您还应该阅读有关防止 SQL 注入的内容。

于 2013-06-26T16:29:24.543 回答