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

如何阻止直接访问我的php文件,php,redirect,restrict,Php,Redirect,Restrict,我有以下带有flow的文件: index.html->login.php->displayinbox.php session_start(); if (!$_SESSION['logged_in']) { header("Location: login.php"); exit; } login.php文件从数据库确认用户,并重定向到displayinbox.php文件 问题是,如果有人只是键入指向displayinbox.php页面的直接链接,页面中的脚本就会运行 我怎样才能阻

我有以下带有flow的文件:

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

session_start();
if (!$_SESSION['logged_in']) {
    header("Location: login.php");
    exit;
}
login.php文件从数据库确认用户,并重定向到displayinbox.php文件

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


我怎样才能阻止这种事情发生?我尝试了“define”和“defined”方法,但我想这只适用于包含的文件。有任何帮助吗?

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

例如:

login.php

session_start();
/* login code here */
$_SESSION['logged_in'] = true;
<?php
//check username and pw against the database
if($passwordAndUsername == 'good'){
    $_SESSION['loggedIn'] = 'yes';
}
?>
displayinbox.php

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

有很多方法可以做到这一点。将login.php放在displayinbox.php的顶部,发布SELF或登录后,设置会话cookies并在displayinbox.php页面的顶部进行检查。

这是一个关于安全性的非常开放的问题,需要的不仅仅是这里的任何答案。在最简单的层面上,设置一个
$\u SESSION
变量是我的方法

如果您使用的是MVC模式,请使用一个
Secure\u控制器
,所有需要密码访问的控制器都可以从该控制器扩展。如果不使用MVC,甚至不使用某种类型的模板,您将需要在每个需要密码保护的页面中包含一个脚本

login.php

session_start();
/* login code here */
$_SESSION['logged_in'] = true;
<?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。

在login.php中设置允许/不允许用户的会话值。如果有人直接点击显示脚本,他们将没有该会话值,您可以拒绝他们访问。您能给我举个例子吗?a抛出了一个基本会话示例即使我在登录页面上设置会话变量,displayinbox.php页面仍然无法捕获会话变量,认为它没有设置,并一直将我重定向到login.php