请求
GET 方式传值
表单:提供用户向 web 服务器发送数据的接口。method="get";
通过地址栏提交数据被存放在$_GET 数组中
数据上限一般为2KB
链接方式
只要在请求的url中包含参数,参数就会以GET方式传递到请求的页面。
<a herf="请求的地址?a=100&b=200">点击提交</a>
location.herf
location为JS对象,每个对象有属性、方法,JS跳转传递参数的本质还是在 URL 中包含参数,此时参数以GET方式传递到请求的页面
location.herf = '请求的地址?a=100&b=100'
location.assign(url)
header("location:跳转的地址");
header("refresh:秒数;url=新的地址");
POST 方式
属性值作为$_POST关联数组元素的下标使用
适用密码等安全性要求比较高的场合,数据量比较大的场合,如发布文章上传文件
不通过地址栏提交。数据上限默认为 8M
预定义变量
系统预先定义好的变量,可以直接使用的变量 $_SERVER 存储服务器环境信息以及HTTP协议相关信息 $_GET 用户GET方式提交的数据 $_POST 用户POST方式提交的数据 $_REQUST GET、POST、COOKIE数据 $_COOKIE 保存COOKIE数据(保存在浏览器端的用户隐私数据) $_SESSION 保存SESSION数据(保存在服务器端的用户隐私数据) $GLOBALS 引用所有的全局变量数据 $_FILES 上传的文件信息(包括文件名、文件类型、大小)
$_SERVER SERVER_SOFTWARE 服务器软件版本 SERVER_NAME 服务器名 SERVER_ADDR 服务器 IP 地址 SERVER_PORT 服务器端口 REMOTE_ADDR 客户端 IP 地址 DOCUMENT_ROOT 网站根目录 SCRIPT_NAME 请求脚本路径
PHP接收表单 name属性必选,value值必选 复选框中name为 'xxx[]'
文件上传
form表单数据的编码类型由enctype(encode type)决定,默认为application/x-www-form-urlencoded方式编码,文件上传时属性值必须设置为multipart/form-data
数据提交方式POST方式
文件域 <input type="file" name ="属性值"/>
数据接收:$_FILES 二维数组
name文件名type文件类型tmp_name临时文件路径error错误代号size文件大小
临时文件可以用,sleep()函数,休眠代码的执行来查看
- error => 0 代表没有发生错误,文件上传至临时路径成功
- error => 1 上传的文件超过了
php.ini中upload_max_filesize选项(默认2M)限制的值 - error => 2 上传的文件大小超过
input标记设置的MAX_FILE_SIZE值
可以通过<input type="hidden" name="MAX_FILE_SIZE" value="3000"/>实现浏览器对文件大小的初步判断,避免过大文件不必要的上传造成的浪费时间 - error => 4 没有文件被上传
- error =>6 找不到临时文件夹
超出了POST—_MAX_SIZE时,数组$_FILES为空,此时无错误代码提示is_uploaded_file($file['tmp_name'])判断是否是合法的HTTP post上传文件move_uploaded_file(临时路径$file['tmp_name'],永久路径$savePath);移动至永久目录
文件上传相关问题
文件扩展名简单获取方法 string strrchr($str,'.'); 避免文件名重复 $savePath = './upload/'.date('YmdHis-').mt_rand(1000,9999).$ext; 大小限定 $maxSize * 1024 *1024 < $file['size']
文件类型限定 MIME 类型
- image/png,image/gif,image/jpeg
- text/html,text/css,text/javascript
- text/plain
- application/pdf 在
PHP扩展及设置->PHP扩展->php_fileinfo开启finfo_open(FILEINFO_MINE_TYPE);打开fileinfo资源,为后续获取MIME类型准备finfo_file(finfo文件资源,临时文件名);读取上传文件的MIME类型,返回文件的MIME类型字符串in_array($a,$arr);判断$a是否在数组$arr中
PHP 的 MySQL 数据库扩展
PHP扩展及设置=>PHP扩展=>php_mysql 检查是否加载成功function_exist(函数名);function_exist('mysql_connect');
PHP 操作数据库步骤
- 连接数据库
mysql_connect("主机名[:端口号],用户名,用户密码")
返回资源型的数据库连接,失败返回false 2. 设置字符集
set names utf8;
- 选择数据库
use db_name;
mysql_error()返回上一个sql语句执行的错误信息
- 发送执行 SQL 语句
$sql=" ";
mysql_query($sql);
- 结果(集)、错误信息处理 判断执行结果,给出提示
- 断开连接:释放内存
mysql_close(resource[$link]);
查询结果集
mysql_num_rows(resorce $res);
返回查询结果集中的行数,如果为0行则为空结果集
解析结果集
mysql_fetch_array(resource $res);
返回结果集中的一行,以混合数组形式返回。既有数字下标形式,又有字符下标形式
mysql_fetch_row($res);
执行一行返回一行,以索引数组形式返回
mysql_fetch_assoc($res);
返回关联数组,元素下标为查询字段的名称 -> 均每次执行取出结果集中的一行,并且将指针向下移动一次,指针非法时返回false
使用固定的数据填充表格
<?php while($arr=mysql_fetch_assoc($res)):?>
<tr>
<td><?=$arr['id']?></td>
<td><?=$arr['name']?></td>
<td><?=$arr['color']?></td>
</tr>
<?php endwhile;?>
HTTP 协议
- 协议:事先的一种约定、规则、规范、标准。有
HTTP(超文本传输协议),ftp(文件传输协议,将网站程序传输到Apache服务器),SMTP(简单邮件传输协议),pop3(邮局协议版本 3,收发邮件的协议),telnet(远程登录协议) HTTP协议:超文本传输协议,Web服务器上存储有HTML文件及图像资源等,在请求资源时,客户端(浏览器端)与 WEB 服务器端之间的交互协议
HTTP/1.0
无连接请求,每次TPC/IP连接只能处理一个请求,浏览器向服务器发起一次请求后,只能得到服务器的一次响应
HTTP/1.1
默认为长连接,持久连接,一次连接可以请求多个资源。
无状态
也叫无记忆功能,多次请求之间没有对应关系。即同一个浏览器向同一个服务器发起多次请求的时候,服务器不能识别该浏览器。如已经登录请求其他页面还需要登录。
HTTP 请求协议
客户端向服务器索要数据时遵循的协议(按照什么格式发送数据,或者必须发送的内容)
- 请求行 :请求方式、请求的页面,遵循的协议
- 请求头 : 通知服务器,浏览器支持的数据类型
- 空白行
- 请求体 : 提交的核心数据
HTTP 响应协议
服务器向浏览器返回数据时的协议
- 响应行 : 请求资源成功、失败、或者其他的状态。协议版本 状态码 状态描述
- 响应头 : 通知浏览器一些信息,如返回数据的类型、使用什么字符集显示数据等
- 空白行
- 响应体 : 请求的 HTML,PHP 输出语句返回的数据
CODE 说明 1xx 请求尚未成功 2xx 请求正常 3xx 重定向 4xx 请求失败 5xx 服务器错误
header 函数
header('content-type:text/html;charset=utf8');
header('content-type:image/png') 返回的是图像的二进制信息,解析时必须按照图像格式解析
header('location:请求的页面');
header('refresh:3;ulr=./请求地址');
会话技术
浏览器与服务器之间的数据交流。在同一台浏览器对服务器多次的请求中,将数据持久化存储的技术,以实现连续的业务逻辑。
- 数据持久化存储在服务器,为
session技术 - 数据持久化存储在浏览器,为
cookie技术
COOKIE
| 操作 | 方法 |
|---|---|
| 设置 | setcookie(数据名,数据); 存储的数据类型为字符串 |
| 查看 | 浏览器中 cookie |
| 读取 | $_COOKIE 中 |
| 修改 | setcookie('变量名','新值'); |
| 删除 | setcookie('变量名',''); |
setcookie('名称', '值', '有效期', '有效路径', '.mm.com')
- 有效期用时间戳(秒数)来表示,..后对应的
COOKIE数据消失,time()-1; PHP_INT_MAX;默认关闭窗口后消失 - 有效路径默认在当前目录及子目录的脚本可以直接访问对应的
COOKIE信息,将值设为/,表示网站根目录、整站有效 - 有效域名,为
mm.com的其他子域名均可读取
SESSION
- 开启
session机制session_start();开启session会话或重用已经创建的会话 - 设置
$_SESSION['a']='xxx'; - 读取
$_SESSION['b']; - 删除
$_SESSION=[]; unset($_SESSION['a']);删除的是session文件的数据session_destroy();删除session会话文件,PHP脚本将无法读取session数据SESSION数据是基于COOKIE的,响应时PHP脚本将当前SESSION会话名称以COOKIE数据的形式返回给浏览器(COOKIE数据名为PHPSESSID),浏览器再次请求本网站的任意页面时,自动携带名为PHPSESSID的COOKIE数据,PHP 按照会话名称查找对应session文件,将数据读取到$_SESSION数组中
SESSION配置选项
php.ini 中
- COOKIE PHPSESSID,
- session.cookie_life_time
- session.cookie_path
- session.cookie_domain
session与COOKIE之间的区别
cookie存储在浏览器,session存储在服务器端session存储在服务器端,不易获取,更加安全- 每次请求
COOKIE传输量较大,传递该网站相关的全部COOKIE数据 COOKIE支持字符串,SESSION几乎所有的数据类型
登录退出
密码 char(32) , md5('***'); 在登录成功时,使用session技术保存user_name,来判断其他是否登录,在退出时删掉文件
分页
select * from xxx limit ($pagenow-1)*$pagesize,$pagesize;
select count(*) from xxx; 获取数量;
验证码
GD绘图,GD是PHP的一个扩展库,需要手动开启GD扩展库,修改php.ini配置文件,增加extension=php_gd2.dll;将php_gd2.dll文件复制到php/ext目录中。在phpStudy直接在配置文件中勾选。
- 创建画布
- 绘制图像
- 输出图像
- 销毁图像
创建文件资源
resource imagecreate ( int $x_size , int $y_size )
resource imagecreatetruecolor ( int $x_size , int $y_size )
resource imagecreatefromjpeg ( string $filename )
resource imagecreatefrompng ( string $filename )
resource imagecreatefromgif ( string $filename )
颜色填充
bool imagefill ( resource $image , int $x , int $y , int $color )
输出图像
bool imagegif ( resource $image [, string $filename ] )
bool imagejpeg ( resource $image [, string $filename ] )
bool imagepng ( resource $image [, string $filename ] )
销毁图像
bool imagedestroy ( resource $image )
绘制图形
点和线
bool imagesetpixel ( resource $image , int $x , int $y , int $color )
bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
矩形
bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )
bool imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
多边形
bool imagepolygon ( resource $image , array $points , int $num_points , int $color )
bool imagefilledpolygon ( resource $image , array $points , int $num_points , int $color )
椭圆
bool imageellipse ( resource $image , int $cx , int $cy , int $w , int $h , int $color )
bool imagefilledellipse ( resource $image , int $cx , int $cy , int $w , int $h , int $color )
椭圆弧
bool imagearc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color )
bool imagefilledarc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color , int $style )
字符
bool imagechar ( resource $image , int $font , int $x , int $y , string $c , int $color )
bool imagecharup ( resource $image , int $font , int $x , int $y , string $c , int $color )
字符串
bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
bool imagestringup ( resource $image , int $font , int $x , int $y , string $s , int $col )
中文字符
array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
取得图像大小
int imagesx ( resource $image )
int imagesy ( resource $image )
拷贝图像调整大小
bool imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
绘制完毕后在php页面最上方header('content-type:image/png')
登录页面引入验证码
<img src="verify.php"> verify.php为绘制的验证码
点击验证码图片刷新验证码
对验证码图片绑定鼠标点击事件,this.src="../pngcreate.php?_="+Math.random();
jquery中,a标签对象调用submit()方法可提交表单,$('#id').submit();
将生成的验证码字符串保存在session当中,方便其他页面获取, 在check.php页面中接受表单提交的用户验证码和保存的验证码判断
检测用户名和密码
接收表单提交的用户名秘密,核对成功后,将用户信息通过session保存
退出登录
删除session文件
防跳墙访问
检测session中是否有值
富文本编辑器
引入CSS,JS 给textarea一个id,在后面js中 var um = UM.getEditor('idName',{修改配置});
三表联查
select xxx,xxx,xxx,xxx from tableA as A join tableB as B on A.xx=B.xx join tableC as C on C.xx=B.xx;
筛选
$where = "";
if($selectA != 0){
$where .= '"A=$selectA and ";
}
if($selsctB != 0){
$where .= "B=$selectB and ";
$where .= '1';
$sql="select .. where $where";
自定义属性
在行内样式 data-xxx="xxx" 创建自定义属性
$(this).attr('data-xxx')
获取
获取复选框选中的集
$(':checkbox:checked')
输入框只读
在行内标签加入readonly
多组数据同时更改值
update tableA set XXX = 'xxx' where xxid in (1,2,3);
PHP 文件写入
fopen(var1,var2);打开一个文件
- 参数 1:要打开的文件的路径
- 参数 2:打开的方式 :
r(read)以只读方式打开文件,w(write)以写入方式打开文件,若文件不存在则自动创建,将文件中内容自动清空 - 返回值:res
fwrite(var1,var2);将一段文字写入文件
- 参数 1:资源型
- 参数 2:要写入的内容
单组数据的文件存储,创建一个PHP文件,读取方式为include_once 'site.conf.php',PHP 中 return array('k'=>'v'); 更改该文件用fwrite="config.php数据拼接"
unlink(filename)删除文件
htmlspecialchars_decode($str) 带标签的字符串转为 HTML
