让所有链接流经一个PHP文件继续实路径之前(如登录页面)

问题描述:

我有此脚本让所有链接流经一个PHP文件继续实路径之前(如登录页面)

<?php 
$username = "namey"; 
$password = "passy"; 
$salted = "salty"; 

if (isset($_COOKIE['Cookiename'])) {if ($_COOKIE['Cookiename'] == sha1($password.$salted)) { 
?> 
<body> 
<span> 
it works 
</span></body> 


<?php 
     exit;} 
     else { 
     echo "Bad Cookie, Baaad lol"; 
     exit;}} 

if (isset($_GET['auth']) && $_GET['auth'] == "login") { 
    if ($_POST['user'] != $username) { 
     echo "The Provided Username Was Not Correct."; 
     exit;} 
     else if ($_POST['keypass'] != $password) { 
     echo "The Provided Password Was Not Correct."; 
     exit;} 
     else if ($_POST['user'] == $username && $_POST['keypass'] == $password) { 
     setcookie('Cookiename', sha1($_POST['keypass'].$salted)); 
     header("Location: $_SERVER[PHP_SELF]");} 
     else { 
     echo "Something's wrong with the server.";}} 
?> 
<div> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?auth=login" method="post"> 
<label>Username<input type="text" name="user" id="user" /></label><br/> 
<label>Password<input type="password" name="keypass" id="keypass" /></label><br/> 
<input type="submit" id="submit" value="Login"/> 
</div> 
</form> 

&基本上我需要在网站上的每一个环节来虽然这里&看,如果用户登录后才允许他访问他所要求的任何页面。

我刚开始学习PHP &现在我很困惑,你在上面看到的代码是我在这里看到的这个网站

我GOOGLE了一种方式来做到这一点的一个代码,但没有结果

+0

那么,在PHP在页面的顶部,你可以添加一个指令,以验证用户是否登录('isset($ _ SESSION [“用户数据”])')如果它们不是,则使用'header('localtion:'+ url +'login.php')'将它们重定向到登录名。 – Nicolas

+0

您需要在您的所有页面中包含此脚本,并在可以呈现真实页面之前先使其运行,然后检查登录是否正确。如果您已经有一个标题脚本,只需将其包含在其中,那么它将自动包含在其他页面中。在运行之前,请确保您没有呈现_anything_到输出,否则“位置”标题无法工作。 – ADyson

您可以创建一个主要的php文件并添加一个检查来查看用户是否已登录。

并将主要的php文件包含在您要保护的每个脚本的顶部。

所以如果你创建了一个名为check.php

//add this to the created file check.php 
if (!isset($_COOKIE['loggedin']) && !$_COOKIE['loggedin']){ 
    header('Location: YOUR URL') 
    die(); 
} 

文件,加入setcookie('loggedin', true));

setcookie('Cookiename', sha1($_POST['keypass'].$salted));

,包括check.php在你的脚本的顶部。

希望这有助于:)

+0

感谢您的帮助伴侣,拿你的榜样,增强它,它的作品超级棒。 – Jaqen

如果你想页面验证登录,你会想要将这个文件包括在你需要认证的其他脚本的顶部。

另一种方法是使用PHP的auto_prepend_file以及...将它预先添加到网络中的每个文件或所需的子目录中。

我的回答

无论如何,我宁愿创建一个cookie来存储,如果用户已经登录,然后检查每一页,如果用户没有登录,重定向他对你的脚本发布。

事情是这样的:

// cookies() is a function to validate your cookies.. 
if (!cookies()) { 
    header('Location: YOUR_URL', true, 303; 
    die(); 
} 

检查this link关于PHP安全的重定向。

另一种选择是里面添加cookies()重定向代​​码,所以你会仅仅只包含文件,其中cookies()是,在你的脚本的顶部调用它。

+0

感谢队友花时间写这个,但我目前没有使用VPS的网站(太昂贵的笑声),我不能将自动补充添加到当前的计划,并且(!cookies)不被接受系统。 – Jaqen

+0

有什么vps与我的答案? – Condorcho

+0

大声笑我不知道,当你按下输入它保存评论(我仍然在努力):P,(但是,因为你问,php.ini不可用于编辑hostinger的虚拟主机,只有当你拥有一个网站vps)服务器,你可以编辑它) – Jaqen