Cookie
原理:
语法:
setcookie(name[, value, expire, path, domain]);
setcookie('username','jack','PHP_INT_MAX','/','a.com');
常用属性:
expires 有效期
临时cookie
setcookie("uName","admin");
硬盘cookie
一小时过期 setcookie("uName","admin",time()+3600);
永久性cookie setcookie("uName","admin",PHP_INT_MAX);
path 有效路径
默认为在当前文件所在文件夹生效
可以设置为指定文件夹
setcookie("uName","admin",time()+ 3600,"/upload")
也可以设置为全站有效"/"
domain 域名
只有在a.com以及它下面的子域名中才能被访问
setcookie("uName","admin",time()+ 3600,"/","a.com");
删除cookie:
设置有效时间为过去时间
setcookie("uName","admin",time()-1);
将cookie中的值设置为false或者空字符串
setcookie("uName",false);
setcookie("uName","");
不设置值
setcookie("uName");
服务器操作cookie:
获取单个cookie echo $_COOKIE["user"];
查看所有cookie print_r($_COOKIE);
json_decode
json_incode
Session
http://php.net/manual/zh/session.examples.basic.php
Cookie数据存储在客户端。而Session数据存在服务器端,用户不能随意修改。
MySQL
Navicat
查询语句的语法: <>不等号~
增加语句的语法:
修改语句的语法:
删除语句的语法:
PHP操作数据库
连接数据库
$conn = mysqli_connect(主机,用户名,密码,需要操作的数据库);
$conn = mysqli_connect("localhost","root","root","mybase");
*判断连接是否成功,失败就不再执行之后代码
if(!$conn){
die("服务器异常,请联系管理员");
}
编码不一致的两种情况解决
header("Content-type:text/html;charset=utf-8");
mysqli_set_charset($conn,"utf8");
或 mysqli_query($conn,"set names utf-8");
增、删、改
$sql = "sql执行语句";
$result = mysqli_query($conn,$sql);
*需要判断是否执行成功
*输出最近一条sql语句执行时产生的错误信息
echo mysqli_error($conn);
查
*判断结果集中是否有数据
if(!$result){
die("查询失败");
}else if(mysqli_num_rows($result) == 0){
die("结果集为空");
}else{
//获取数据的函数
}
获取数据的函数
mysqli_fetch_array($result,[第二参]);提取数据生成索引关联两种数组
第二参MYSQL_ASSOC | MYSQL_NUM | MYSQL_BOTH
或MYSQLI_ASSOC | MYSQLI_NUM | MYSQLI_BOTH
mysqli_fetch_assoc($result);提取数据生成关联数组
mysqli_fetch_row($result);提取数据生成索引数组
*获取所有数据:
while($arr = mysqli_fetch_assoc($result)){
$res[] = $arr;
}
关闭连接,释放资源
mysqli_close($conn);
AJAX
发送请求和接收响应(异步)
XMLHttpRequest
代码
//创建异步对象
var xhr = new XMLHttpRequest();
//请求行
xhr.open("get","./XXX.php?key=value")或
xhr.open("post","./XXX.php")
//请求头(get不需要设置)
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//请求体
//get的参数在url中拼接了,不需要在这里设置
xhr.send(null);或
xhr.send("key=value");
//异步对象成功接受服务器响应数据判断
xhr.onreadystatechange = function() {
if (xhr.status == 200 && xhr.readyState == 4) {
var result = xhr.responseText;
}
}
XML
获取xml文件返回数据的响应头
header("Content-type:application/xml;charset=utf-8");
获取返回值
var result = xhr.responseXML;
URL传值带加号“+”的问题的解决方法
客户端向服务器传递参数时,参数中的“+”变成了空格,原因是URL中默认的将“+”号转义了。
解决:
①修改客户端,将客户端带“+”的参数中的“+”全部替换为“2B%”,这样参数传到服务器端时就能得到“+”了。
②修改服务器端,将空格替换为“+”,这种方式只适用于参数中有“+”没有空格的情况。
例子:
String a = reuqest.getParameter("clientStr").replace(' ','+');
如果客户端为clientStr=test+OK,那么a的值为test+OK;
③修改服务器端,将获取参数的方法由reuqest.getParameter改为request.getQueryString().substring(0),然后对得到的字符串进行解析。
例子:
String a =request.getQueryString().substring(0);
如果客户端为clientStr=test+OK,那么a的值为clientStr=test+OK,需要再解析一下,
a=a.substring(10);得到a的值为test+OK。
附:一个JS,用来转义URL中特殊字符的。
function URLencode(sStr){
return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
} |
|