php基础知识笔记
基本语法
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 + "<br/>";
}
数组:数值数组,关联数组,多维数组
$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"] //获取cookie
print_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()才可用,
//在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 "<b>error:</b>[$errno]$errmsg<br/>";
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 , catch
function 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() . " : <b> " . $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:3306
mysql_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); //执行sql
odbc_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."
?>
用 FILE 和 LINE 的举例
<?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");
?>
php基础知识笔记的更多相关文章
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- Java多线程基础知识笔记(持续更新)
多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...
- javascript基础知识笔记-自用
笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...
- Mysql之基础知识笔记
Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...
- java基础知识-笔记整理
1.查看已安装jdk文件路径 CMD输入java -verbose. 2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...
- JavaScript基础知识笔记
做前端几年了,一直疏于整理归纳,所以这两天把基础看了一遍,加上使用经验,整理了基础知识中关键技术,旨在系统性的学习和备忘.如果发现错误,请留言提示,谢谢! 重要说明:本文只列举基础知识点,中级和高级内 ...
- Javascript 基础知识笔记
标签(空格分隔): 廖老师学习笔记 javascript 基本入门 根据廖雪峰老师官网,自己看后的简单笔记 第一小节 基本知识 <script type="text/javascrip ...
- 初学MySQL基础知识笔记--01
本人初入博客园,第一次写博客,在今后的时间里会一点点的提高自己博客的水平,以及博客的排版等. 在今天,我学习了一下MySQL数据库的基本知识,相信关于MySQL的资料网上会有很多,所以我就不在这里复制 ...
- mysql基础知识笔记
Mysql基础笔记 环境配置 基本概念 mysql命令行 进入 use show 查询 select order by where like 数据过滤regexp concat 文本函数 日期函数 数 ...
- 微信小程序基础知识笔记
微信小程序笔记 文件构成 全局文件 app.json 小程序全局配置文件,必要,自动生成 app.js 小程序入口JS文件,一般只需申明全局变量.处理生命周期以及版本升级即可,必要 app.wxss ...
随机推荐
- JAVA设计原则
1.单一职责规则(SRP):有且仅有一个原因引起类的变化. 2.依赖倒置规则(DIP): 高层模块不应该依赖底层模块,两者都用依赖接口: 接口不依赖细节: 细节依赖接口. 3.接口隔离规则:类间的 ...
- 我定制的jquery ui主题
打开网址 http://jqueryui.com/themeroller/,找到Gallery找到Redmond点击edit 将圆角设置成3px,让圆角更低调:将下面的每个Background的背景图 ...
- sass和compass安装
安装Sass和Compass sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby.(注:mac下自带Ruby无需在安装Ruby!) window下安装SASS首先需要安装Ruby,先 ...
- CSS---input标签注意
总结一下,在给input标签写CSS时需要注意的有以下几点: 一.不要给属性为text的input标签设置高度,这样无法让IE浏览器下输入框中的文字垂直居中显示.尽管你后来想要通过设置padding属 ...
- 利用RTE创建自定义软件安装包(一)
说明:鉴于MDK5.0推出的新功能,安富莱电子顺势推出几期MDK5.0新功能的使用方法.MDK5.0提供的RTE功能还是很不错的,这个功能一方面方便用户创建自己常用的驱动文件包,还有一个很重要的功能就 ...
- delphi新语法之泛型实现的对象池模板
现在的DELPHI因为支持泛型的语法,所以也能支持模板编程了. // 标准模板 unit UntPools; interface uses Classes, SysUtils, Unt ...
- android权限列表
原文:[转]android权限列表 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略 ...
- (14)[Xamarin.Android] 异步的网络图片下载
原文 [Xamarin.Android] 异步的网络图片下载 在设计要从网络上接大量数据并且显示在Android Listview中,而这些资料是利用Json格式传送并且数据中包含这图片档案. 那在X ...
- billing是如何的拆分的?
在SD模块中,我们经常会考虑Billing分拆,分拆的标准如下: 一.根据Billing的字段项目进行分拆 在sap的标准系统中,系统会比较VBRK表的所有字段(也包含复制拆分组合标准字段ZUKRI) ...
- MySql数据库连接池
1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的 ...