session跨域,相同服务器,不同域名。session互通调用方案。

同一服务器上有2域名:A、B

A下有c1.php页面。

<?php
	session_start();
	echo session_id();//ei3ddccd7gdjaj5ohq5g7rmvi6
	$_SESSION['cs']=1;
?>

B下有c2.php页面

<?php
	session_id("ei3ddccd7gdjaj5ohq5g7rmvi6");
	session_start();  	
	echo $_SESSION['cs'];
?>

 

提示:ei3ddccd7gdjaj5ohq5g7rmvi6 为A下c1.php的session_id的值。实际应用中可有多种传值方式。

 

tips:

tp5中:跨域,同服务器下,session互通写法,参考如下:

session_id(“ei3ddccd7gdjaj5ohq5g7rmvi6”);
session(“ss”,””);
//echo Session::get(‘username’)

徐多蔚亲测无误!

tp5获取session id的方式

方法一

先任一设置一个session值,然后获取session id

session(‘g’,”);//执行一次助手函数,session啥都可以,只要执行这个函数即可。
$session_id = session_id();
方法二

在文件\think\Session 中加一个函数

public static function sid(){
if (PHP_SESSION_ACTIVE != session_status()) {
session_start();
}
return session_id();
}

 

tp5如何调用多个数据库连接?

database.php数据内容里面 最下面追加如下:

//推广产品站数据库设置
	'sqla'=>[
			// 数据库类型
			'type'            => 'mysql',
			// 服务器地址
			'hostname'        => '127.0.0.1',
			// 数据库名
			'database'        => 'cbd2',
			// 用户名
			'username'        => 'root',
			// 密码
			'password'        => 'root',
			// 端口
			'hostport'        => '',
			// 连接dsn
			'dsn'             => '',
			// 数据库连接参数
			'params'          => [],
			// 数据库编码默认采用utf8
			'charset'         => 'utf8',
			// 数据库表前缀
			'prefix'          => 'cbd_',
			// 数据库调试模式
			'debug'           => true,
			// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
			'deploy'          => 0,
			// 数据库读写是否分离 主从式有效
			'rw_separate'     => false,
			// 读写分离后 主服务器数量
			'master_num'      => 1,
			// 指定从服务器序号
			'slave_no'        => '',
			// 是否严格检查字段是否存在
			'fields_strict'   => true,
			// 数据集返回类型
			'resultset_type'  => 'array',
			// 自动写入时间戳字段
			'auto_timestamp'  => false,
			// 时间字段取出后的默认时间格式
			'datetime_format' => 'Y-m-d H:i:s',
			// 是否需要进行SQL性能分析
			'sql_explain'     => false,
	
	]

 

调用方式【实例化链接】:

Db::connect(config(‘database.sqla’))->query();

//跨db的表实例化代替DB::name(‘pages’);
Db::connect(config(‘database.sqla’))->name(“pages”);

json_decode 把数组转成对象了

对json_decode解析完josn数组的时候变成了  object 对象

<?php
$json = ‘{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>

上例将输出:

object(stdClass)#1 (5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}

array(5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}
可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode(“$arr”,true)是把它强制生成PHP关联数组.

SVN文件夹权限分配

编辑代码库 arm\conf\svnserve.conf 文件。如下加粗的文件中配置的就是分组的设置和对应的分组权限哦。

password-db = passwd.conf
anon-access = none
auth-access = write
authz-db = authz.conf

=============================================

比如,有一个库project1,位于D:\svn\project1 
使用以下命令启动svnserve

若svn启动项是:svnserve -d -r D:\svn\project1    

在这种情况下,一个svnserve只能为一个版本库工作 

则应该配置成 

[groups] 
admin=user1   #组名=用户名
dev=user2 
[/]                   #根目录
@admin=rw   #可读写
@doc=r         #只读

 

=========================================

若启动项是:svnserve -d -r D:\svn 

这种情况,一个svnserve可以为多个版本库工作, 
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样 

[groups] 
admin=user1 
dev=user2 
[project1:/] 
@admin=rw 
@doc=r 

如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录 
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1 
这样的URL:svn://192.168.0.1/project2 即可访问project2

亲测有效!xuduowei.com

参考借鉴:https://kowen.iteye.com/blog/354443

mysql-blog类型

BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric
Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。

mysql BLOB类型

MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
  Blob 最大 65K
  MediumBlob 最大 16M
  LongBlob 最大 4G

如果要插入大数据量,需要修改mysql的配置文件【linux修改etc/my.cnf】:
[mysqld]
max_allowed_packet = 16M

将max_allowed_packet改成合适的值,具体此变量的解释请参照:http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

Ajax中return false无效

onSubmit="return checkForm();" 方法中:

在ajax里直接写return false,是无效的。

因为它返回的是ajax中的success方法,而不是checkForm()。

因此可以设置一个全局变量用来做判断,实现停止的效果。

注意:ajax一定要是同步的。

<script>

    function checkForm(){
        var cname = $("#cname").val();
        var randomSms = $("#randomSms").val();
        n = false;//全局变量,以便下面做判断
        $.ajax({
            type: "POST",
            url: "/1/mobile/jsCode",
            data: {cname:cname,randomSms:randomSms},
            dataType: "json",
            async: false,//一定要是同步请求,否则会跳转;(ajax默认是异步的)
            success: function(obj){
                if (obj['error'] == '1') {
                    alert(obj['message']);

                } else {
                    n = true;
                    alert(obj['message']);

                }
            }
        });
    //全局判断
        if(n) {
             return true;
        }else{
            return false;
        }
    }


</script>


总结:
重要的两个点:异步请求  +  全局变量的判断

 

为啥影楼里大多摄影师水平都很”烂”?

客户要求烂俗,人家也只能满足客户的需求。
当然你觉得自己不烂俗,也可以要求人家出不烂的片子。

市场决定的
影楼拍非洲儿童会憋死
国家地理拍妹子会被骂死
各有市场,各有活路。

我说句公道话吧,并非影楼摄影师水平烂,根本原因是大众的审美水平烂。
用户是上帝,用户喜欢的就是好的,大平光,大白脸,死黑死白硬反差抢眼球,搞怪色彩显示与众不同——这些都是大众追求的,摄影师只是满足需求而已。切不可以国家地理的要求衡量影楼摄影师!好吧,就算你技术无懈可击,色彩还原无丝毫偏色,高光阴影质感层次无一不精准到位,但老百姓喜欢你这种片子么?为什么别人的大白脸我没有?为什么我脸上的痘痘不去掉?为什么我就不能拥有别人那样“漂亮”的色彩?……于是你就死定了!

centos系统,yum指令安装apm【LAMP/LNMP】+SVN

yum命令安装apm

建议先关闭防火墙:

方法一(重启后永久性生效):
开启:chkconfig iptables on
关闭:chkconfig iptables off

即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop

安装apache:======================
yum install httpd

设置随系统启动:
chkconfig –levels 235 httpd on

配置完毕,启动apache:
/etc/init.d/httpd start

安装php:=================
yum install php
重新启动apache服务
/etc/init.d/httpd restart

安装mysql:================
yum -y install mysql-server

设置开机启动:
chkconfig mysqld on

启动mysql服务:
service mysqld start

设置root密码(默认是空的):

mysql -u root -p
root
()
mysql>set password for root@localhost=password(‘root’)
>\r
mysql>set password for root@localhost=password(‘root’);

 

 

SVN的方式:

默认centos 6.x /7.x 没有安装svn客户端:

如何安装?
yum install svn

svn checkout svn://192.168.8.3 svn co /www/wwwroot/192.168.8.6/