构建登录安全的PHP脚本

时间:2014-11-14 21:13:11

标签: php

因此,我正在尝试建立一个安全的主页,通过获取用户在登录页面上输入的文本并检查它们是否正确来检查您是否已登录(因此您不能只执行www.website。 com / home.php绕过登录)

<body onload="OpenPhp()">
<form name="GetLogin" action="GetIfLoggedIn.php">
</body>

脚本是:

<script>
function OpenPhp(){
document.GetLogin.submit();
}
</script>

php脚本应包含登录脚本中的用户名和密码vars并重新检查

<?php include "Login.php";
   if($Username === "*****" and $Password === "******"){

// Return To Page

}else{
   //Go Back To Login Page
}

?>

但是include语句使主页无法访问。每次我访问主页时,它都会将我发送回index.html页面。

有没有更好的方法来保护网页?如果是这样,请告诉我或解释为什么这不起作用,

2 个答案:

答案 0 :(得分:3)

为了保护网页,我鼓励您使用会话。

您使用一个脚本(让我们称之为login.php)以允许用户登录。如果登录正确,则将用户名存储为会话变量。

在您的安全页面中,您只需检查是否在会话中设置了用户名。

在所有脚本中,您需要执行session_start();以使$ _SESSION超全局变量可用。

要注销,您只需使用session_destroy();

销毁用户会话即可

<强>示例:

的login.php:

session_start();

function isValidLogin($username_, $password_)
{
  if($username_=='sam' && $password_=='secret')
    return true;
  return false;
}

if(isValidLogin($username, password))
{
  $_SESSION['username']=$username;
}

your_secured_pa​​ge.php:

session_start();

if(isset($_SESSION['username'))
{
  // display page
}
else
{
  // redirect to login.php
}

logout.php

session_destroy();

我找到另一个教程: http://www.formget.com/login-form-in-php/

答案 1 :(得分:0)

您可能想使用它。

   <!DOCTYPE html>
   <html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Fetch Array Trick</title>
</head>
<body>
    <?php
$con = mysqli_connect("localhost","root","","lesson") or die("Connection Not Established");
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $get=array("0"=>$username,"username"=>$username,'1'=>$password,"password"=>$password);
//Created an array above that matches username and password.
$lol = mysqli_query($con,"Select username,password from users");
    while($pre= mysqli_fetch_array($lol)){
        //Now we check if, while in the loop, any tuple matches
        if (($get == $pre)){
            echo '<h1><font color=green>Found</font></h1>';
            //Use JavaScript To Redirect or clear headers to use header("location: dashboard.php");
            exit;
        }
    }
    echo '<h1><font color=red>Not Found</font></h1>';
}
?>

<form action="" method="post">
<p><label for="u">Username</label><input type="text" name="username" id="u"></p>

<p><label for="password">Password</label><input type="password" name="password" id="password"></p>
<p><input type="submit" name="submit" value="Login" id="submit"></p>
</form>
</body>
</html>