require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
Session
session_start(); 开始记录
$_SESSION['views'] 根据名字获取session
unset(¥SESSION['views']) 或 session_destroy() 销毁session
Exception
抛出异常 try 中throw
抓包异常 catch
set_exception_handler() 设置所有未定义的错误抛出
过滤器
"filter" 制定方法
"options" 过滤条件
- 过滤多个输入
filter_input_array() 函数来过滤三个 GET 变量。 - Filter Callback
调用自己的函数,array("options"=>"xxx")
接口
声明一个接口以及内部的方法,但不需要具体内容。
interface iTemplate
{
}
实现接口
class Template implements iTemplate
Mysql
创建连接 new mysqli($servername, $username, $password);
检测连接 $conn->connect_error
关闭连接 $conn->close(); mysqli_close($conn);
SQl语句 $conn->query()
PDO
开启扩展 extension=php_pdo.dll
初始化新对象 $dbh = new PDO($dsn, $user, $pass);
错误对象 PDOException
- 预处理
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
SQL语句
php中sql语句拼接,$sql="SELECT * FROM Websites WHERE id = '".$q."'";
'".$q."'
AJAX
能够默写出
XMLHttpRequest 对象用于和服务器交换数据, open() 和 send() 方法
open
xmlhttp.open("GET/POST",服务器上的文件,async:true(异步)或 false(同步));
如果需要使用,必须true异步,必须确定onreadystatechange 事件中的就绪状态时执行的函数;如果小型请求中false同步,不需要onreadystatechange 函数 ,获取的代码放到 send() 语句后面即可:
常用GET,以下使用POST:
- 无法使用缓存文件(更新服务器上的文件或数据库)
- 向服务器发送大量数据(POST 没有数据量限制)
- 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
- 在open()中传入的php文件, 如果不加参数常使用的缓存文件,可以将文件后参数添加改成
demo_get.php?t=" + Math.random() - GET 方法发送信息,向 URL 添加信息:
send
xmlhttp.send(); 仅为post请求
- 像 HTML 表单 POST 数据,使用 setRequestHeader() 来添加 HTTP 头。在 send() 方法中规定发送的数据:
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
其中 setRequestHeader(header,value)
response
.responseText; 字符串形式
.responseXML 解析为xml
onreadystatechange
- readyState 属性存有 XMLHttpRequest 的状态信息,判断改变时触发onreadystatechange 函数,数字代表:
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪 - status数字代表:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受 200: "OK"
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行 404: 未找到页面
5xx:服务端错误,服务器不能正确执行一个正确的请求
所以 readyState 等于 4 且状态为 200 时,表示响应已就绪。
首先判断输入框是否有数据,没有即为空,有即执行:
//创建XMLHttpRequest对象
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
xmlhttp=new XMLHttpRequest();
}
else
{
//IE6, IE5 浏览器执行的代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//创建在服务器响应就绪时执行的函数
xmlhttp.onreadystatechange=function()
{
//state: satus:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
//向服务器上的文件发送请求,添加到 URL 末端的参数(q)(包含输入框的内容)
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
浏览器:创建xmlhttprequest对象,发送httprequest 给
Internet:处理httprequest并返回数据 给
浏览器:JS处理返回的数据 ,更新内容
简单来说,创建XMLHttpRequest,open以后send给onreadystatechange中
回调函数
以参数形式传递给另一个函数的函数。将存在的多个AJAX函数引向同一个function
var xmlhttp;
function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
{// IE7+, Firefox, Chrome, Opera, Safari 代码
xmlhttp=new XMLHttpRequest();
}
else
{// IE6, IE5 代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function myFunction()
{
loadXMLDoc("/try/ajax/ajax_info.txt",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
});
}
跨域 Access-Control-Allow-Origin
在A域名下的server.php中添加头部,
- 指定某域名
header('Access-Control-Allow-Origin:B域名'); - 允许多个域名访问
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
B域名
C域名
);
if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin:'.$origin);
}
3、允许所有域名访问
header('Access-Control-Allow-Origin:*');