php 基础复习 2018-06-18
(1)cookie相关
cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。
如何创建 cookie?
setcookie() 函数用于设置 cookie。语法:setcookie(name, value, expire, path, domain);
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
如何删除 cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
setcookie("user", "", time()-3600);
(2)PHP Sessions
PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
开启session:session_start() 。
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量。
删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
(3)PHP filter_var() 函数
功能:获取一个变量,并进行过滤。
语法:filter_var(variable, filter, options)
示例,过滤一个email
$field=filter_var($email, FILTER_SANITIZE_EMAIL); if(filter_var($field, FILTER_VALIDATE_EMAIL)){ return TRUE; }else{ return FALSE; }
函数第二个参数常用判断:
FILTER_VALIDATE_URL 把值作为 URL 来验证。
FILTER_VALIDATE_EMAIL 把值作为 e-mail 来验证。
FILTER_VALIDATE_IP 把值作为 IP 地址来验证。
FILTER_VALIDATE_FLOAT 以浮点数验证值。
FILTER_SANITIZE_EMAIL 删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
(4)修改PHP的错误处理程序
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
(5)主动触发错误:
trigger_error("Value must be 1 or below");
trigger_error("Value must be 1 or below",E_USER_WARNING);
(6)PHP 异常处理
异常(Exception)用于在指定的错误发生时改变脚本的正常流程。
try{ }catch(Exception $e){ //捕获异常 echo 'Message: ' .$e->getMessage(); }
多个异常可以为一段脚本使用多个异常,来检测多种情况。
class customException extends Exception{ public function errorMessage(){ $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile().': <b>'.$this->getMessage().'</b> is not a valid E-Mail address'; return $errorMsg; } } $email = "someone@example.com"; try{ if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){ throw new customException($email); } //check for "example" in mail address if(strpos($email, "example") !== FALSE){ throw new Exception("$email is an example e-mail"); } } catch (customException $e){ echo $e->errorMessage(); } catch(Exception $e){ echo $e->getMessage(); }
(7)设置顶层异常处理器 (Top Level Exception Handler)
set_exception_handler() 函数可设置处理所有未捕获异常的用户定义函数。
function myException($exception) { echo "<b>Exception:</b> " , $exception->getMessage(); } set_exception_handler('myException'); throw new Exception('Uncaught Exception occurred');