CI注意的一些地方

1.URI 的第二段通常决定控制器的哪个方法被调用。CodeIgniter 允许你使用 _remap() 方法来重写该规则,会对当前控制器所有的方法有影响!
public function _remap($method)
{
if ($method === ‘some_method’)
{
$this->$method();
}
else
{
$this->default_method();
}
}
2.传递参数给视图:view(“view_name”,$data);
在视图直接引用数组元素. echo $title; //为$data对象中的元素

CI中定义Index控制器和index方法的错误

因为 类名称是index 而方法又是index,这样index函数就是php4中的构造函数,即实例化类时,直接执行这个函数而没有执行父类的构造函数,也就没有初始化CI核心类。所以会提示没有定义属性或方法了。
用index类名也可以,在
public function index() 方法前加上,调用父类的构造方法
public function construct()
{
parent::construct();
}
这个原理是:当类中同时存在php4和php5的构造函数时,只执行php5 的 __construct();。
当在index方法中加上 parent::construct()又会出现什么呢?
function index()
{
parent::construct();
$this->load->view(‘…….’);
}
重复执行了两次 index方法。第一次php4的构造函数,第二次CI的index方法。

大家可以试试!特在此写下以加深理解和记忆。

这是官方文档说明
控制器名称
因为你的控制器类将继承主程序控制器,所以你的方法命名一定不能和 主程序控制器类中的方法名相同,否则你的方法将会覆盖他们。 下面列出了已经保留的名称,请不要将你的控制器命名为这些:

CI_Controller
Default

index

一般建议使用Home/Index来代替首页,
修改默认控制器在,route.php中

表单提交方法有三种

表单提交方法有三种,主要说下第三种
第一种:用 form 自带属性action 提交
第二种:用 jquery 提交:$(“#formid”).submit();
第三种:用 ajax 提交:
但如果form表单中数据很多时,不可能一一列出,只需要用
$(‘#yourformid’).serialize()就可以了
举例如下:

$.ajax({
cache: true,
type: “POST”,
url: ajaxCallUrl,
data: $(‘#yourformid’).serialize(),// 你的formid
async: false,
error: function(request) {
alert(“Connection error”);
},
success: function(data) {
$(“#commonLayout_appcreshi”).parent().html(data);\
}
});

第四种,H5新对象FormData

中奖率的三种常用算法

1.全概率:简单来说有一个棋盘,按中奖率分别用奖品填满,然后随机抛一个球,砸中谁就是谁.比较合理的算法.
2.比较去除:比较区间,不在就去除相应概率.如果两个奖品概率相近,容易互相影响
3.权重:每个奖品对应一个概率,也就是对应一个初始权重,对每一个奖品算出(随机数*权重),然后比较大小,取最大的值.https://yq.aliyun.com/articles/51202

nginx泛域名解析实现二级域名多域名

利用nginx泛域名解析配置二级域名和多域名

1.二级域名对应不同的目录
网站的目录结构为
html
├── bbs
└── www

修改两行配置:

 server_name  ~^(?<subdomain>.+).yourdomain.com$;
 root   html/$subdomain; 

正则匹配,(?pattern),匹配的pattern,可以通过name变量访问


2.二级域名使用同一个目录,但不同的参数
使用泛解析,实现同一个项目,不同数据;商铺的不同域名的实现。

 server_name  ~^(?<subdomain>.+).trhuiwen.com$;
 root   "/var/www/test";
 location / {
            index  index.html index.htm index.php;
            rewrite ^(.*)$ /index.php?app=$subdomain last;
        }

3.因为已经获取到了二级域名,并用参数保存了,所以可以实现proxy_pass的不同代理。
也就是不同的商铺可以放在不同的服务器上。


注意:
已使用反向代理如何再使用二级域名的泛解析二级目录:
#####原:admin.com 和admin.com/agent
upsteam admin
{
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name admin.com;
location / {
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://admin/;
}
}

#####现:admin.com t agent.com
#####新增加如下配置
upsteam admin
{
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name agent.com;
location / {
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://admin/agent; #在proxy_pass后面直接添加二级目录名
}
}