文件读写
fopen(filedir,operate);
operate:r、r+、w、w+、x、x+ 分别为可读、读写、写、读写、 (写、读写)后面两个如果文件已经存在则返回false和错误
a 追加 a+ 读追加
fclose关闭文件
feof检测是否到达文件末尾
fgets 逐行读取
fgetc逐字符读取
例子:
<?php $file = fopen("1.txt", "r") or exit("无法打开文件!"); // 读取文件每一行,直到文件结尾 while(!feof($file)) { echo fgets($file). "<br>"; echo fgetc($file); } fclose($file); ?>
还有以下函数:
basename() 返回路径中的文件名部分。
chgrp() 改变文件组。
chmod() 改变文件模式。
chown() 改变文件所有者。
copy() 复制文件。
delete() 参见 unlink() 或 unset();
dirname() 返回路径中的目录名称部分。
等等
如果打开一个文件,文件名为中文,如果系统编程和当前文档编码不一致,会导致文件找不到无法打开,解决方法是用 iconv 函数编码转换成一致,如下:
$fpath=iconv('UTF-8','GB2312',"题库.csv"); $file=fopen($fpath,"r") or exit("无法打开文件!"); //此处省略相关操作 fclose($file);
文件上传
代码摘要
<form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">文件名:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="提交"> </form>
php脚本
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"]; }
第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。
限制文件类型
$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 (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"]; }
cookie
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
cookie值保存在浏览器
setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 <html> 标签之前。
在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "runoob"。我们也规定了此 cookie 在一小时后过期:
<?php setcookie("user", "runoob", time()+3600); ?> <html> .....
在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的实例中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:
isset() 函数来确认是否已设置了 cookie:
if (isset($_COOKIE["user"])) echo "欢迎 " . $_COOKIE["user"] . "!<br>"; else echo "普通访客!<br>";
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
删除的实例:
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600); ?>
session
session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
<?php session_start(); ?>
$_SESSION['views']=1; 赋值
unset($_SESSION['views']); 销毁
您也可以通过调用 session_destroy() 函数彻底销毁 session:
Error
默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息
我们将为您讲解不同的错误处理方法:
- 简单的 "die()" 语句
- 自定义错误和错误触发器
- 错误报告