<?php
//$fp=fopen("aaa.txt","r");
//echo "ok";
//1.判断文件是否存在.
//2. 绝对路径和相对路径
/*if(!file_exists("aaa.txt")){
echo "文件不存在!";
exit();
}else{
$fp=fopen("aaa.txt","r");
echo "文件打开成功";
//....关闭
fclose($fp);
}*/
//使用die处理
/* if(!file_exists("aaa.txt")){
die("文件不存在");
}else{
//打开文件操作
}
echo "ok";*/
file_exists("aaa.txt") or die("文件不存在!!!");
echo "ok";
?>
--------------------------------------
<?php
//自定义错误函数
function my_error3($errno,$errmes){
$err_info="错误号是:".$errno."--".$errmes;
echo $err_info;
//把这个错误信息保存
//\r\n 表示向文件输入一个回车换行
//<br/> 表示向网页输出一个回车换行
date_default_timezone_set("Asia/Chongqing");
error_log("时间是".date("Y-m-d G-i-s")."-".$err_info."\r\n",3,"d:/myerr.txt");
}
function my_error4($errno,$errmes){
echo "出大事了".$errno;
exit();
}
//指定E_USER_WARNING 错误级别的函数
//set_error_handler("my_error4",E_USER_ERROR);
set_error_handler("my_error3",E_USER_WARNING);
$age=700;
if($age>120){
//调用触发器,时候同时指定错误级别.
trigger_error("输入年龄过大1",E_USER_WARNING);
//exit();
}
echo "ok";
?>
---------------------------------------
<?php
/* function A(){
//调用方法
//添加用户
//我需要这样做,addUser和updateUser都成功,才算成功
$res1=addUser("shunping");
//修改用户
$res2=updateUser("xiaoming");
//删除用户
//deleteUser();...
if($res1 && $res2 ){
echo "真的成功!";
}else{
echo "失败";
}
}
//添加用法
function addUser($username){
if($username=="shunping"){
//添加成功
return true;
}else{
//失败
return false;
}
}
//修改用户
function updateUser($username){
if($username=="xiaoming"){
//修改成功
return true;
}else{
return false;
}
}
A();*/
//我们使用异常机制
try{
echo "<br/>11111111111111111111";
addUser("shunping");
echo "<br/>222222222222222222222";
updateUser("xxx");
echo "<br/>3333333333333333";
}
//catch 捕获 Exception 是异常类(是php定义好一个类)
catch(Exception $e){
echo "失败信息 =".$e->getMessage();
}
function addUser($username){
if($username=="shunping"){
//添加ok
}else{
//添加error
//抛出异常,可以这样成返回了一个异常
throw new Exception("添加失败");
}
}
function updateUser($username){
if($username=="xiaoming"){
//正常修改
}else{
throw new Exception("修改失败");
}
}
?>
-----------------------------------------------
<?php
function checkNum($val){
if($val>100){
throw new Exception("err_no1: 这个数据过大");
}else{
echo "输入的值是正常";
}
}
try{
checkNum(300);
}catch(Exception $e){
echo $e->getMessage()."--".$e->getLine();
}
?>
----------------------------------------
<?php
//定义一个顶级异常处理器
function my_exception($e){
echo "我是顶级异常处理".$e->getMessage();
}
//修改默认的顶级异常处理函数(器)
set_exception_handler("my_exception");
function a1($val){
if($val>100){
throw new Exception ("val>100");
}
}
function a2($val){
if($val=="hello"){
throw new Exception ("不要输入hello");
}
}
try{
a2("hello");
}catch(Exception $e){
//获取.
//echo $e->getMesage();
//可以继续抛出,这时将会启动php默认的异常处理器来处理
//你可以自己定义一个顶级异常处理.
throw $e;
}
?>
-----------------------------------------
<?php
//定义了一个异常
class MyException1 extends Exception{
}
class MyException2 extends Exception{
}
function A(){
throw new MyException1("a");
}
function B(){
throw new MyException2("b")
}
function C(){
try{
A();//抛出MyException1
B();//抛出MyException2
}catch(Exception1 $e1){
$e1->getMessage();
}catch(Exception2 $e2){
$e2->getMesage();
}
}
?>
----------------------------------------------
<?php
try{
// $i=8/0;
$fp=fopen("aaa.txt","r");
}catch(Exception $e){
echo "ok";
echo $e->getMessage();
}
?>
---------------------------
<?php
echo time();
//输出当前日期 实际
//默认时期是UTC ,我们中国8
//设置 1. 页面设置 2. 在php.ini设置
date_default_timezone_set("Asia/Chongqing");
//格式
echo date("Y-m-d G-i-s");
?>
---------------------------------------------
<?php
//print_r($_SERVER);
//foreach($_SERVER as $key=>$val){
// echo "$key=$val <br/>";
//}
//可以指定取出访问该页面的ip
//echo "朋友你的ip是:".$_SERVER['REMOTE_ADDR'];
if($_SERVER['REMOTE_ADDR']=="192.168.1.100"){
//跳转到一个警告页面
header("Location: err.php");
}
?>
-------------
<?php
//没有防止.
//获取REFERER
if(isset($_SERVER['HTTP_REFERER'])){
//取出来
//判断 $_SERVER['HTTP_REFERER'] 是不是以 http://localhost/http 开始->函数
if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/http")==0){
echo "韩顺平的账号信息..";
}else{
//跳转到警告页面
header("Location: warning.php");
}
}else{
//跳转到警告页面
header("Location: warning.php");
}
?>
时间:
Y 代表4位年 G 24小时格式 g12小时格式
y代表2位年 H 24小时格式 h12小时格式
小写是有前导0的,大写没有前导0
echo date("y-m-d")
错误处理 异常处理
错误处理时一个重要的部分,如果缺少错误检测代码,那么程序
看上去很不专业,也为安全风险打开了大门
文件处理:
其中c++对文件处理更加的复杂
文件是很古老很复杂的东西
file中 file_exists 检文件或目录是否存在
\\ 或者/都可以
相对路径 绝对路径
错误处理方式:
简单的die()语句
自定义错误和错误触发器
错误日志
fclose($fp);
die("文件不存在"); 如果文件是图片,则先显示在销毁
简单的die()语句
file_exists("aa.txt") or die("文件不存在");
创建自定义错误函数(处理器)--介绍
该函数必须有能力处理至少2个参数(error level ,error message)
error_function(error_level,......)
默认处理错误方式 php中 .........
------------------------------------------
改变系统默认的构造函数
----------------
错误触发器:错误处理器 区别
触发器往往是处理逻辑错误
处理器是处理系统错误
调用触发器
trigger_error("输入年龄大")
--------------
时间:
Y 代表4位年 G 24小时格式 g12小时格式
y代表2位年 H 24小时格式 h12小时格式
小写是有前导0的,大写没有前导0
echo date("y-m-d")
异常
异常处理用于在指定的错误 异常情况发生时改变脚本
的正常流程,这种情况成为异常。
如果异常被抛出时,其后的代码不会继续执行,php会
尝试查找匹配的catch代码块
如果异常没有被捕获,而且又没有使用 set_exception_handler()
作相应的处理,那么将是一个致命的错误,并且输出
“Uncaught Exception” (未捕获异常)的错误信息。
try{
} catch(Exception e){
//捕获异常并处理,通常情况下抛出一个异常
//1.自己处理
//2.自己不处理,将其抛出
throw e;
}
php中处理异常
1.基本语法
2.
----------------------------
$refer=$_SERVER['HTTP_REFERER'];
if($refer==null||strpos($refer,"http://localhost/test")!=0){
//跳转到错误页面;
header('Location: err.php');
}
---------------
基本结构
请求行
消息头
<----空行
消息体(实体内容)
举例: