2016-08-14 2 views
-2

사용자가 자신의 전자 메일 주소와 암호를 입력하는 PHP에서 쿼리를 작성하고 데이터베이스에서 일치하는 전자 메일과 암호 인 경우 데이터베이스에서 행을 검색해야합니다. 어떻게해야합니까? 사용자 이름 또는 암호가 올바르지 않은 경우 그에 따라 메시지를 인쇄해야합니다.전자 메일 암호 조건을 사용하여 데이터베이스에서 레코드를 검색하려면 어떻게합니까?

+1

게시물이 너무 넓어서 닫아야합니다. – Ivan

답변

-1

나는 의사 코드에 다음과 같이 갈 것이다 다음 authentication() 기능은 암호로 이메일을 비교

if(authentication(email, password)) { 
    phpQuery(); 
} else { 
    alert(); 
} 

액세스 권한을 부여 할 수 있습니다.

0

암호를 데이터베이스에 일반 텍스트로 저장하면 안됩니다. 암호 해시에 대해 읽어보십시오.

간단한 예 :

function passwordHash($username, $password){ 
    $hash = $password; 
    for($i = 0; $i < 10000; $i++){ 
     $hash = md5($hash . $username); // we use username as salt 
    } 
    return $hash; 
} 

$username = mysqli_real_escape_string($_POST['username']); 
$hash = passwordHash($username, $_POST['password']); 

$sql = "SELECT * FROM `users` WHERE username='$username' and password='$hash'"; 
$query = mysqli_query($sql); 
if(mysqli_num_rows($query) != 0){ 
    // successfull login 
}else{ 
    // login failed 
} 

물론 동일한 해시 함수를 사용하여 양식을 가입해야한다. 또한 mysql 연결을 초기화하지 않았다.

+0

MD5를 사용해서는 안됩니다. http://security.stackexchange.com/questions/19906/is-md5-considered-insecure PHP는 그 일을하는 자체의 기능을 가지고 있습니다. – Ivan

+0

준비된 문장을 사용하십시오! SQL 인젝션에 대해 읽어보십시오 : http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Ivan

+0

얘들 아, 나는 가장 간단한 보안 솔루션을 썼다. md5의 반복을 10000 회 사용하고 mysqli_real_escape_string을 사용했음을 주목하십시오. – Reptile

관련 문제