站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
十天学会PHP/第七天:文件上传、Cookies
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{PHPtop}} ==打开文件fopen()== *fopen()函数用于在 PHP 中打开文件。 *此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件: <pre> <html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html> </pre> 文件可能通过下列模式来打开: *r 只读。在文件的开头开始。 *r+ 读/写。在文件的开头开始。 *w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 *w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 *a 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。 *a+ 读/追加。通过向文件末端写内容,来保持文件内容。 *x 只写。创建新文件。如果文件已存在,则返回 FALSE。 *x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 *注释:如果 fopen() 无法打开指定文件,则返回 0(false)。 *'''例子''' *如果 fopen() 不能打开指定的文件,下面的例子会生成一段消息: <pre> <html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html> </pre>关闭文件 *fclose() 函数用于关闭打开的文件。 </pre> <?php $file = fopen("test.txt","r"); //some code to be executed fclose($file); ?> </pre> *'''检测 End-of-file''' *feof() 函数检测是否已达到文件的末端 (EOF)。 *在循环遍历未知长度的数据时,feof() 函数很有用。 *注释:在 w 、a 以及 x 模式,您无法读取打开的文件! <pre>if (feof($file)) echo "End of file";</pre> *'''逐行读取文件''' f*gets() 函数用于从文件中逐行读取文件。 *注释:在调用该函数之后,文件指针会移动到下一行。 *'''例子''' *下面的例子逐行读取文件,直到文件末端为止: <pre> <?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?> </pre> *'''逐字符读取文件''' *fgetc() 函数用于从文件逐字符地读取文件。 *注释:在调用该函数之后,文件指针会移动到下一个字符。 *'''例子''' *下面的例子逐字符地读取文件,直到文件末端为止: <pre> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?> </pre> ==创建一个文件上传表单== *允许用户从表单上传文件是非常有用的。 *请看下面这个供上传文件的 [[HTML]] 表单: <pre> <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html> </pre> *请留意如下有关此表单的信息: *<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 *<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。 *注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。 ===创建上传脚本=== *"upload_file.php" 文件含有供上传文件的代码: <pre> <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?></pre> *通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。 *第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样: <pre> $_FILES["file"]["name"] - 被上传文件的名称 $_FILES["file"]["type"] - 被上传文件的类型 $_FILES["file"]["size"] - 被上传文件的大小,以字节计 $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 $_FILES["file"]["error"] - 由文件上传导致的错误代码 </pre> *这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。 ===上传限制=== *在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb: <pre> <?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?> </pre> *注释:对于 [[IE]],识别 jpg 文件的类型必须是 pjpeg,对于[[FireFox]],必须是 jpeg。 ===保存被上传的文件=== *上面的例子在[[服务器]]的 PHP 临时文件夹创建了一个被上传文件的临时副本。 *这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置: <pre> <?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?> </pre> ==什么是 Cookie?== *cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 *如何创建 cookie? *setcookie() 函数用于设置 cookie。 *注释:setcookie() 函数必须位于 <html> 标签之前。 *'''语法''' <pre>setcookie(name, value, expire, path, domain);</pre> *'''例子''' *在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期: <pre> <?php setcookie("user", "Alex Porter", time()+3600); ?> <html> <body> </body> </html> </pre> *注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。 ===如何取回 Cookie 的值?=== *PHP 的 $_COOKIE 变量用于取回 cookie 的值。 *在下面的例子中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上: <pre> <?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?></pre> *在下面的例子中,我们使用 isset() 函数来确认是否已设置了 cookie: <pre> <html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?> </body> </html> </pre> ===如何删除 cookie?=== *当删除 cookie 时,您应当使过期日期变更为过去的时间点。 *删除的例子: <pre> <?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?> <pre> ===如果浏览器不支持 cookie 该怎么办?=== *如果您的应用[[程序]]涉及不支持 cookie 的[[浏览器]],您就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。 *下面的表单在用户单击提交按钮时向 "welcome.php" 提交了用户输入: <pre> <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>取回 "welcome.php" 中的值,就像这样: <html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old. </body> </html> </pre> ==参考来源== *http://www.w3school.com.cn/php/php_cookies.asp [[category:PHP|P]] {{PHPup}}
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:PHPtop
(
编辑
)
模板:PHPup
(
编辑
)