2011-08-18 101 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

「檢查登錄名和密碼」功能太簡單了,每個程序員都可以輕鬆寫出來。當然,使用現有的解決方案是很好的,但它不僅是編程的一部分。 –