php常用知识集锦

php常用知识集锦

很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程。

1、判断是否为空

empty($_POST["name"])

2、检测邮箱是否合法,判断正则表达式

if (!preg_match("/([w-]+@[w-]+.[w-]+)/",$email))

3、下拉菜单

1 <form action="" method="get"> 
2     <select name="q">
3     <option value="">选择一个站点:</option>
4     <option value="RUNOOB">Runoob</option>
5     <option value="GOOGLE">Google</option>
6     <option value="TAOBAO">Taobao</option>
7     </select>
8     <input type="submit" value="提交">
9 </form>

调用的时候直接调用q这个名字

 1 <?php
 2 $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
 3 if($q) {
 4         if($q =='RUNOOB') {
 5                 echo '菜鸟教程<br>http://www.runoob.com';
 6         } else if($q =='GOOGLE') {
 7                 echo 'Google 搜索<br>http://www.google.com';
 8         } else if($q =='TAOBAO') {
 9                 echo '淘宝<br>http://www.taobao.com';
10         }
11 } else {
12 ?>

isset函数的使用,已经看到了很多这样的句式了

4、php日期

直接date()函数加格式就好

1 <?php
2 echo date("Y/m/d") . "<br>";
3 echo date("Y.m.d") . "<br>";
4 echo date("Y-m-d");
5 ?>

5、php包含

PHP include 和 require 语句

在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。

include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

 1 include 'filename'; 2 3 或者 4 5 require 'filename'; 

6、php文件处理

fopen() 函数用于在 PHP 中打开文件。

 1 <?php 2 $file=fopen("welcome.txt","r"); 3 ?> 

 <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> 

 <?php $file = fopen("test.txt","r"); //执行一些代码 fclose($file); ?> 

 if (feof($file)) echo "文件结尾"; 

当忘记用法的时候可以多参照教程。

7、php文件上传

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

 1 <html>
 2 <head>
 3 <meta charset="utf-8">
 4 <title>菜鸟教程(runoob.com)</title>
 5 </head>
 6 <body>
 7 
 8 <form action="upload_file.php" method="post" enctype="multipart/form-data">
 9     <label for="file">文件名:</label>
10     <input type="file" name="file" id="file"><br>
11     <input type="submit" name="submit" value="提交">
12 </form>
13 
14 </body>
15 </html>

将以上代码保存到 form.html 文件中。

有关上面的 HTML 表单的一些注意项列举如下:

  • <form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
  • <input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。


创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

 1 <?php
 2 if ($_FILES["file"]["error"] > 0)
 3 {
 4     echo "错误:" . $_FILES["file"]["error"] . "<br>";
 5 }
 6 else
 7 {
 8     echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
 9     echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
10     echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
11     echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
12 }
13 ?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件

第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。如下所示:

  • $_FILES["file"]["name"] - 上传文件的名称
  • $_FILES["file"]["type"] - 上传文件的类型
  • $_FILES["file"]["size"] - 上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关允许哪些用户上传文件的限制。

8、php Cookie

用法 :

setcookie(name, value, expire, path, domain); 

设置失效时间:

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>

取出cookie的值:

1 <?php
2 // 输出 cookie 值
3 echo $_COOKIE["user"];
4 
5 // 查看所有 cookie
6 print_r($_COOKIE);
7 ?>

9、PHP Session

Session用于知道你是谁

Cookie用于存储你的用户信息

您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量UID 存储在 cookie 中,或者通过 URL 进行传导。

利用session来统计访问量:

在下面的实例中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则创建 "views" 变量,并把它设置为 1:

 1 <?php
 2 session_start();
 3 
 4 if(isset($_SESSION['views']))
 5 {
 6     $_SESSION['views']=$_SESSION['views']+1;
 7 }
 8 else
 9 {
10     $_SESSION['views']=1;
11 }
12 echo "浏览量:". $_SESSION['views'];
13 ?>

10、php发送电子邮件

PHP mail() 函数用于从脚本中发送电子邮件。

语法

mail(to,subject,message,headers,parameters)
参数描述
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF ( ) 来分隔各行。每行应该限制在 70 个字符内。
headers 可选。规定附加的标题,比如 From、Cc 和 Bcc。应当使用 CRLF ( ) 分隔附加的标题。
parameters 可选。对邮件发送程序规定额外的参数。

注释:PHP 运行邮件函数需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等)。所用的程序通过在 php.ini 文件中的配置设置进行定义。请在我们的 PHP Mail 参考手册 阅读更多内容。

PHP 简易 E-Mail

通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。

在下面的实例中,我们首先声明变量($to, $subject, $message, $from, $headers),然后我们在 mail() 函数中使用这些变量来发送了一封 E-mail:

1 <?php
2 $to = "someone@example.com";         // 邮件接收者
3 $subject = "参数邮件";                // 邮件标题
4 $message = "Hello! 这是邮件的内容。";  // 邮件正文
5 $from = "someonelse@example.com";   // 邮件发送者
6 $headers = "From:" . $from;         // 头部信息设置
7 mail($to,$subject,$message,$headers);
8 echo "邮件已发送";
9 ?>

直接这样是发不过去的,会有如下错误提示消息,其实也就是25端口和smtp邮件服务器都没有打开

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:2017-02-21--SoftWarePHPSOFTWAREphpStudyWWWDemoPHPDemoPHP13mailTest.php on line 7
邮件已发送

11、php错误处理

在 PHP 中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息。

简单的 "die()" 语句用于错误检测

 1 <?php
 2 if(!file_exists("welcome.txt"))
 3 {
 4     die("文件不存在");
 5 }
 6 else
 7 {
 8     $file=fopen("welcome.txt","r");
 9 }
10 ?>

12、php异常

异常的基本使用

当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。

如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。

让我们尝试抛出一个异常,同时不去捕获它:

 1 <?php
 2 // 创建一个有异常处理的函数
 3 function checkNum($number)
 4 {
 5     if($number>1)
 6     {
 7         throw new Exception("Value must be 1 or below");
 8     }
 9     return true;
10 }
11  
12 // 触发异常
13 checkNum(2);
14 ?>

上面的代码会得到类似这样的一个错误:

Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in /www/runoob/test/test.php:7 Stack trace: #0 /www/runoob/test/test.php(13): checkNum(2) #1 {main} thrown in /www/runoob/test/test.php on line 7

Try、throw 和 catch

要避免上面实例中出现的错误,我们需要创建适当的代码来处理异常。

适当的处理异常代码应该包括:

  1. Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
  2. Throw - 里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"。
  3. Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

让我们触发一个异常:

 1 <?php
 2 // 创建一个有异常处理的函数
 3 function checkNum($number)
 4 {
 5     if($number>1)
 6     {
 7         throw new Exception("变量值必须小于等于 1");
 8     }
 9         return true;
10 }
11     
12 // 在 try 块 触发异常
13 try
14 {
15     checkNum(2);
16     // 如果抛出异常,以下文本不会输出
17     echo '如果输出该内容,说明 $number 变量';
18 }
19 // 捕获异常
20 catch(Exception $e)
21 {
22     echo 'Message: ' .$e->getMessage();
23 }
24 ?>

上面代码将得到类似这样一个错误:

Message: 变量值必须小于等于 1

实例解释:

上面的代码抛出了一个异常,并捕获了它:

  1. 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。
  2. 在 "try" 代码块中调用 checkNum() 函数。
  3. checkNum() 函数中的异常被抛出。
  4. "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。
  5. 通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息。

然而,为了遵循 "每个 throw 必须对应一个 catch" 的原则,可以设置一个顶层的异常处理器来处理漏掉的错误。

13、php过滤器

PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。

函数和过滤器

如需过滤变量,请使用下面的过滤器函数之一:

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

在下面的实例中,我们用 filter_var() 函数验证了一个整数:

实例

<?php
$int = 123;
 
if(!filter_var($int, FILTER_VALIDATE_INT))
{
    echo("不是一个合法的整数");
}
else
{
    echo("是个合法的整数");
}
?>

上面的代码使用了 "FILTER_VALIDATE_INT" 过滤器来过滤变量。由于这个整数是合法的,因此上面的代码将输出:

如果我们尝试使用一个非整数的变量(比如 "123abc"),则将输出:"Integer is not valid"。

如需查看完整的函数和过滤器列表,请访问我们的 PHP Filter 参考手册

检测一个数字是否在一个范围内

以下实例使用了 filter_var() 函数来检测一个 INT 型的变量是否在 1 到 200 内:

 1 <?php
 2 $int = 122;
 3 $min = 1;
 4 $max = 200;
 5 
 6 if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
 7     echo("变量值不在合法范围内");
 8 } else {
 9     echo("变量值在合法范围内");
10 }
11 ?>

14、PHP JSON

JSON 函数

函数描述
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error 返回最后发生的错误

PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

string json_encode ( $value [, $options = 0 ] )
  • value: 要编码的值。该函数只对 UTF-8 编码的数据有效。
  • options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT

以下实例演示了如何将 PHP 数组转换为 JSON 格式数据:

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

以上代码执行结果为:

{"a":1,"b":2,"c":3,"d":4,"e":5}

15、PHP连接数据库的方式

PHP 5 及以上版本建议使用以下方式连接 MySQL :

  • MySQLi extension ("i" 意为 improved)
  • PDO (PHP Data Objects)

MySQLi 和 PDO 有它们自己的优势:

PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。

所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。

两者都是面向对象, 但 MySQLi 还提供了 API 接口。

两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。

实例 (MySQLi - 面向对象)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5  
 6 // 创建连接
 7 $conn = new mysqli($servername, $username, $password);
 8  
 9 // 检测连接
10 if ($conn->connect_error) {
11     die("连接失败: " . $conn->connect_error);
12 } 
13 echo "连接成功";
14 ?>

实例 (MySQLi - 面向过程)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5  
 6 // 创建连接
 7 $conn = mysqli_connect($servername, $username, $password);
 8  
 9 // 检测连接
10 if (!$conn) {
11     die("Connection failed: " . mysqli_connect_error());
12 }
13 echo "连接成功";
14 ?>

哦!!面向对象和面向过程的连接是一个是对象,一个只是普通的函数(像我们以往的连接方法,面向过程)。

16、PHP MySQL 预处理语句

INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)

预处理语句对于防止 MySQL 注入是非常有用的。

17、php操作xml

三种方式:

XML Expat Parser

XML DOM

XML SimpleXML

SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。

与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据

SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:

PHP SimpleXML 实例

假设我们有如下的 XML 文件,"note.xml":

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

现在我们想要输出上面的 XML 文件的不同信息:

实例 1

输出 $xml 变量(是 SimpleXMLElement 对象)的键和元素:

<?php $xml=simplexml_load_file("note.xml"); print_r($xml); ?>

运行实例 »

以上代码将输出:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )

18、PHP与AJAX

ajax实例

PHP – AJAX 与 PHP | 菜鸟教程
http://www.runoob.com/php/php-ajax-php.html

当用户在上面的输入框中键入字符时,会执行 "showHint()" 函数。该函数由 "onkeyup" 事件触发:

 1 <html>
 2 <head>
 3 <script>
 4 function showHint(str)
 5 {
 6     if (str.length==0)
 7     { 
 8         document.getElementById("txtHint").innerHTML="";
 9         return;
10     }
11     if (window.XMLHttpRequest)
12     {
13         // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
14         xmlhttp=new XMLHttpRequest();
15     }
16     else
17     {    
18         //IE6, IE5 浏览器执行的代码
19         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
20     }
21     xmlhttp.onreadystatechange=function()
22     {
23         if (xmlhttp.readyState==4 && xmlhttp.status==200)
24         {
25             document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
26         }
27     }
28     xmlhttp.open("GET","gethint.php?q="+str,true);
29     xmlhttp.send();
30 }
31 </script>
32 </head>
33 <body>
34 
35 <p><b>在输入框中输入一个姓名:</b></p>
36 <form> 
37 姓名: <input type="text" onkeyup="showHint(this.value)">
38 </form>
39 <p>返回值: <span id="txtHint"></span></p>
40 
41 </body>
42 </html>

源代码解释:

如果输入框是空的(str.length==0),该函数会清空 txtHint 占位符的内容,并退出该函数。

如果输入框不是空的,那么 showHint() 会执行以下步骤:

  • 创建 XMLHttpRequest 对象
  • 创建在服务器响应就绪时执行的函数
  • 向服务器上的文件发送请求
  • 请注意添加到 URL 末端的参数(q)(包含输入框的内容)
原文地址:https://www.cnblogs.com/Renyi-Fan/p/8553317.html