说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

技术杂项PHP教程结束篇 -PHP初学入门教程13

HTML文档下载 WORD文档下载 PDF文档下载
图像生成、cookie操作等内容。

 

13.1 生成图像 

 

  PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。

 

<?Header("Content-type: image/gif");$string=implode($argv," ");$im = imagecreatefromgif("images/button1.gif");$orange = ImageColorAllocate($im, 220, 210, 60);$px = (imagesx($im)-7.5*strlen($string))/2;ImageString($im,3,$px,9,$string,$orange);ImageGif($im);ImageDestroy($im);?>
(译者注:以上代码段缺少注释,请读者参考PHP Manual的图像处理函数部分)
  这段代码在其他页面中通过以下标记<img src="button.php3?text">调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。
13.2 Cookies
  PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子:
<?if (empty($VisitedBefore)) {// 如果没有设定cookie,为cookie赋上当前时间值// 函数中的最后一个参数声明了该cookie保存的时间// 在这个例子中是1年// time()函数返回自1970年1月1日以来的以秒数计的时间SetCookie("VisitedBefore",time(), time()+(60*60*24*365));} else {// 欢迎浏览者再次光临 echo "Hello there, welcome back<BR>"; // 读取cookie并判断if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?>
13.3 常用函数
我们简单来看看一些常用的函数。
数组
array - 生成数组 
count - 数组元素个数 
sort - 数组排序,另有其他几种排序函数可供使用 
list - 列出数组元素 
each - 返回下一个key/value对 
current - 返回当前数组元素 
next,prev - 传回当前数组元素前后指针 
日期和时间
checkdate - 验证日期/时间格式 
date - 生成日期/时间格式 
time - 当前时间信息 
strftime - 格式化日期/时间 
目录、文件系统
chdir - 改变目录 
dir - 目录类别 
opendir, readdir, closedir - 开启、读取、关闭目录 
fopen, fclose - 开启、关闭文件 
fgets, fgetss - 逐行读取内容 
file - 将整个文件读入一个数组变量中 
正则表达式
ereg - 匹配正则表达式 
eregi - 大小写非敏感匹配正则表达式 
ereg_replace -匹配正则表达式并替换 
eregi_replace -大小写非敏感匹配正则表达式并替换 
split - 依规则切开字符串并以数组形势存储
字符串
AddSlashes - 加上斜杠后使用字符串 
echo - 输出一个或多个字符串 
join, implode - 将数组元素合并为字符串 
htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 
split - 依规则切开字符串并以数组形势存储 
13.4 扩展我们的范例主页
  我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。
导航栏
  实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码:
<?/* 输出该导航栏,链接所有除当前页的站内.php3文件 */# 读取目录$d = dir("./");echo "<P ALIGN="CENTER"> | \n";while($entry = $d->read()){// 忽略无文件情况if ( !is_file($entry) )continue;/* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用引出 */list($filenm, $fileext) = split(".",$entry, 2);// 忽略非.php3文件情况if( $fileext != "php3" )continue;/* 现在我们已经把.php3文件都选出,下面搜寻文件中的第一行(标题)类似$title="something";并将以上标题内容分开,用作链接文字 */$linknm = "";$fp=fopen($entry,"r");while($buffer=fgets($fp, 4096)){$buffer = trim($buffer);// 我们已经把每个文件的标题放在文件的第一行以便搜索// 但是当你改变变量名称时可能会带来大麻烦if (ereg("title *= *"", $buffer)){/* 我们已经取得了标题内容并可以在此基础上进行去除空格等处理。必须以PHP代码方式处理,比如$title = "blah blah" */eval($buffer);// 然后将链接文字显示为标题文字$linknm = $title;break;}}fclose($fp);if ( $entry == basename($PHP_SELF) )echo "$linknm";elseecho "<A HREF="$entry">$linknm</A>";echo " | ";}$d->close();echo " </P>\n";?>
照片收藏夹
  我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。
同时我们需要建立一个可以列出在该目录下所有照片的页面。
文件上传
<?include("include/common.inc");// 我们在这里再做一次用户验证if(!isset($PHP_AUTH_USER)) {Header("WWW-Authenticate: Basic realm="$MySiteName"");Header("HTTP/1.0 401 Unauthorized");echo "Sorry, you are not authorized to upload filesn";exit;} else {if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) ){// 如果是错误的用户名称/密码对,强制再次认证Header("WWW-Authenticate: Basic realm="My Realm"");Header("HTTP/1.0 401 Unauthorized");echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.<P>";exit;} }if ( $cancelit ) {// 当浏览者按下"取消"按钮则转向首页面header ( "Location: front_2.php3" );exit;}function do_upload () {global $userfile, $userfile_size, $userfile_name, $userfile_type;global $local_file, $error_msg;global $HTTP_REFERER;if ( $userfile == "none" ) {$error_msg = "You did not specify a file for uploading.";return;}if ( $userfile_size > 2000000 ) {$error_msg = "Sorry, your file is too large.";return;}// Wherever you have write permission below...$upload_dir = "photos";$local_file = "$upload_dir/$userfile_name";if ( file_exists ( $local_file ) ) {$error_msg = "Sorry, a file with that name already exists";return;};// 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3…rename($userfile, $local_file);echo "The file is uploaded<BR>n";echo "<A HREF="$HTTP_REFERER">Go Back</A><BR>\n";}$title = "Upload File";include("include/header.inc");if (empty($userfile) || $userfile=="none") {// 输出以下表单?><FORM ACTION="<? echo "$PHP_SELF"; ?>" ENCTYPE="multipart/form-data" METHOD=POST><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="2000000"><INPUT TYPE="FILE" NAME="userfile" SIZE="24" MAXLENGTH="80"><BR><BR><INPUT TYPE="SUBMIT" VALUE="Upload File!" NAME="sendit"><INPUT TYPE="SUBMIT" VALUE="Cancel" NAME="cancelit"><BR></FORM><I><FONT SIZE="2">(You may notice a slight delay while we upload your file.)</FONT></I><?} else {if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }if ( $sendit ) {do_upload ();} }include("include/footer.inc");?>照片图库<?include("include/common.inc");$title = "Gallery";include("include/header.inc");?><P>Here are some of our family photos. This PHP script can reallybe made better, by splitting into multiple pages.</P><?$d = dir("photos");while($entry = $d->read()){if (is_file("photos/$entry"))echo "<IMG SRC="photos/$entry">\n";}$d->close();?><?include("include/footer.inc");?>
另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。

 

 

梁博:OpenStack已在IaaS层面扮演重要角色 云计算三大主流阵营的竞争与合作 如何使用15美元每月的机器实现百万文档检索 外媒路透社:小米本周四发布首款平板电脑,八九不离十 移动支付帝国战:谷歌、苹果、Facebook、亚马逊孰胜孰负? 十大响应式Web设计框架 Giraph助力Facebook打造亿万用户间关系链 跪求出名:让应用在App Store中出人头地的12种方式 束文辉:Intel如何玩转OpenStack Facebook社交业务进军中国内地,困难重重 《近匠》透镜:代码级定位,让App性能监控更从容! 联想移动与云新战略 重点深耕企业移动方案 美国高通公司在深圳召开参考设计及无线创新峰会 提供“一站式”整合服务 友盟正式推出消息推送平台 iOS 8新功能再曝光:或推出分屏多任务功能 Framer:开源原型设计工具,巨头们的心头好 亚特兰大峰会精彩看点:软件吞噬世界,OpenStack是变革核心 数据中心基础设施是大数据战略成败的关键 实时大数据分析:网络分析的一种新方法 最新消息:iPhone 6将采用更大、更清晰的1704x960分辨率屏幕 吴毅挺:OpenStack是开源IaaS平台大势所趋的集大成者 做好扁平化设计-交互篇 狙击Google Glass?三星将推基于Tizen系统的Gear Glass GamePlay:跨平台开源3D游戏引擎,黑莓的努力你不懂 “少即是多” 高通QRD大会精华汇总 天云盾:构筑在云端的Web安全防护 解析大数据时代的数据库集群技术 莫里航海图,最早的大数据实践 弥补空缺!HappyFox面向iOS开发者发布开源移动HelpDesk SDK Chitika北美网络流量报告:WP KO黑莓、iOS超Android 《近匠》秦时明月:知名IP光环下的生存之道 关于OnNcLButtonUp消息 怎样让我的编辑控件捕捉到enter键 十万火急: 如何把某个text字段的内容写到文本文件中? 求购二手资料:MCSE+MCDBA/SCJP的全套英文资料 有谁知道哪里有Marcocantu 的<>下载?英文版也行!!! 小case。 请问为什么连接的时候,出现StdAfx.sbr': No such file or directory的情况,怎样消除 请问如何获得目录下所有的文件-69!! 如何用vb写共享程序的注册密码部分? Windows 98下可否运行Tomcat? ???????????为什么没有人回答我,难道没有高人????????? 那一种网络监控软件能将两台进行信息交流的计算机的所有信息监控起来! ScrollWindow有什么用?清高手详细说明! 急!:关于ORACLE9的OEM问题,为什么在OEM中不能进入DBA STUDIO,总是提示搜索不到数据库,请问怎么搜索 八数码问题一定有解吗? 如何写库房盘点部分?(讲原理不要讲代码) 小问题,大家帮我解决一下(类型转换问题) 帮忙看一下这样的.Prj 文件是什么C语言工具生成的。早得我好苦呀 控件签名问题!! 救救我,用VB打包后安装的程序运行出错class not registered!有DBGRID控件 java有什么好? 关于Oracle触发器请教: 在弹出的子窗口关闭的同时,父窗口跳转到另一链接如何做,谢谢! TO:enmity(灵感之源) 如何去掉调用Dll在任务栏产生的图标 ORACLE 8的企业版可以糽一台PC上吗? 急救!1000块钱由1分,2分,5分,1角,2角,5角,1元,2元,5元,10元,20元,50元,100元的任意组合,可有多少种组合? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决????? 如何在98下设置默认浏览器? to 吴文智 先生 怎样用Adaptive Server Anywhere6.0发布网络版?PB菜鸟求救.... 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决??? 菜鸟问题,CString 如何转化成整形 !!!在Delphi中不规则窗体的快速显示??? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决? 请教大侠!!!!vb调用com组件方法时传递参数类型的问题 updatesql出错: 在java中如何生成可单独安装运行的应用程序呀?就像.exe一样! 请问有没有关于C#的源代码或资料的网站呢? 怎样定位access数据库的路径? 在32代码中调用过16DLL的高手请进! 高分请教!!!!急请大侠帮忙!!!!!!!!!!!!!!! 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决 -???? 请大家出谋:朋友要离了,怎么安慰她? pfc问题 jin_shan(DOS)请进来看看,谢谢!! 大家平时玩什么网络游戏?请留下ID和擅长的游戏(玉笛书生有偿调查) 请帮一个忙? 怎么样在程序里注册OCX控件件? 奇怪,为什么我的电脑在死机后重起就不能浏览我写的asp页面了 各位,我現在到這一步了,下一步要做什麼 小杰妈妈买了一只2.6千克的鸡,摊主送了一个50克的鸡蛋.鸡蛋的质量是鸡的质量的几分之几? 怎样写三年级观察小狗作文300字 用碳酸钠滴定盐酸溶液用酚酞作指示剂.为什么当锥形瓶中的溶液由无色变为浅红色时,滴定终点是碳酸氢钠?而不是氯化钠?那位说详细点. 写关于小狗的作文300—400字白色的小狗名叫果冻急. 鸡蛋的营养跟鸡蛋的大小有关吗 ,向盐酸溶液中逐滴加入碳酸钠溶液至过量,产生的二氧化碳随盐酸儿变化的关系图像,应该如何画? 一只鸡蛋2.6千克,一个鸡蛋中52克,求这只鸡与鸡蛋的重量之比,并求出比值 小明按大鸡蛋3角6分,小鸡蛋每个2角8分卖出一批鸡蛋,共收入214元,已知大小鸡蛋的个数的比是8:5,他卖出的大小鸡蛋各有多少个? 大神们……如何让区别硫酸钠溶液和碳酸钠溶液,多种方法 一个蜗牛螺壳的旋向为母性影响,其中右旋基因D控制,左旋由基因d控制,一个左旋蜗牛,自交后后代全部为右旋蜗牛,其基因型是_? 写狗的作文300字(必须是情感变化顺序来写) 一个鸡蛋的体积约是多少立方厘米? 有两蓝鸡蛋,第一蓝56个,第二蓝20个.每次从第一蓝拿3个鸡蛋放入第二蓝,拿多少次,使两个蓝的鸡蛋同样多? 什么叫等级递增稀释法 香蕉水是什么东西? 写家乡的冬天的作文 湖南的 左旋右旋圆偏振光怎么判别我还需要详细的,正交后怎么判断左旋还是右旋? PH相同的醋酸和盐酸溶液,分别用蒸馏水稀释至原体积的m倍和n倍,稀释后两溶液的PH相同,则m和n的关系是什么,为什么体积相同,浓度为0.1的氢氧化钠溶液,氨水,分别加水稀释m倍和n倍,溶液 请问,卫星电视天线,左旋和右旋机是什么意思. 什么是双倍稀释法?微生物学中双倍稀释法概念及应用 一个酸性溶液,加水稀释,PH有没有可能为7 为何卫星要用左旋右旋极化波为何有些俄罗斯卫星要使用左旋右旋极化波这有何好处?为何要用? 两个互为旋光异构体的有机物怎么判断哪个是左旋哪个是右旋 向酸性重铬酸钾溶液中加入蒸馏水稀释,溶液颜色变化为 天道左旋 地道右旋是什么意思?期待答案,不胜感激 量鸡蛋的体积.找来一个长方体的盒子量出里面的长是15厘米,宽是8厘米往空盒子里倒入水,量的水深7cm把鸡蛋放入盒子里,鸡蛋全部没入水中,量的此时水深7.6cm.根据以上数据,你能算出这只鸡蛋 两个鸡蛋的体积约80( ) 一台台式显示器的体积大约是0.2( ) 六年级作文家乡的美食注意:我的家乡在菏泽. 一个烧杯 一个鸡蛋的体积大约是120立方厘米 如果把鸡蛋放入这个仪器 里面的液体会升多少只告诉这个烧杯上面的直径为6cm 水也不知道是多少 别的条件也没有.我天天鄙视他!) 我要写一篇关于狗的作文要300字 我的家乡特点食品 作文400字写郁南啊,速度(要写特点和食品)(老师还说不能写水果的) 以10倍稀释法稀释溶液 在微生物实验中要稀释溶液,取样品一克加99ml水,取这样的溶液1ml在加入9ml水可得到10∧-3稀释液,那么要得到10∧-4,10∧-5稀释液 ,是不是就是取上一级的溶液1ml在加入9ml水 发烟硝酸是什么? 关于小狗的作文300字 写小狗的作文300字 发烟硝酸很难买得到啊,发烟硝酸都是68的加硝酸镁而得的吗?一般市场价是多少? 狗狗作文300字 怎么把液体稀释十倍 一般浓硝酸的物质的量浓度是多少(别说发烟硝酸的)? 数学题(篮子里的鸡蛋)往一只空篮子里放鸡蛋,篮子里的鸡蛋数每1分钟增加一倍,放了十二分钟后,篮子刚好放满.在什么时候鸡蛋刚好放到半篮? 300字作文写小狗 老妇卖鸡蛋,有趣又大方,见人卖一半,还送半个蛋,见了四个人,卖光篮中蛋,请问篮中蛋几何 作文 伴随我成长的一篇童话 (字数少点450~500字左右) 是关于硝酸根离子的.我知道是个4中心.6电子的大π键,但我搞不清楚每个原子之间到底是如何成键的首当其冲的是N原子sp2杂化的时候,2s上的电子到底会不会激发一个到pz轨道上去呢?然后与三 奥数题一篮鸡蛋,第一次拿出了一半多半个,第二次拿出余下的三分之一多三分之一个 关于阜宁大糕的作文(字数在500字左右) 鸡蛋的大小和什么有关? 葡萄糖溶液的旋向是左旋还是右旋?怎么判断? 固体胶水(如AB胶)用什么可以清洗干净?加急!拜托各位大神 为什么鸡蛋有大小? 稀释限点的含义? 什么材质的物料不粘AB胶拜托各位大神 1千克鸡蛋有几个? 我的故乡作文450字左右 AB胶可以替代灌封胶吗谢谢了,大神帮忙啊 用碳酸钠滴定盐酸,滴定至近终点时加热煮沸后,为什么又要冷却后再滴定至终点? 我的家乡主要写景450字作文要在 5点之前给我 橡胶与橡胶连接用什么胶水大神们帮帮忙 一个鸡蛋多少千克?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn