本文目录一览:
Thinkphp5防止某个IP多次登录的方法
//昨天写的思路不对,重新写....
/**
*检查IP是否重复登录多次
*/
public function check_ip(){
//获取ip
$login_ip=$_SERVER["REMOTE_ADDR"];
$login_time=date("Y-m-d",time());
if(Cache::get('cache_login_data')==false){
//如果ip换成为false,那么创建一个缓存,并赋值第一个
$login_data[0]=['login_ip'=$login_ip,'login_time'=$login_time];
Cache::set('cache_login_data',$login_data);
}else{
//如果有cache,那么将这条数据加入到缓存中最后一条去
$cache_login_data=Cache::get('cache_login_data');
$count=0;
foreach($cache_login_dataas$k=$v){
//如果当前缓存中的值含有当前ip和时间,那么计算当前时间内登录次数
if($v['login_time']==$login_time$v['login_ip']==$login_ip){
$count++;
if($count10){
//当前ip登录超过10次
$this-error("你登录超过了10次,请不要再来登了...","Login/index");
}else{
//当前时间内有该IP登陆过,但是没有超过10次
$cache_login_data[count($cache_login_data)+1]=['login_ip'=$login_ip,'login_time'=$login_time];
Cache::set('cache_login_data',$cache_login_data);
}
}else{
//当前时间内,该IP没有登陆过
$cache_login_data[count($cache_login_data)+1]=['login_ip'=$login_ip,'login_time'=$login_time];
Cache::set('cache_login_data',$cache_login_data);
}
}
}
}
thinkphp怎么部署到ubuntu
1、开启服务
部分必需使用服务没有默认开启,必需开启后才能正常使用Thinkphp sae引擎,使网站正常工作。必需服务:MySql服务,用于mysql数据库存储数据、Strorage服务,用于存储上传文件、Memcache服务,用于存储Thinkphp 缓存、KVDB,用于存储键值数据。根据网站需要开启相关服务,以上为常见的sae服务。-thinkphp5屏蔽方法
2、缓存清除
如果开启了调试输出trace,然后关闭了,但是网页还是显示trace信息,需要把网站的缓存数据删除后生效,点击Memcache服务,Memcache状态下选择清空即可,如果没有在sae上部署则是直接删除相关缓存文件。-thinkphp5屏蔽方法
3、原生sae服务
由于sae提供原生服务不能与其他环境兼容,为使网站移植性更好,应该尽量少直接使用原生服务,可以选择使用Thinkphp中相应的方法来实现。sae禁止本地IO,所有直接操作本地IO的函数都失效,需要使用sae其他服务来实现,这点一定要注意。-thinkphp5屏蔽方法
4、代码上传
可以直接上传代码包到sae上,可以使用svn来上传代码
5、屏蔽index.php
在代码根目录下的config.yaml中加入以下代码即可
handle:
- rewrite: if(!is_dir() !is_file() path~"^(.*)$") goto "index.php/$1"
thinkphp屏蔽目录问题
需要禁止服务器的目录浏览功能,如果是Apache:
1、找到安装目录下/conf/httpd.conf文件
2、找到你的网站所在的目录部分,例如(根据你的情况而定)
Directory "C:/Program Files/Apache2.2/htdocs"
/Directory
在Options Indexes FollowSymLinks在Indexes前面加上 - ,即: Options -Indexes FollowSymLinks
在Indexes前,加 + 代表允许目录浏览;加 - 代表禁止目录浏览。
注:若把“Allow from all”改成 “Deny from all”,整个网站都不能被打开