如何阻止直接访问我的php文件
我有以下带有flow的文件: index.html->login.php->displayinbox.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页面的直接链接,页面中的脚本就会运行 我怎样才能阻
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