2017-02-12 2 views
0
<?php 
    session_start();  
?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
$user='hassan'; 
$apple ="6217c55b626e7477b972034993b40a29"; 
$salt="231**6"; 
$uname= $_POST["uname"]; 
$pas= $_POST["psw"]; 
$token1= hash("ripemd128", '$salt$pas'); 
if($token1===$apple && $user===$uname) 
{ 
    $_SESSION["user"]= $user; 
    echo $_SESSION["user"]; 
    if ($_SESSION["user"] == $user && $token1===$apple) 
    { 
    echo "Welcome ".$_SESSION["user"]; 
    } 
?> 
<h1>you are logged in</h1> 
<form action="inbox.php" class="boxed" style ="border: 4px solid black ; text-align: center; method="post"> 
<h1><b>Check inbox :</b></h1> 
<input type="submit" class="button" value="Inbox" style =" background-color: grey; 
    border: none; 
    color: white; 
    padding: 15px 70px; 
    margin: 15px 0px; 
    cursor: pointer;"><br><br> 
</form> 

    <form action="add.php"class="boxed" style ="border: 4px solid black ; text-align: center; method="post"> 
<h1><b>ADD propert :</b></h1> 
<input type="submit" value="ADD" style =" background-color: grey; 
    border: none; 
    color: white; 
    padding: 15px 70px; 
    margin: 15px 0px; 
    cursor: pointer;"> 
</form> 

<form action="logout.php" class="boxed" style ="border: 4px solid black ; text-align: center; method="post"> 
<h1>logout here</h1> 
<input type="submit" class="button" value="Logout" style =" background-color: grey; 
    border: none; 
    color: white; 
    padding: 15px 70px; 
    margin: 15px 0px; 
    cursor: pointer;"> 

</form> 

<?php 

$_SESSION["user"]= "null"; 
$token=null; 
$user=null; 
    } 
    else 
    { 
?> 
<h1>You entered wrong details please enter again</h1> 
<a href="admin.html">try again</a> 

<?php 
    } 
    ?> 
</body> 
</html> 

로그인 및 로그 아웃에 문제가 있습니다. 세션은 유지 보수 중이지만 여전히 잘못된 세부 사항을 기록합니다. 해시와 소금을 모두 사용하여 암호를 암호화 한 다음 변수 apple에 저장했습니다. 내 가난한 들여 쓰기 죄송합니다. 나는 PHP를 처음 사용합니다. 로그인하면 내 스크립트는 세 가지 기능을 수행합니다. 모두 작동하지만 로그 아웃도 실패합니다.로그인/로그 아웃이 제대로 작동하지 않습니다.

저는이 문제에 봉착했습니다. 이미 이미 기한이 지난 프로젝트에이를 제출해야하므로 도움이 될 것입니다.

+0

잘못된 세부 정보로 어떻게 로그인 할 수 있습니까? 이 코드는 한 사용자에 대해서만 설정되어 있습니다. – Rager

답변

0

PHP는 작은 따옴표로 묶은 문자열의 변수를 확장하지 않으므로 잘못된 자격 증명으로 로그인 할 수 있습니다.

hash("ripemd128", "$salt$pas"); 

또는

hash("ripemd128", $salt.$pas); 

간단한 예

: https://3v4l.org/mu9Pm

ETA의 로그 아웃 : 귀하의 HTML은 별도의 스크립트 (logout.php)에 연결된 버튼을 포함 당신은 사용해야합니다. 세션 ID를 해당 파일에 전달해야하며 (자세한 내용은 here 참조) 세션을 삭제해야합니다.

게시 한 코드의 $ _SESSION [ "user"] = "null";은 사용자를 로그 아웃해야합니다. 그렇지 않습니다. 올바른 pwd가 제공되고 버튼에 전혀 연결되어 있지 않으면 실행됩니다.

로그 아웃 스크립트가 작동하면 CSRF에 대해 생각해 볼 수 있지만 나중에 생각할 것입니다.

+0

네, 로그 아웃을 권유합니다. –

+0

도움을 주셔서 감사 드리며, 로그 아웃시에도 세션을 끝낼 수있는 방법을 제안하십시오! –

+0

로그 아웃이 작동하지 않습니다. –

관련 문제