zoukankan      html  css  js  c++  java
  • 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 + "	";
    }
    
    do{
    	echo $i + "	";
    }while($i<10)
    
    for($i=0; $i<10; $i++){
    	echo $i + "	";
    }
    
    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

    //可以直接从脚本发出邮件, 需要一个安装好的邮件系统支持 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."
    ?>
    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"); 
    ?>
  • 相关阅读:
    Object detection overview
    CMU: A Baseline for 3D Multi-Object Tracking
    A Review of Visual Trackers and Analysis of its Application to Mobile Robot
    js回顾学习笔记
    写给.NET开发者的Python教程(二):基本类型和变量
    钽电容 Case B 和 MLCC 1210 区别
    linux sed命令就是这么简单
    shell 字符串处理汇总(查找,替换等等)
    linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )
    php 给定时间戳 加一月 如果下一月天数不够就返回下一月最后一天
  • 原文地址:https://www.cnblogs.com/stephenykk/p/4574560.html
Copyright © 2011-2022 走看看