Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个登录功能是否安全?_Php_Oop - Fatal编程技术网

Php 这个登录功能是否安全?

Php 这个登录功能是否安全?,php,oop,Php,Oop,这个登录函数是否安全,我将url数据直接放入函数中,但这是否不安全?我知道它没有SQL,但它值得尊敬吗 if ($_SERVER["REQUEST_METHOD"] == "POST") { $login = check_login($_POST['emailusername'], $_POST['password']); if ($login) { // Registration Success header("location: /");

这个登录函数是否安全,我将url数据直接放入函数中,但这是否不安全?我知道它没有SQL,但它值得尊敬吗

if ($_SERVER["REQUEST_METHOD"] == "POST") {    
    $login = check_login($_POST['emailusername'], $_POST['password']);
    if ($login) {
        // Registration Success
       header("location: /");
    } else {
        // Registration Failed
        echo 'Username / password wrong';
    }
}
功能:

// CHECK LOGIN SCRIPT
   function check_login($emailusername, $password) 
    {

$host = 'localhost';
$port = 3306; // This is the default port for MySQL
$database = 'example';
$username1 = 'root';
$password1 = 'root';

$dsn = "mysql:host=$host;port=$port;dbname=$database";
$db = new PDO($dsn, $username1, $password1);

                $password = md5($password);


$statement = $db->prepare('SELECT uid FROM users WHERE (email = ? or username = ?) and password = ?');
$statement->execute(array($emailusername, $emailusername, $password));

if ($result = $statement->fetchObject()) {
    $_SESSION['login'] = true;
    $_SESSION['uid'] = $result->uid;
    return TRUE;
}else{
    return FALSE;
}    }

做一个好的认证系统并不是那么简单,我的朋友。这里有一些


如果你不确定,你不应该自己做决定。这就是所谓的反模式

我看不出有什么不安全的原因,但我建议你照办

取决于您的
检查登录功能。你能粘贴它吗?对不起,忘了你可能需要它,在中编辑了它。@Joshua Davis:只要你继续使用PDO,就不要担心SQL注入。@Shef你可能应该说用PDO绑定参数。您仍然可以使用PDO进行SQL注入。@alex:这就是我的意思。更明确地说,只要继续使用PDO准备带有绑定参数的语句,就不用担心SQL注入了!:)“检查登录名和密码”功能太简单,每个程序员都可以轻松编写。当然,使用现有的解决方案是好的,但这不仅仅是编程的一部分。