如何阻止直接访问我的php文件

时间:2013-10-30 18:42:37

标签: php redirect restrict

我有以下带有文件的文件:

index.html - > login.php - > displayinbox.php

login.php文件从数据库确认用户并重定向到displayinbox.php文件。

问题是,如果有人只是键入displayinbox.php页面的直接链接,则会运行页面中的脚本。

我怎样才能阻止这种情况发生?我尝试了'define'和'defined'方法,但这只适用于我猜的包含文件。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

使用会话值来跟踪用户是否已登录。如果!$_SESSION['whatever'],则将其重定向到索引/登录页面。

示例:

的login.php

session_start();
/* login code here */
$_SESSION['logged_in'] = true;

displayinbox.php

session_start();
if (!$_SESSION['logged_in']) {
    header("Location: login.php");
    exit;
}

答案 1 :(得分:0)

有很多方法可以做到这一点。在displayinbox.php和POST_SELF的顶部包含login.php或登录后,设置会话cookie并在displayinbox.php页面顶部检查。

答案 2 :(得分:0)

这是一个关于安全性的非常开放的问题,需要的不仅仅是这里可以提供的任何答案。在最简单的层面上,设置$_SESSION变量就是我要去的方式。

如果您正在使用MVC模式,请使用Secure_Controller所有需要密码访问权限的控制器进行扩展。如果不使用MVC甚至某种类型的模板,您将需要在每个要密码保护的页面中包含一个脚本。

的login.php

<?php
//check username and pw against the database
if($passwordAndUsername == 'good'){
    $_SESSION['loggedIn'] = 'yes';
}
?>

securityCheck.php

<?php
if($_SESSION['loggedIn'] != 'yes'){
    $message = 'you must log in to see this page.';
    header('location:login.php');
}
?>

在任何受密码保护的页面的开头包含securityCheck.php。