电子邮件验证错误

用户名

这是我关于stackoverflow的第一篇文章,我防止您英语说得不太好,但是我可以尝试弄清楚我的问题:)

我有一个PHP注册表格,并且有两个声明:

第一句话:例如,如果没有其他伪/电子邮件,请搜索我的表“ users”。

$request = $db->prepare("SELECT * FROM users WHERE USE_USERNAME = :username AND USE_EMAIL = :email AND USE_PASSWORD = :password");
$request->bindParam(':username', $username, PDO::PARAM_STR);
$request->bindParam(':email', $email, PDO::PARAM_STR);
$request->bindParam(':password', $password, PDO::PARAM_STR);
$request->execute();
var_dump($request);
while ($row = $request->fetchAll(PDO::FETCH_ASSOC)){
    if ($username == $row['USE_USERNAME']){ ...

第二句话:如果用户输入了良好的数据,我可以将输入插入数据库。

$request = $db->prepare("INSERT INTO users (USE_USERNAME, USE_EMAIL, USE_PASSWORD) VALUES (:username, :email, :password)");
            $request->bindParam(':username', $username, PDO::PARAM_STR);
            $request->bindParam(':email', $email, PDO::PARAM_STR);
            $request->bindParam(':password', $pass_hache, PDO::PARAM_STR);
            $request->execute();

我的问题 :

当我在输入中插入“ OR 1 = 1”时,我可以在数据库中插入相同的电子邮件地址。

我在这个网站上搜索了一个解决方案,并将这些行添加到我的数据库连接中:

    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

但是我的数据甚至会插入错误消息到我的PHP代码中(而while循环中有Javascript弹出窗口)。

我是一个初学者,我正在搜索类似的问题,但是如果您有答案,谢谢您的帮助:)

祝你今天过得愉快 :)

编辑:当我管理PHP中的错误时,我将向您解释:

while ($row = $request->fetchAll(PDO::FETCH_ASSOC)){
    if ($username == $row['USE_USERNAME']){
        ?>
        <script type="text/javascript">
            alert("Erreur#5 : Pseudonyme Faux !");  //Cas dans lequel les identifiants sont incorrects.
            document.location.href="subscribe.php";
        </script>
        <?php
        $error++;

这非常平庸,但是我有一个从$ 0开始的变量$ error,为了停止PHP脚本,我将其递增。

唯一的用户名和电子邮件有误。在我的prepare语句之前,我的错误起作用了,但是现在我想防止我的表单被SQL注入。

博洛夫斯基

这个问题有很多奇怪之处:

1-您应该使用类似http://php.net/manual/en/function.filter-var.php的输入来验证您的输入filter_var('[email protected]', FILTER_VALIDATE_EMAIL)

第二-关于电子邮件,您应该在数据库中放置一个唯一性约束,例如 ALTER TABLE user ADD UNIQUE unique_index_email (email);

3rd-您的查询仅在用户名和密码也相同的情况下返回电子邮件。您应该仅查询电子邮件。之类的东西,$request = $db->prepare("SELECT * FROM users WHERE USE_EMAIL = :email");因为这将确保如果1存在,它将被返回

第四-我强烈建议您不要在数据库中保留密码,而只是保留哈希值。您拥有可作为php libs使用的加密功能强大的libs,并且内置了一些可以解决问题的技巧

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJs电子邮件验证错误

来自分类Dev

电子邮件验证表单错误

来自分类Dev

如果我使用了多个电子邮件,请输入多个电子邮件验证错误

来自分类Dev

我如何获得无效电子邮件或电子邮件字段为空的验证错误?

来自分类Dev

我如何获得无效电子邮件或电子邮件字段为空的验证错误?

来自分类Dev

如果我使用了多个电子邮件,请输入多个电子邮件验证错误

来自分类Dev

加载电子邮件验证程序的错误消息

来自分类Dev

Laravel电子邮件验证显示错误消息

来自分类Dev

发送电子邮件时出现验证错误

来自分类Dev

值错误:太多值无法解包,电子邮件验证

来自分类Dev

JavaScript上的电子邮件验证功能错误

来自分类Dev

提交表单时的电子邮件值验证错误

来自分类Dev

发送带有流星的验证电子邮件导致错误

来自分类Dev

如何检查电子邮件验证?是什么错误?

来自分类Dev

即使验证错误,PHP也会发送电子邮件

来自分类Dev

角度电子邮件验证

来自分类Dev

电子邮件验证服务

来自分类Dev

全球电子邮件验证

来自分类Dev

姓名,电子邮件验证

来自分类Dev

Laravel:电子邮件验证

来自分类Dev

电子邮件验证服务

来自分类Dev

电子邮件模板验证

来自分类Dev

全球电子邮件验证

来自分类Dev

电子邮件验证php

来自分类Dev

电子邮件验证 | 查询

来自分类Dev

如果用户在单击“验证电子邮件”链接之前未登录,则电子邮件验证引发错误

来自分类Dev

jQuery验证电子邮件验证问题

来自分类Dev

Laravel错误:电子邮件

来自分类Dev

Powershell的电子邮件错误