PHP进阶知识——PHP学习笔记(三)

PHP基础知识——PHP学习笔记(一)

多维数组

一个数组中的值可以是另一个数组,此数组的值也可以是一个数组,照此,可以创建二维或者三维数组

<?php
	$arr1=array(
		$arrch1=array('1','2','3'),
		$arrch2=array('1','2','3'),
		$arrch3=array('1','2','3')
	);
	print_r($arr1);//print_r array,将会按照一定格式显示键和元素
?> 
输出结果:
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )

日期

date() 函数用于格式化时间/日期

string date ( string $format [, int $timestamp ] )

参数 描述
format 必需。规定时间戳的格式
timestamp 必需。规定时间戳的格式
<?php
	echo date("y/m/d",strtotime("2012-5-6"))."<br />";//strtotime为获取时间戳
	echo date("y-m-d")."<br />";//默认为当前时间戳 time()
?> 
输出结果
19/05/06
19-06-02

详细参数

文件

打开文件

file_exists()

检查文件和目录是否存在,返回布尔值

fopen()

第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件
无法打开文件则返回false

模式 描述
r 只读。在文件的开头开始
r+ 读/写。在文件的开头开始
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件
a+ 读/追加。通过向文件末尾写内容,来保持文件内容
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误

关闭文件

fclose()

<?php
	$file = fopen("test.txt","r")
	fclose($file);
?>

文件操作

函数 说明
fgets() 函数用于从文件中逐行读取文件,在调用该函数之后,文件指针会移动到下一行
getc() 函数用于从文件中逐字符地读取文件,在调用该函数之后,文件指针会移动到下一个字符
feof() 函数检测是否已到达文件末尾(EOF),写状态下不可用
fwrite()/fput() 写入文件,可选length参数,出现错误返回false
<?php
	$filename="test.txt";
	if(file_exists($filename)){
		$file=fopen($filename,'r+');
		if($file){
			fwrite($file,"Hello World",5);
		}else{
			echo "文件无法打开";
		}
	}else{
		echo "文件不存在";
	}
?> 

test.txt内容:Hello

Filesystem 函数

文件上传

前端代码

1.form的enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 “multipart/form-data”
2.input 标签的 type=“file” 属性规定了应该把输入作为文件来处理

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form action="upload_file.php" method="post" enctype="multipart/form-data">
    		<label>文件名:</label>
   			<input type="file" name="file"><br>
    		<input type="submit" value="提交">
		</form>
	</body>
</html

后端代码

1.创建上传脚本
全局数组 $_FILES,第一个参数是表单的 input name,第二个下标

全局数组 含义
$_FILES[“file”][“name”] 上传文件的名称
$_FILES[“file”][“type”] 上传文件的类型
$_FILES[“file”][“size”] 上传文件的大小,以字节计
$_FILES[“file”][“tmp_name”] 存储在服务器的文件的临时副本的名称
$_FILES[“file”][“error”] 由文件上传导致的错误代码
if ($_FILES["file"]["error"] > 0)
{
    echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
    echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
    echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}

2.上传限制
用户只能上传 .gif、.jpeg、.jpg、.png 文件,文件大小必须小于 200 kB

$allowedExts = array("gif", "jpeg", "jpg", "png");//设置允许上传的扩展名
$temp = explode(".", $_FILES["file"]["name"]);//explode()将字符串分解成数组
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))//判断文件类型
&&($_FILES["file"]["size"] < 204800)    // 判断文件大小
&& in_array($extension, $allowedExts)) //判断拆分的字符串能不能在允许的字符串中找到
{
	/*上传代码*/
}
else
{
    echo "非法的文件格式";
}

3.保存上传文件
服务器的 PHP 临时文件夹中创建了一个被上传文件的临时副本,这个临时的副本文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置

if (file_exists("upload/" . $_FILES["file"]["name"]))//检查文件是否存在
{
    echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
    // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
    echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
}

完整代码

<?php
    // 允许上传的图片后缀
	$allowedExts = array("gif", "jpeg", "jpg", "png");
	$temp = explode(".", $_FILES["file"]["name"]);
	$extension = end($temp);     // 获取文件后缀名
	if ((($_FILES["file"]["type"] == "image/gif")
		||($_FILES["file"]["type"] == "image/jpeg")
		||($_FILES["file"]["type"] == "image/jpg")
		||($_FILES["file"]["type"] == "image/pjpeg")
		||($_FILES["file"]["type"] == "image/x-png")
		||($_FILES["file"]["type"] == "image/png"))
		&&($_FILES["file"]["size"] < 204800)   // 小于 200 kb
		&&in_array($extension, $allowedExts)){
    		if($_FILES["file"]["error"] > 0){
        		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
    		}
    		else{
       			echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
        		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
       			echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
       			echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
        
        		// 判断当期目录下的 upload 目录是否存在该文件
        		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
        		if (file_exists("upload/" . $_FILES["file"]["name"])){
           			echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        		}
        		else{
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            		move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
           			echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
      			}
    		}
		}
	else{
    	echo "非法的文件格式";
	}
?>

文件上传错误码

错误 错误原因
0 UPLOAD_ERR_OK 没有错误发生,文件上传成功
1 UPLOAD_ERR_INI_SIZE 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
2 UPLOAD_ERR_FORM_SIZE 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
3 UPLOAD_ERR_PARTIAL 文件只有部分被上传
4 UPLOAD_ERR_NO_FILE 没有文件被上传
6 UPLOAD_ERR_NO_TMP_DIR 找不到临时文件夹
7 UPLOAD_ERR_CANT_WRITE 文件写入失败

文件上传中type值大全

Cookie

创建Cookie

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

setcookie() 函数必须位于 标签之前

<?php
	$expire=time()+60*60*24;//设置过期时间1天
	setcookie("name", "bob", $expire);
?>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<?php
			if(isset($_COOKIE["name"])){
   				echo "欢迎 " . $_COOKIE["name"] . "!<br>";
   				// 查看所有 cookie
				print_r($_COOKIE);
			}
			else
    			echo "普通访客!<br>";
		?>
	</body>
</html>
输出结果
欢迎 bob!
Array ([name] => bob )

删除Cookie

将时间设置过期

<?php
setcookie("name", "", time()-60);
?>

Session

1.工作机制:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导
2.会话信息是临时的,在用户离开网站后将被删除

创建 Session

session_start()

session_start() 函数必须位于 标签之前

储存 Session

键值对形式存储

$_SESSION[‘key’]=value

销毁 Session

销毁指定键

unset()

销毁所有Session

session_destroy()

电子邮件

需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等)。所用的程序通过在 php.ini 文件中的配置设置进行定义

参考

mail(to,subject,message,headers,parameters)

参数 描述
to 必需。规定 email 接收者
subject 必需。规定 email 的主题
message 必需。定义要发送的消息
headers 可选。规定附加的标题
parameters 可选。对邮件发送程序规定额外的参数

JSON

json_encode

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
   $arr = array('a'=>1,'b'=>2,'c'=>3);
   echo json_encode($arr)."<br />";
   class person{
   		public $name;
   		public $age;
   		public $sex;
   		public function __construct($name,$age,$sex){
   			$this->name=$name;
   			$this->age=$age;
   			$this->sex=$sex;
   		}
   }
   $p=new person("bob",18,"man");
   echo json_encode($p);
?>
输出结果
{"a":1,"b":2,"c":3}
{"name":"bob","age":18,"sex":"man"}

json_decode

json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量

json_decode ( $ json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

参数 含义
json_string 待解码的 JSON 字符串,必须是 UTF-8 编码数
assoc 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象
depth 整数类型的参数,它指定递归深
options 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING
<?php
   $json = '{"a":1,"b":2,"c":3}';
   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>
输出结果
object(stdClass)[1]
public 'a' => int 1
public 'b' => int 2
public 'c' => int 3
 	
array (size=3)
 'a' => int 1
 'b' => int 2
 'c' => int 3
发布了20 篇原创文章 · 获赞 25 · 访问量 7478

猜你喜欢

转载自blog.csdn.net/qq_41866776/article/details/90738948
今日推荐