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


How to block direct access to my php file

我有以下带有flow的文件:

索引.html ->登录.php ->显示收件箱.php

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

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

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

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

例:

登录.php

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

显示收件箱.php

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

有很多方法可以做到这一点。 在显示收件箱顶部包括登录.php.php POST_SELF或登录后,设置会话cookie并在显示收件箱.php页面顶部检查。

这是一个关于安全性的非常开放的问题,需要的比这里任何答案都多。 在最简单的层面上,设置$_SESSION变量是我会走的路。

如果使用的是 MVC 模式,请使用一个Secure_Controller,所有需要密码访问才能从中扩展的控制器。如果不使用 MVC 甚至某种类型的模板,您将必须在您希望密码保护的每个页面中包含一个脚本。

登录.php

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

安全检查.php

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

在任何受密码保护的页面的开头包括安全检查.php。