php中,如何让一个目录不能直接访问?谢谢!

david_albert 2019-04-18 11:01:38
大家好,想让一个网站的目录:/administrator不能直接访问,比如要访问:http://www.123.com/administrator ,提示不能直接访问。有什么好的方法么?

在网上查了一下,先做一个入口文件

1,入口文件:myadmin.php(文件名可随时更改)


源码如下:

代码如下:
<?php
session_name( "Zjmainstay" ); //session 名可更改,注意对应
session_start();
$_SESSION['admin_user'] = "Y"; //session 变量名可更改,注意对应
session_write_close();
?>
<meta http-equiv="refresh" content="0;url=http://www.youdomain.com/administrator/">

2,修改后台入口文件:/administrator/index.php(可以是任意CMS的入口文件开头)

 利用session控制进入。

源码如下:


define('_JEXEC', 1); //原文件Line 9
define('DS', DIRECTORY_SEPARATOR); //原文件Line 10

// Add
session_name( "Zjmainstay" );
session_start();
$ok_to_browse = ( $_SESSION['admin_user'] == "Y" );
if (!$ok_to_browse ) {
header("Content-type: text/html; charset=utf-8");
exit('拒绝非法访问!');
}else{
$_SESSION['admin_user'] = "Y"; //延续session的使用
session_write_close();
}
// Add End
以上就是简单的方法让你的后台登录更加安全(php中加session验证)的内容。


上面的$ok_to_browse 是什么意思,这么用怎么没有作用,请高人给点解一下!



但实际实验了好久,发现不起作用,PHP版本是5.3.3,LINUX系统, 后台是JOOMLA,有大佬能给指点一下么,谢谢了!

...全文
666 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yt_php 2019-05-01
  • 打赏
  • 举报
回复
太复杂了 这应该是apache和nginx干的事情
y_w_x_k 2019-04-26
  • 打赏
  • 举报
回复
在那个目录下面建个.htacess文件,可以看看这个 https://blog.csdn.net/myweishanli/article/details/23176465
david_albert 2019-04-18
  • 打赏
  • 举报
回复
回二楼的朋友,就是这个意思,弄成,直接:网址/administrator,不能访问。通过 myadmin.php访问:网址/administrator,

就是那上面代码操作后,网址/administrator还是可以打开,重启浏览器,没有效果。上面代码有问题么?


下雨的声音丶 2019-04-18
  • 打赏
  • 举报
回复
/administrator不能直接访问 你想怎么访问? 你上面的代码的意思 是 必须先访问 myadmin.php 设置了一个session admin_user 然后index.php 读取session 的 admin_user 必须等于 myadmin.php 这里设置的值 才能访问 $ok_to_browse 这个就是判断设置的session 值 不生效你可以清楚一下缓存,或者重启一下浏览器

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧