<?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>
我遇到登录和退出的问题。会话正在维护,但它仍然以错误的细节登录。我使用哈希和salt来加密密码,然后将其存储在变量apple
中。抱歉我的压痕很差;我是PHP的新手。登录后,我的脚本将执行三个功能 - 一切正常,但注销也失败。
我坚持这个,我需要提交一个已经过期的项目,所以任何帮助都将非常感谢!
答案 0 :(得分:0)
您可以使用错误的凭据登录,因为PHP不会在单引号字符串中扩展变量。你需要使用:
hash("ripemd128", "$salt$pas");
或
hash("ripemd128", $salt.$pas);
ETA注销: 您的html包含一个链接到单独脚本(logout.php)的按钮。您需要将会话ID传递给该文件(阅读更多here),并销毁会话。
如果$ _SESSION [“user”] =“null”; ...您发布的代码中的...应该将用户注销。它没有。当提供正确的密码并且根本没有连接到按钮时,我会被执行。
在注销脚本工作之后,您可以而且应该考虑CSRF,但我认为这是以后的想法。