Cakephp 笔记
1. 自定义 layout
在 cakephp 中 layout 默认指向 /app/views/layouts/default.thtml
如果要自定义 layout,需要在 controller 中定义:
var $layout = 'mydefault';
layout 则指向了 /app/views/layouts/mydefault.thtml
2. 创建不使用数据库表的 model 或者改变 model 对应的表名
我需要创建一个不使用任何表的model。例如,我想通过 $validate 数组方便底验证输入数据,保持model逻辑的正确性。但创建 model 时对应的表不存在,CakePHP 就会报错。通过在 model 中加入以下代码可以解决这个问题:
var $useTable = false;
你也可以通过这种方法改变model对应的表名。
var $useTable = 'some_table';
3. 快速创建后台管理
如果你需要创建后台管理程序,并且希望所有管理action都位于某个特定文件夹下,那么打开 config/core.php 并将下面这一行的注释去掉:
define('CAKE_ADMIN', 'admin');
这样所有以"admin_"开头的action都可以通过 /admin/yourcontroller/youraction 来访问。例如,如果在 posts controller 中创建了名为 "admin_add" 的 action,那么可以通过 www.example.com/admin/posts/add 访问这个action。这样就可以方便地为 admin 目录设置密码以避免他人随意访问。
4. 自定义404页面
如果你需要自定义404页面,只需创建 /app/views/errors/error404.thtml。
5. 让controller使用其他model
如果你的controller需要调用来自不同model的数据,只要在controller开头使用如下代码:
class yourController extends [...]
PHP 和 Mysql 学习笔记(四)
1. 如何禁用 select 下拉列表中的某一项
<select><option selected>——请选择——</option> <optgroup label="分类一"> <option>——子类一</option> <option>——子类二</option> </optgroup> <optgroup label="分类二"> <option>——子类一</option> <option>——子类二</option> </optgroup> </select>
2. EMS SQL Manager中文显示乱码
打开EMS SQL Manager点击那个数据库出现了许多属性
选择database registration info中有一个client charset
选择gb2312简体中文
3. Mysql 乱码
MySQL数据库字符集为utf8
并且网页通过UTF-8编码发送
这时存入数据库的仍然是乱码
需要做以下设置:
@mysql_connect($dbhost,$dbuser,$dbpassword);
加上下面这行
$this->query("SET NAMES 'utf8'");
在每次发送sql查询前设定字符集为utf-8
4. 正则表达式
Email匹配
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$email))
{
echo "邮件格式不正确";
}
5. PHP5中时间相差八小时的解决办法
<?phpdate_default_timezone_set('Asia/Shanghai');echo date('Y-m-d H:i:s');?>
6. PHP防止SQL注入攻击的简单方法
1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off,这样保证PHP脚本在出错之后不会在页面中显示错误信息。
2.在Mysql函数前加错误抑制符 @ ,避免输出mysql错误。
3.对所有用户输入的数据进行转义并进行类型检查。
7. 返回GD函数版本号
function gd_version() {if (function_exists('gd_info')) {$GDArray [...]
PHP 和 Mysql 学习笔记(三)
1. mysql 定界符(反引号`)
当标示符是一个受限的词或包含特殊的字符时使用
select * from `select` where `select`.id >100;
create table orders(`my orders` varchar(100)...);
2. 数据库的大小写
linux下的数据库和表名的大小写是敏感的
其他的数据库对象不区分大小写
3. mysql 分组语句和嵌套子查询
员工表 emp( empno, name, tel, deptno, sal )
部门表 dept( deptno, dname, addr )
显示每个部门收入最高的职工信息
select * from emp
where sal in (
select max(sal)
from emp
group by deptno
);
4. mysql 查询排序 ( SQL Order By )
SELECT "栏位名"
FROM "表格名"
[WHERE "条件"]
ORDER BY "栏位名" [ASC, DESC]
ASC 代表结果会以由小往大的顺序列出,而 DESC 代表结果会以由大往小的顺序列出,默认值为 [...]
PHP 和 Mysql 学习笔记(二)
1. 值参和变参
值参:
<?php function swap($a, $b) { $temp = $a; $a = $b; $b = $temp; } $x = 100; $y = 1; swap($x, $y); echo "x = $x<br />y = $y";?>
输出结果为:
x = 100y = 1
这里 $x, $y 只是一个值的拷贝
变参:
<?php function swap(&$a, &$b) { $temp = $a; $a = $b; $b = $temp; } $x = 100; $y = 1; swap($x, $y); echo "x = $x<br />y = $y";?>
输出结果为:
x = 1y = 100
2. 连接 mysql
格式: [...]
PHP 和 Mysql 学习笔记(一)
1. 单引号串和双引号串
<?php$a = 5;$b = 10;echo "a=$a\n";echo 'b=$b';?>
输出结果为:
a=5 b=$b
变量和转义字符要放到双引号里
2. 变量和函数的大小写区分
变量是严格区分大小写的
$a, $A 是不一样的
函数不区分大小写
3. 变量的变量
<?php$a = "Hello";$$a = "world"; //$Hello = "world"echo "$a, $Hello\n"; //Hello, worldecho "$a, ${$a}\n"; //也是 Hello worldecho "$a, $$a"; //Hello, $Hello?>
4. 赋值运算符
<?php$a = 200;$a += 10; //$a = $a + 10, 即 $a = 210$a -= 10; //$a = $a - 10, 即 $a = 200$a *= 10; //$a = [...]
