2011-08-18 121 views
3

这个登录函数是否安全,我把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; 
} } 
+1

取决于你的'check_login'函数。你能粘贴它吗? – Nemoden

+0

抱歉,忘记了您可能需要编辑它。 –

+1

@Joshua Davis:只要您继续使用PDO,不用担心SQL注入。 – Shef

回答

-1

有一个良好的认证系统不是那么简单的,我的朋友。这里有一些'first steps'

如果你不确定,你不应该自己做。它的反模式叫做'reinventing the square wheel'

+0

这不是回答我的问题。 –

+0

“检查登录名和密码”功能太简单了,每个程序员都可以轻松写出来。当然,使用现有的解决方案是很好的,但它不仅是编程的一部分。 –