博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php基础知识笔记
阅读量:7256 次
发布时间:2019-06-29

本文共 7804 字,大约阅读时间需要 26 分钟。

基本语法

php文件的后缀名可以是 .php .php3 .phtml

输出命令 echo , print

语句以;结束

注释 // /* */

变量都带$前缀, 如: $x, $names, $this->color

PHP是一种松散类型的语言,变量在使用前不需声明,变量在被使用时,自动被声明并确定类型

字符串连接符 .

//字符串函数strlen( $str); strpos($str, "hello");

流程控制语句

分支语句

if($x>10){    echo "great";} else {    echo "soso"     }if($score > 90){    echo "excellent";}else if($score > 70){    echo "normal";}else{    echo "soso";}switch ($x){ //同js switch    case 1:        echo "1";        break;    case 2:        echo "2";        break;    default:        break;  }

循环语句

while($i<10){    echo $i + "\t";}do{    echo $i + "\t";}while($i<10)for($i=0; $i<10; $i++){    echo $i + "\t";}foreach($names as $n){    echo $n + "
";}

数组:数值数组,关联数组,多维数组

$names = array("lufy","zoro","nami");  //~~~数值数组//等价于$names[0] = "lufy";$names[1] = "zoro";$names[2] = "nami";$ages = array("lufy"=>19, "zoro"=>19, "nami"=>17); //~~~关联数组//等价于$ages['lufy']=19;$ages['zoro']=19;$ages['nami']=17;$friends = array( //~~~多维数组     "lufy"=>array('ice','lili'),     "zoro"=>array('meili'),    "nami"=>array('lobin','sabo')    );

函数声明语法 function(){} 同js

function hello($name="idle"){// 参数默认值    echo "hello" + $name;}hello('alice');

表单

$_GET, $_POST数组获取表单提交上来的数据  $_REQUEST 包含 $_GET, $_POST 和 $_COOKIE 的内容

表单验证 客户端验证和服务端验证

日期函数

date(format [, timestamp] ) //格式化日期date("Y-m-d");date('d');date('m');date('Y');mktime(hour,minute,second,month,day,year); //对应的日期时间创建一个时间戳$tommorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));date('Y/m/d',$tommorrow);

文件包含

include 'filename'; //宽容 require 'filename'; //严格

include 更友好一点 遇到错误会警告,但脚本继续执行;require相反

文件系统函数

$f = fopen($fname, mode); //打开文件 返回句柄fclose($fhandler); //关闭文件feof($f); //检测是否到达文件末尾fgets($f); //逐行读取文件内容fgetc($f); //逐字符读取文件内容$_FILES //保存上传文件信息的二维数组move_uploaded_file(filename, destination);// 保存上传的文件到指定目录

cookies函数

setcookie() //设置cookies,必须位于html标签之前setcookie(name, value, expire [,path] [,domain])setcookie("user" , "jie", time()+3600);$_COOKIE["user"] //获取cookieprint_r($_COOKIE); //取回所有的cookies print_r打印数组if( isset($_COOKIE["user"] ) //判断是否设置了该cookie值setcookie("user","", time()-3600); //删除cookie,设置为过去的时间点

session

session的工作机制:为每个访问者创建一个唯一的UID,并基于这个UID存储变量。

session_start(); //使用session之前(调用$_SESSION之前)必须先启用session, 必须位于html标签之前

终结session

unset(); unset($_SESSION['view']); //删除某个session变量的值session_destory(); //更彻底 重置所有的session,就失去所有的session数据

mail

//可以直接从脚本发出邮件, 需要一个安装好的邮件系统支持 mail()才可用,//在php.ini配置文件中配置邮件系统mail(); mail(to,subject,message [,headers] [,parameters] );

php过滤器:

//从字符串中删除电子邮件的非法字符FILTER_SANITIZE_EMAIL//验证电子邮件地址FILTER_VALIDATE_EMAIL

php错误处理

文件名 行号 错误描述消息

基本的错误处理: die()

if(! file_exists("welcome.txt")){    die("file not found");}else{    $file = fopen("welcome.txt");}

自定义错误处理器

error_function(error_level, error_message[, error_file][, error_line][, error_context]);function myErrFun($errno, $errmsg){    echo "error:[$errno]$errmsg
"; echo "ending script"; die();}

php默认的错误处理程序是内建的错误处理程序,如何指定自定义的错误处理函数去处理错误?

set_error_handler("myErrFun");trigger_error($errmsg); //触发错误$test=2;trigger_error("value must be 1 or below"); //可以在脚本的任何位置 根据需要触发错误

错误记录

根据在php.ini中的err_log配置,php想服务器的错误记录系统或文件发送错误记录,

使用 error_log()函数发送

异常

异常exception用于在指定的错误发生时改变脚本的正常流程。

php5提供一种新的面向对象的错误处理方法。

异常被抛出后,后面的代码不会被执行,php会尝试查找匹配的catch块

异常被抛出后没有被捕获,将产生一个致命错误

//try , throw , catchfunction checknum($n){    if( $n>1 ){    throw new Exception(" value must be 1 or below");}    return true;}try{     checknum(4);    echo "if you see this,means no exception";}    catch(Exception $e){    echo 'message:'. $e->getMessage();}

创建自定义的Exception类。该类必须是原生Exception类的一个扩展

class myException extends Exception{    public function errorMessage(){        $errormsg = "error on line: " . $this->getLine() ." in " . $this->getFile() . " :  " . $this->getMessage();        return $errormsg;    }}$email = "someone@example...com";try{    if( filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE ){        throw new myException($email);    }   }catch(myException $e){    echo $e->errorMessage();}

一段脚本中可以检测多种情况抛出多个异常,注意异常都应当被捕获

catch块中可以重新抛出异常

try {    try {        throw new Exception('not a valid email');    } catch (Exception $e) {        throw new myException('has example in email address')    }} catch (myException $err) {    echo "has example in email address";}//自定义异常处理程序function myExceptionHandler($e){    echo $e->getMessage();}set_exception_handler('myExceptionHandler'); //把自定义的throw new Exception('uncaught exception occurred');

php过滤器用于验证和过滤

函数和过滤器

过滤器函数:

  • filter_var() //通过一个指定的过滤器来过滤单一的变量
  • filter_var_array(); //通过相同或不同的过滤器来过滤多个变量
  • filter_input //获取一个输入变量,并对它进行过滤
  • filter_input_array //获取多个输入变量 进行过滤

如:filter_var($int, FILTER_VALIDATE_INT)

两种过滤器 validating 和 sanitizing

str_replace(rep, repwith, string);

自定义的过滤器

function convertSpace($str){    return str_replace('_', ' ', $str);}$string = 'jone_is_a_good_boy';echo filter_var($string, FILTER_CALLBACK, array('options'=>'convertSpace') );

mysql与php

//连接mysql数据库: $con = mysql_connect(server,username,password); //servername 可选, 默认为localhost:3306mysql_close($con); //关闭跟mysql的连接mysql_select_db("mydb", $con); //打开具体的数据库$result = mysql_query($sql,$con);$row = mysql_fetch_array($result); //以数组的形式取一行数据

连接到ODBC

odbc_connect(dsn, user, psw) //连接到ODBC数据源$con = odbc_connect('northwind', '','');$sql = "select * from customers";$rs = odbc_exec($con, $sql); //执行sqlodbc_fetch_array($rs); //取回一条记录odbc_result($rs,1); //返回第一个字段的值 参数2可以是编号或字段名odbc_result($rs, "companyName");odbc_close(); //关闭连接。

php常量和define()函数:

PHP预先定义了几个常量,并提供了一种机制在运行时自己定义。常量和变量基本上是一样的,不同的是:常量必须用DEFINE函数定义,常量一旦定义好,就不能被重新定义了。

PHP中预先定义好的常量:

FILE

当前正在处理的脚本文件名。如果使用在一个被包含的文件中,那么它的值就是这个被包含的文件,而不是包含它的文件名。

LINE

正在处理的文件的当前行数。

PHP_VERSION

表示PHP处理器的当前版本,如:'3.0.8-dev'。

PHP_OS

PHP处理器所在的操作系统名字,如:'Linux'。

TRUE

真值

FALSE

假值

可以用DEFINE函数定义更多的常量。

如,定义常量:

<?php

define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
?>
FILELINE 的举例

<?php

function report_error($file, $line, $message) {
echo "An error occured in $file on line $line: $message.";
}
report_error(FILE,LINE, "Something went wrong!");
?>
-----------------------------------------------------------
header()函数使用详解
-----------------------------------------------------------

一、作用:

~~~~~~~~~
PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2616。
传统的标头一定包含下面三种标头之一,并只能出现一次。
Location: xxxx:yyyy/zzzz
Content-Type: xxxx/yyyy
Status: nnn xxxxxx

二、先来了解一下HTTP协议的运作方式

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
它分四个过程,在HTTP协议中,服务端是指提供HTTP服务的部分,客户端是指你使用的浏览器或者下载工具等等。在通讯时,由客户端发出请求连接,服务端建立连接;然后,客户端发出HTTP请求(Request),服务端返回响应信息(Respond),由此完成一个HTTP操作。

三、HTTP协议状态码表示的意思

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1××  保留
  2××  表示请求成功地接收
  3××  为完成请求客户需进一步细化请求
  4××  客户错误
  5××  服务器错误

四、操作实例:

~~~~~~~~~~~~~
<1> 重定向功能,这种最常见
复制代码 代码如下:

<?php

Header("Location: http://www.php.net");
?>
<2> 强制用户每次访问这个页面时获取最新资料,而不是使用存在客户端的缓存。
复制代码 代码如下:

<?php

//告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");
//告诉浏览器此页面的最后更新日期(用格林威治时间表示)也就是当天,目的就是强迫浏览器获取最新资料
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
//告诉客户端浏览器不使用缓存
header("Cache-Control: no-cache, must-revalidate");
//参数(与以前的服务器兼容),即兼容HTTP1.0协议
header("Pragma: no-cache");
<3>输出MIME类型
header("Content-type: application/file");
<4>文件长度
header("Content-Length: 227685");
<5>接受的范围单位
header("Accept-Ranges: bytes");
<6>缺省时文件保存对话框中的文件名称
header("Content-Disposition: attachment; filename=$filename");
?>
<7> 输出状态值到浏览器,主要用于访问权限控制
复制代码 代码如下:

<?php

header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');
?>

比如要限制一个用户不能访问该页,则可设置状态为404,如下所示,这样浏览器就显示为即该页不存在

复制代码 代码如下:

<?php

header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
?>

转载地址:http://zwvdm.baihongyu.com/

你可能感兴趣的文章
网络对抗作业 一
查看>>
用 Flask 来写个轻博客 (20) — 实现注册表单与应用 reCAPTCHA 来实现验证码
查看>>
PHP性能优化
查看>>
MySQL把文件导入表中
查看>>
redis配置说明
查看>>
display:inline-block,block,inline的区别与用法
查看>>
LeetCode 146: LRU Cache
查看>>
MFC编程汇总
查看>>
【NOIP2013】火柴排队
查看>>
取汉字拼音首字母的存储过程--很值得收藏的数据库自定义函数
查看>>
UVA11464 Even Parity
查看>>
cocos2dx 3.2 Scale9Sprite点九图
查看>>
记前端小白入门15天
查看>>
百练2974: 487-3279 之 Java 解答, 可惜超时
查看>>
jquery中的trigger()和preventDefault()方法
查看>>
七层网络协议
查看>>
【实例总结】fixed定位元素内部滚动显示
查看>>
php——优化篇
查看>>
内容提供者
查看>>
tab页两个foreach同步刷新问题
查看>>