web开发零零碎碎备忘录
Updated:
PHP笔记
1、常用工具&常用库
(1)firebug
firebug是firefox浏览器下面的一个插件(safari上面也有Firebug Lite for Safari),可以用来调试Html、CSS、JS等。
(2)livehttpheaders
捕捉Httpheader的利器。
(3)YUI、JQuery等UI库
可以解决一些浏览器兼容问题。
Dojo、ExtJS、JQuery、MooTools、ProtoType、script aculo us、 YUI
www.quirksmode.org
2、环境配置的一些名词
CNAME、302临时跳转、301永久跳转(重定向)、suphp保护代码、.htaccess文件(分布式配置文件),具体用到是玩。
目录权限:一般公共目录为701或711,php file为600,css 静态Html图片等为644.
报403是因为权限问题。
haproxy可以实现负载均衡和冗余
memcached Daemon
3、显示代码所有错误
<?php
error_reporting(E_ALL);
ini_set(“display_errors”, TRUE);
>
@可以抑制报错 小心使用
4、常用函数
1、htmlspecialchars
去掉html标签 特殊字符
2、session_start
检测服务器发送的HTTP头信息,是否有cookie头信息,有的话是否有某键叫PHPSESSIONID,有的话对应的长传随机值是什么,函数会在文件系统中找到对应文本文件
3、isset
是否已经设置
4、=
相当于print
、echo
5、<?php xx :?>
冒号表示退出php模式,http://blog.csdn.net/xin_king/article/details/38274917
6、mysql_real_escape_string
这个函数能够防止sql注入 接受用户输入时候调用
7、die($sql)
数据库连接失败时调用
8、mysql_num_rows($result)
记录行数
9、mysql_fetch_assoc($result)
从结果集中返回一个关联数据,如果没有则返回false.
10、select 1 from tablename where xx = “xx”
小技巧,这个sql语句可以用来查看是否匹配,如果匹配上会返回1.
11、php json_encode();
eval()
加括号表示是对象
headr(“Content-type: application/json”)
5、数据库相关
1、PASSWORD加密 AED_ENCRYPT加密生成二进制字符串 数据库字段类型。
数据库导出sql文件时,密码字段也许不是我们想要的。将用户输入的密码作为秘钥。
2、mysql中id类型一般为无符号整型。
3、inner join 表示内连接需要带条件 如where
cross join 表示交叉连接
left outer join 外连接和左连接,除了条件匹配数据还有左表的非匹配数据,而内连接只有匹配数据
4、数据库中尽量不要使用删除数据,而采用标记的形式
5、InnoDB myisasm(不是很明白)
6、读锁定、写锁定,用事务可以解决竞态条件问题
7、rollback
6、Javascript相关
1、<![CDATA[ 盛大文学疯狂扩展 单季收入过亿
]]> 将其解析为可执行代码 防止一些符号不能识别
某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 “<![CDATA[“ 开始,由 “]]>” 结束:
2、浏览器 从左到右 从上到下阅读代码 注意javascript的载入方式 window.onload = function(){};可以解决javascript 未读完dom时候执行问题 页面执行完后会执行这个函数,用户可以禁用js和cookie
3、小技巧var a = new Array(); 或 var a = []; 定义一个数组
a[0] = “foo” 定义数组
小技巧 a[a.length] = “foo”; a[a.length] = “bar”; 长度变化
4、document.forms 所有表单元素
document.getElementById(“xxid”) 访问元素 jquery 中访问元素$
5、javascript中正则表达式 用/正则/ 包裹 .表示任意字符.+表示很多任意字符.表示真正的.,$表示结束
6、obj.key obj[“key”] var obj = { key : value} json
7、css属性是连字符 javascript中用驼峰式访问 如font-family fontFamily
8、window表示所有内容所在的super structure document是引用服务器端的所有内容;window.setInterval 设置定时器
9、www.jslint.com 校验 静态分析
js压缩工具 JSMin packer shrinkSafe YUI compressor
10、AJAX:
abort 终止当前请求
getAllResponseHeaders
getResponseHeader(header) http 头
open(method,url)
open(method,url,async)
open(method,url,async,user)
open(method,url,async,user, password)
send()
send(data)
setRequestHeader(header,value)
submit后返回true将会跳转页面,返回false将不会
xhr.readyState == 4 为完全加载状态
其他状态
0(unitialized)
1 (open)
2 (sent)
3 (receiving)
4 (loaded)
11、ajax 同源策略 JS只能与同一个域中的页面进行通讯,同源策略主要是浏览器的支持,也有例外 如JSONP技术
由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML的<script>
元素是一个例外。利用 <script>
元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
同源条件
协议相同(比如都是http://)
端口相同(通常都是80)
域名相同
12、innerHtml innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。 有安全风险,小心使用
跨站脚本攻击
strip_tag剥离标签
13、强制浏览器打开新的页面 target=“_blank”
滚到上面 — 点击回到顶部
mailto 点击出现邮件客户端
安全
1、Telnet 密码明文 是ssh的鼻祖, ssh是安全shell
网卡混杂模式
ssh 默认TCP端口22 创建隧道
FTP不安全 SFTP安全
2、Validate local HTML 是否符合w3c标准
suPHP / fastCGI
session 有可能放数据库(session粘滞)
session劫持
session cookie http 是明文的,https是加密的
php.ini中可以配置session cookie标记为 secure 这样浏览器就会只在https时发送这个加密session cookie(https) SSL(数字签名证书)是https的安全基础
HTTPS Everywhere Force TLS 客户端改成https
VPN安全
Wireshark 嗅探工具
3、SSL:.key .csr
通配SSL证书 端口443
php apache版本 可以关掉(以防止针对版本漏洞攻击) http head
4、NFS network file system 网络文件系统
iSCSI 文件共享
问题:
mysql 创建外键
alter table hs_order add constraint cust foreign key (cust_id) references hs_customer(cust_id)
注意外键类型必须一致否则报错,做外键关联的时候,一定要保证你关联表的主键是唯一的。
mysql MAMP配置文件路径
Using MySQL command line with MAMP
To use the MySQL command line with MAMP or MAMP PRO,
perform the following steps:
Start MAMP or MAMP PRO
Start the server
Open Terminal (Applications - Utilities)
Type in: (one line)
/Applications/MAMP/Library/bin/mysql —host=localhost -uroot -proot
Now you can use the MySQL command line. For exmaple to show all your databases with show databases;
修改mysql配置文件/etc/my.cnf
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
MAMP/Library/support-files
sudo vi /etc/my.cnf
[client]部分加入:
default-character-set=utf8
[mysqld]部分加入:
character-set-server=utf8
mac下安装pecl
cd /usr/lib/php
sudo php install-pear-nozlib.phar
Edit:
/etc/php.ini and find the line: ;
include_path = “.:/php/includes”
修改为:
include_path = “.:/usr/lib/php/pear”
sudo pear channel-update pear.php.net
sudo pecl channel-update pecl.php.net
sudo pear upgrade-all
前端
jquery中.xxx表示 class为xxx的所有元素,
#xxx表示id = xxx的第一个元素
js中接收php数组
<?php echo json_encode($customer_list);?>