有关于php的session突然失效的问题

经验技巧xjseo 发表了文章 • 0 个评论 • 3 次浏览 • 5 小时前 • 来自相关话题

造成这个问题的原因大致分两种,一种是服务端php配置造成的,比如服务端缓存目录无法写入或者磁盘空间不足,或者缓存目录不存在都可能造成session无法缓存;
 
还有一种情况是个别的客户端无法缓存session, 这就是个别用户的浏览器没有启用cookies造成的,因为客户端访问php网页的时候php会自动在客户端创建一个 PHPSESSIONID 的cookie 的值来作为客户端的唯一身份标识,进行session数据缓存,当客户端的cookie没有启用的时候session的功能也将受到限制! 查看全部
造成这个问题的原因大致分两种,一种是服务端php配置造成的,比如服务端缓存目录无法写入或者磁盘空间不足,或者缓存目录不存在都可能造成session无法缓存;
 
还有一种情况是个别的客户端无法缓存session, 这就是个别用户的浏览器没有启用cookies造成的,因为客户端访问php网页的时候php会自动在客户端创建一个 PHPSESSIONID 的cookie 的值来作为客户端的唯一身份标识,进行session数据缓存,当客户端的cookie没有启用的时候session的功能也将受到限制!

python Windows环境下文件路径问题

学习讨论xjseo 发表了文章 • 0 个评论 • 7 次浏览 • 9 小时前 • 来自相关话题

在python程序里面我们经常需要对文件进行操作,Windows下的文件目录路径使用反斜杠“\”来分隔。但是,和大多数语言一样,Python代码里面,反斜杠“\”是转义符,例如“\n”表示回车、“\t”表示制表符等等。这样,如果继续用windows习惯使用“\”表示文件路径,就会产生歧义。

例如

“c:\test.txt”这表示c盘根目录下的一个文件,还是表示一个字符串呢?因为“\t”也可以解释为制表符。如果让我们人来判断,这当然是一个很简单的问题。但是机器就无法做出正确的判断了,只有没有歧义的代码机器才会正确执行。

解决办法

采用下面任何一种书写形式均可:

使用斜杠“/”: 

"c:/test.txt"… 

不用反斜杠就没法产生歧义了

将反斜杠符号转义 

"c:\\test.txt" 

因为反斜杠是转义符,所以两个”\\“就表示一个反斜杠符号

使用Python的raw string 

r"c:\test.txt" 

python下在字符串前面加上字母r,表示后面是一个原始字符串raw string,不过raw string主要是为正则表达式而不是windows路径设计的,所以这种做法尽量少用,可能会出问题。 查看全部
在python程序里面我们经常需要对文件进行操作,Windows下的文件目录路径使用反斜杠“\”来分隔。但是,和大多数语言一样,Python代码里面,反斜杠“\”是转义符,例如“\n”表示回车、“\t”表示制表符等等。这样,如果继续用windows习惯使用“\”表示文件路径,就会产生歧义。

例如

“c:\test.txt”这表示c盘根目录下的一个文件,还是表示一个字符串呢?因为“\t”也可以解释为制表符。如果让我们人来判断,这当然是一个很简单的问题。但是机器就无法做出正确的判断了,只有没有歧义的代码机器才会正确执行。

解决办法

采用下面任何一种书写形式均可:

使用斜杠“/”: 


"c:/test.txt"… 


不用反斜杠就没法产生歧义了

将反斜杠符号转义 


"c:\\test.txt" 


因为反斜杠是转义符,所以两个”\\“就表示一个反斜杠符号

使用Python的raw string 


r"c:\test.txt" 


python下在字符串前面加上字母r,表示后面是一个原始字符串raw string,不过raw string主要是为正则表达式而不是windows路径设计的,所以这种做法尽量少用,可能会出问题。

python提示ImportError: No module named Image

学习讨论xjseo 发表了文章 • 0 个评论 • 6 次浏览 • 9 小时前 • 来自相关话题

 
问题:python提示ImportError: No module named Image
 
解决方案:
把import Image替换成"import PIL.Image",凡是用到Image的都修改成PIL.Image(前提你的安装pillow(PIL)) 查看全部
 
问题:python提示ImportError: No module named Image
 
解决方案:
把import Image替换成"import PIL.Image",凡是用到Image的都修改成PIL.Image(前提你的安装pillow(PIL))

TypeError: integer argument expected, got float

回复

学习讨论xjseo 发起了问题 • 1 人关注 • 0 个回复 • 9 次浏览 • 10 小时前 • 来自相关话题

mysql 数据库批量替换某个字段中的字符串

经验技巧xjseo 发表了文章 • 0 个评论 • 6 次浏览 • 10 小时前 • 来自相关话题

sql代码如下,请对号入座
$(document).ready(function() {$('pre code').each(function(i, block) { hljs.highlightBlock( block); }); });UPDATE `table1` SET `title` = replace(title, 'abc', '123') WHERE `typeid` =18;
sql代码如下,请对号入座
UPDATE `table1` SET `title` = replace(title, 'abc', '123') WHERE `typeid` =18;

分享一个经典的flash播放器的代码

代码分享xjseo 发表了文章 • 0 个评论 • 28 次浏览 • 4 天前 • 来自相关话题

效果图:




<object height="500" width="98%" codebase="http://download.macromedia.com ... n%3D7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param name="movie" value="/r/cms/flvplayer.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="FlashVars" value="vcastr_file=/jtz.file.cloudy/201803/16114212aeb0.flv&BufferTime=3" />
<embed height="500" width="98%" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" flashvars="vcastr_file=/jtz.file.cloudy/201803/16114212aeb0.flv" allowfullscreen="true" src="/r/cms/flvplayer.swf">
</embed>

</object>





 swf 为播放器文件,flv为视频文件自行修改相关路径即可 查看全部
效果图:

1531539717(1).jpg
<object height="500" width="98%" codebase="http://download.macromedia.com ... n%3D7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param name="movie" value="/r/cms/flvplayer.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="FlashVars" value="vcastr_file=/jtz.file.cloudy/201803/16114212aeb0.flv&BufferTime=3" />
<embed height="500" width="98%" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" flashvars="vcastr_file=/jtz.file.cloudy/201803/16114212aeb0.flv" allowfullscreen="true" src="/r/cms/flvplayer.swf">
</embed>

</object>





 swf 为播放器文件,flv为视频文件自行修改相关路径即可

宝塔(bt)面板linux contos7系统Nginx环境下http强制跳转https的设置方法

经验技巧xjseo 发表了文章 • 0 个评论 • 86 次浏览 • 2018-07-03 10:43 • 来自相关话题

contos系统nginx环境下默认配置文件
Nginx配置文件:

/etc/nginx/conf.d/*.conf
 
宝塔面板的设置地方是:网站-》设置-》配置文件
 
常见的301跳转设置方法:
 
一、if ($scheme = http ) {
return 301 https://$host$request_uri;
} 二、server_name xjyili.cn ;
rewrite ^(.*) https://xjyili.cn$1 permanent


三、if ($server_port = 80 ) {
return 301 https://$host$request_uri;
}

四、server_name xjyili.cn ;
return 301 https://$server_name$request_uri; 查看全部
contos系统nginx环境下默认配置文件
Nginx配置文件:

/etc/nginx/conf.d/*.conf
 
宝塔面板的设置地方是:网站-》设置-》配置文件
 
常见的301跳转设置方法:
 
一、
if ($scheme = http ) {
return 301 https://$host$request_uri;
}
二、
server_name xjyili.cn ;
rewrite ^(.*) https://xjyili.cn$1 permanent


三、
if ($server_port = 80 ) {
return 301 https://$host$request_uri;
}

四、
server_name xjyili.cn ;
return 301 https://$server_name$request_uri;

iis7.5 下的thinkphp5项目ajax报500错误但是有正确的返回值

经验技巧浅笑 回复了问题 • 2 人关注 • 1 个回复 • 85 次浏览 • 2018-06-28 18:59 • 来自相关话题

子域名分发,自有域名分发到同一模块实现方法

经验技巧xjseo 发表了文章 • 0 个评论 • 102 次浏览 • 2018-06-26 13:22 • 来自相关话题

子域名分发,自有域名分发到同一模块实现方法(大神勿喷)
后端绑定域名的方法就不写了很简单的curd
前端app\index\controller\base.php(公共控制器)
common.php
/**
* 获取连接中的主域名
* @param [type] $url [description]
* @return [type] 这个函数是根据链接获取连接中的顶级域名 返回值为string
*/
function get_domain($url){
$pattern = "/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";
preg_match($pattern, $url, $matches);
if(count($matches) > 0) {
return $matches[0];
}else{
$rs = parse_url($url);
$main_url = $rs["host"];
if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
return $main_url;
}else{
$arr = explode(".",$main_url);
$count=count($arr);
$endArr = array("com","net","org","3322");//com.cn net.cn 等情况
if (in_array($arr[$count-2],$endArr)){
$domain = $arr[$count-3].".".$arr[$count-2].".".$arr[$count-1];
}else{
$domain = $arr[$count-2].".".$arr[$count-1];
}
return $domain;
}// end if(!strcmp...)
}// end if(count...)
}// end还有什么不懂的欢迎下方留言或者QQ:644332569交流,本人博客:http://www.xjyili.cn 查看全部
子域名分发,自有域名分发到同一模块实现方法(大神勿喷)
后端绑定域名的方法就不写了很简单的curd
前端app\index\controller\base.php(公共控制器)

namespace app\index\controller;
use think\Controller;
use app\common\model\Amoy as AmoyModel;
/**
* Base
*/
class Base extends Controller
{

public $site_data = [];//当前店铺数据
public function _initialize()
{
if (input('__domain__') == null) {
//启用顶级域名处理
$domain = $this->request->domain();//获取当前的域名
//判断当前域名是否为系统根域名
if ((get_domain($domain) == config('url_domain_root')) == false) {
//当前域名为自有域名
//将域名进行处理
$domain = str_replace("http://","",$domain);//去除http://
//在数据库中查找当前域名
$data = AmoyModel::where(['status'=>1,'site_level_domain_status'=>1,'site_level_domain'=>$domain])->find();
//如果为空则返回错误信息
if (empty($data)) {
return $this->error('顶级域名所属的店铺不存在,或者状态异常');
}
}else{
//默认访问模式链接需要传site_id参数
$site_id = input('site_id/d');
$data = AmoyModel::where(['id'=>$site_id,'status'=>1])->find();
if (empty($data)) {
return $this->error('店铺不存在,或者状态异常');
}
}

//将店铺数据赋值给全局变量
$this->site_data = $data;
}else{
$this->_domain();//启用域名分发
}
//判断是否为移动端环境自动跳转移动端分组
if ($this->request->isMobile()==true) {
if (input('site_id/d')==0) {
return $this->redirect("mobile.index/index");
}else{
return $this->redirect("mobile.index/index",['site_id'=>input('site_id/d')]);
}
}
}
/**
* 二级域名分发处理
* @return [type] [description]
*/
protected function _domain(){
//获取二级域名
$site_domain = input('__domain__/s');
//汉字正则
$a=preg_match('/['.chr(0xa1).'-'.chr(0xff).']/', $site_domain);//是否有汉字
//数字正则
$b=preg_match('/[0-9]/', $site_domain);
//拼音正则
$c=preg_match('/[a-zA-Z]/', $site_domain);
//判断域名是否符合正则要求
if ($site_domain == '' || strlen($site_domain) < 3 || strlen($site_domain) > 12 || $a) {
//返回错误
return $this->error('域名信息有误');
}
//进数据库查询二级域名所属的信息
$data = AmoyModel::where(['site_domain'=>$site_domain,'status'=>1])->find();
if (empty($data)) {
//数据不存在返回错误
return $this->error('子域名所属的店铺不存在,或者状态异常');
}
//店铺数据赋值给全局变量
$this->site_data = $data;
}
}
?>
common.php
/**
* 获取连接中的主域名
* @param [type] $url [description]
* @return [type] 这个函数是根据链接获取连接中的顶级域名 返回值为string
*/
function get_domain($url){
$pattern = "/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";
preg_match($pattern, $url, $matches);
if(count($matches) > 0) {
return $matches[0];
}else{
$rs = parse_url($url);
$main_url = $rs["host"];
if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
return $main_url;
}else{
$arr = explode(".",$main_url);
$count=count($arr);
$endArr = array("com","net","org","3322");//com.cn net.cn 等情况
if (in_array($arr[$count-2],$endArr)){
$domain = $arr[$count-3].".".$arr[$count-2].".".$arr[$count-1];
}else{
$domain = $arr[$count-2].".".$arr[$count-1];
}
return $domain;
}// end if(!strcmp...)
}// end if(count...)
}// end
还有什么不懂的欢迎下方留言或者QQ:644332569交流,本人博客:http://www.xjyili.cn

HTML input 禁止浏览器缓存下拉历史值 autocomplete=off

经验技巧xjseo 发表了文章 • 0 个评论 • 316 次浏览 • 2018-04-26 11:09 • 来自相关话题

autocomplete 属性规定输入字段是否应该启用自动完成功能。

自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。

注释:autocomplete 属性适用于 <form>,以及下面的 <input> 类型:text, search, url, telephone, email, password, datepickers, range 以及 color。
 
<input type="text" name = "name" autocomplete="off" />

打开则为 on  查看全部
autocomplete 属性规定输入字段是否应该启用自动完成功能。

自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。

注释:autocomplete 属性适用于 <form>,以及下面的 <input> 类型:text, search, url, telephone, email, password, datepickers, range 以及 color。
 
<input type="text" name = "name" autocomplete="off" />  


打开则为 on