检查数据库插入的表单值的正确方法

时间:2014-07-11 23:38:53

标签: php

我正在尝试为我的网站创建用户注册脚本,虽然我当前的代码有效,但我想知道语法是否正确,以及是否需要进行修改以增加安全,避免错误。

我的注册表单有多个字段,其中一些字段不能为空(例如电子邮件和密码),其中一些字段可能为空(例如,birthdate)。每个字段都有jquery /客户端验证,并且在设置必填字段之前无法提交表单。在检查注册表格是否已提交后,我将信息保存在不同的变量中,如下所示:

$email=isset($_POST['email']) ? $database->escape($_POST['email']) : "";
$birthdate=isset($_POST['birthdate']) ? $database->escape($_POST['birthdate']) : "";

我知道我需要在保存之前转义信息,这就是转义函数在这种情况下的作用,但除此之外,我想知道我的方法/逻辑是否错误?

我是否应该检查每个字段的isset和empty,或者我应该对可以为null的字段和那些无法使用的字段采用不同的方法。例如:

$email=isset($_POST['email'])&&!empty($_POST['email']) ? $database->escape($_POST['email']) : "";

或者正在检查!在这种情况下是否足够空?

$email=!empty($_POST['email']) ? $database->escape($_POST['email']) : "";

在sql插入之前,我检查是否(空($ email))在哪种情况下注册没有通过,所以我很困惑,如果我确实需要两个isset首次检索信息并将其保存到变量时进行空检查。

感谢您提供有关此主题的任何帮助/建议。我毕业于2年前,主要从事前端网页设计工作,在过去的两年里,我在学校里学习了php和mysql,但是在我的笔记或练习文件中没有提到isset来检查是否收到了值,他们都保存帖子或直接到变量,并没有提到mysqli或pdo,只是我知道已被弃用的mysql(显然在他们甚至认为我之前有警告这种情况发生)。看起来我的老师都支持这种做法,我在过去的几天里学到了很多关于php和mysqli的知识,只是在这个项目上工作时,我仍然对许多事情感到困惑,尽管我认为我和#39; m得到了它。

2 个答案:

答案 0 :(得分:1)

您必须仅对必填字段使用empty(),然后转义所有字段。不要忘记哈希密码!

答案 1 :(得分:0)

如果使用isset并创建注册:

    <?php
    $login = $_POST['login'];
    $pass = $_POST['pass'];
    $pass2 = $_POST['pass2'];
    $age = $_POST['age'];


        if(isset($login)){
        if(!empty($login) AND !empty($pass) AND !empty($pass2) AND !empty($age) AND $pass == $pass2){

        // Check lenght of variables...
        // AND Check login in base (1 login == 1 account) :D
        } else {
echo "Please check empty variables!";
}
        }
    ?>

祝你好运!