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 "非法的文件格式";
	}
?>

文件上传错误码

错误错误原因
0UPLOAD_ERR_OK没有错误发生,文件上传成功
1UPLOAD_ERR_INI_SIZE上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
2UPLOAD_ERR_FORM_SIZE上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
3UPLOAD_ERR_PARTIAL文件只有部分被上传
4UPLOAD_ERR_NO_FILE没有文件被上传
6UPLOAD_ERR_NO_TMP_DIR找不到临时文件夹
7UPLOAD_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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值