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

技术杂项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");?>
另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。

 

 

CES 2014:Intel针对可穿戴技术发布多款产品 直击CES:Pebble推金属版智能手表Pebble Steel 为4K智能电视而生:高通推出骁龙802处理器 英特尔首席执行官阐述可穿戴设备新技术及Edison计算平台 设计师如何写出更棒的项目建议 微软以1亿美元收购Parature“知识库” 登陆CES:三星发布智能家庭平台Smart Home CES 2014:GPS供应商Garmin推健康腕带Vivofit 《近匠》第05期:移动开发工具访谈,个推——有节操的push 【Hadoop技术博客推荐】Hive的那些事 Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 CES 2014:奥迪下一代汽车将采用NVIDIA的芯片! Cocos 3.0 Beta发布:更易用、更友好 开拓新兴市场?诺基亚或推Android手机,UI界面遭泄露 预测2014大数据值得关注的8个发展方向 霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 在属性页中,各子页中类成员函数如何相互调用? 急!!!重载决策失败,原因是没有可访问的“Fill”可以用这些参数调用,怎么解决? 如何获取用户本地机的分辨率? 菜鸟的问题!!!在线等待! 请问一下印度做软件的报价~~~?? 急急~~ 求求求!!~~ 给满100分!! 关于WinRunner中遇到的难题,请高手帮忙! 请大家帮忙推荐几款linux下比较好用的看jpeg图和看mpeg4比较好用的软件! 请问数据库应用程序如何制作安装程序? 笔记本突然出现很多马赛克,然后死了,大概是什么原因? 各位大虾请进 求:0,1,-1的N长度组合算法 各位问一个比较少见的问题100分相送,急急急!!! 这样的条件判断语句要怎么写?(很简单的) 一款很不错的电子图书制作、资料管理软件 在-卢-<<利用XML实现通用WEB报表打印>>时报:未将对象引用设置到对象实例 DBEdit如何限制输入格式? 简单问题 ★★★狂急!请问怎样取得文件的创建日期!在线等!在线结贴!★★★ 初学xml,很简单的问题,就是不会,各位近来看看!一行代码搞不定… 有没有用于unix下c开发的dbx调试图形界面的工具? 哪位有tar 和 gzip 命令参数的详细中文介绍 jsp网站测试,欢迎大家测试 提问 请问有没有直接可以HTML(XHTML、SHTML)生成XML-XSL!!的工具 进程外组件的关于注册的问题? jsp中怎样生成静态页面 请问:如何返回webservice类的一个或多个实例? 怎样触发另一个窗口中的javascript函数? 谁能提供一些检测内存泄露的工具或方法 如何将 FoxBase 中的数据导入到 SQL Server 中? 求助:API操作注册表出现奇怪问题 请问如何改变windows xp中的用户的登陆顺序 有问题:如何通过页面下载附件? 求助:VB生成安装文件的问题 下面的程序怎样优化?(着急) 怎么样在C++ Builder 的Form上显示文字!我不要用控件,要直接显示在Form上 200 分相送 高手请进 请教如何写成特殊格式文件的存取的问题. 适配器更新数据集怎么用事务 怎样才能设“开机密码”? 哪位高手可以给我介绍一下TOMCAT和APACHE,我刚接触,需要了解一下 关于SocketConnection. 进入linux8.0后,主板指示灯闪烁问题,请高手指教。 谁给一个QQ给我啊? 高分请教? 如何查看一个记录集中游标的位置。 求一个简单的窗口函数 请问如何实现计算器功能 如何修改这个脚本?(应该比较简单) 大伙能否谈谈.net整体软件框架的设计 来者有分:调查:大家是在用vc.net还是用vc60,我在用vc60 在正方体AC1中,E为AA1中点,求面B1DE和面ABCD所成角的大小 3dmax如何将物体旋转复制成圆形?怎样把这瓦以圆形的方式均匀的复制 盖在这房子上面? 为什么会有恐怖主义,他们针对的是什么? 认识被压迫民族反抗外来侵略的斗争与当今时代民族恐怖主义的本质区别800字,11月19号之前给出解答,对一楼的回答,我只能说不是我不想花钱,而是时间紧迫,我没时间去开通网上银行或汇 什么事灵魂?我想知道各宗教的看法 传递函数系统稳定性请问一个闭环系统的传递函数为Q(s)=s^2(s+1)/(s^3+s^2+K)为什么对于所有K不等于0都是不稳定的?怎么看出来的? 物理磁场题,(只看13) 3Dmax 怎么把不同的对象围成一个圆圈大概有二三十个对象,想把他们围成一个圆圈怎么弄, 体育中极限强度的含义? 如何在3Dmax里面画扇形啊?我想在墙上打一个扇形窗子! 3dmax里面我要一个物体围着圆形旋转,并复制,怎么操作的呢? 100ml的HNO3(浓度:0,01mol/L)和200ml的HCL混合,PH为1.75,求HCL的浓度. 那两个词语 离子共存(不懂别进!)在酸性条件下,硝酸根离子和氯离子溴离子可以共存吗? 弯曲极限强度与切应力和正应力有什么关系?没听过弯曲极限强度啊? 正方形的面积是86平方厘米,如果它的边长扩大3.5倍,那么面积就( ),变成( )平方米.正方形的面积是86平方厘米,如果它的边长扩大3.5倍,那么面积就( ),变成( )平方米. 阿可以组那两个词 为什么圆周运动的物体的加速度不断变化是因它不停的改变运动方向详细且准确 信用证 条款47a看不懂THIS CREDIT IS SUBJECT TO THE CONDITION THAT DOCUMENTS INDICATING 1.GOODS ORIGINATING FROM,OR SHIPMENT TO OR FROM ANY U.S.SANCTIONED COUNTRY WILL NOT BE ACCEPTED.PLEASE NOTE THAT DOCUMENTS INDICATING U.S.SANCTIONED COUNTRI ansys实体建模的圆阵列问题~~~我本来要阵列6个,但是只能生成5个,而且剩下的那个镜像也出不来,急呀··· GIS工作怎么样? 信用证的附加条款看不懂,特别是银行费用方面,很多由卖方付,关于这些费用,哪些卖方付才合理 请帮我把这两个词解释一下 学地理信息系统的女生适合找什么样的工作 信用证条款看不懂,full set and 3 non-negotitable copies of clean on board vessel marine/ocean bills of lading made out to the order of XXX bank ansys建模时怎么让一个圆面沿着一条曲线扫描成实体? GPS和GIS怎么配合工作? 关于电熨斗的一道物理题 高手请进电熨斗在涤纶档位时工作20秒 间隔40秒 最高达到100摄氏度在棉布档位时工作40秒 间隔30秒 问最高达到多少摄氏度若温度调节损坏 则温度最高能达到多少设 寻求有关紫铜T2弯管是弯曲外壁开裂原因分析 3Dmax中物体怎么沿着路径进行复制啊? 四川地震期间火炬传递了吗,作文用 连接正方体每个面的中心构成一个正八面体.已知正方体的边长为6厘米,问正八面体的体积为多少? 自来水管响怎么办 水中存在al3+离子吗为什么不是al(oh)3胶体呢,老师讲明矾与ba(oh)2反应时根本不考虑al3+离子与水反应我觉得费解那为什么【al(oh)4】3+而不是al3+呢 如图,所有正方形的中心均在坐标原点,且各边与x轴或y轴平行,从内到外,它们的边长依次为2,4,6,8…,顶点依次用A1,A2,A3,A4…表示,则顶点A2014的坐标是________. 关于自来水管响的问题我们家厨房的自来水管这些天来经常会响,感觉是别人家一放水我们家的水管就会响并且开始流水(越来越大了).现在发现厕所的水管放水时厨房的也会流水还关不掉 求()使我感动的作文(智障儿童参加火炬传递)中国火炬传递中有个智障的儿童,名字忘了,她参加了火炬传递,谁把这件事写成《——使我感动》的文章,好的追分或者把那个孩子的名字,情 已知正方形的边长等于6,对角线的交点在原点,边与坐标轴平行,求它各顶点的坐标. 关于GIS的金短时间的解释? 氮气制冷原理 如图,正方形OBCD的边长等于6,边OB与x轴正半轴的夹角为30°,o点是坐标原点 求正方形各顶点的坐标, 国际社会如何定义恐怖主义 氮气怎么制冷氮气用作制冷器的原因 还有怎么制冷.我是学生 下列各组离子在溶液中不能大量共存,且加入过量NaoH溶液或过量盐酸均能得到澄清溶液的是()?B Al3+,na+,CO32-,NO3-D Alo2-,CO32-,K+,Na+为啥?D不对? 模联议题:恐怖主义定义!如何入手啊?参加商会的一个议题,不知道该怎样切入,哪里是突破点.求神助!代表国家是德国. 造血干细胞氮气冷冻后 为什么还具有生物学特性 进水管A注满一个池子的水要花10分钟.排水管B排完整个池子的水要花20分钟.当A管 如何判断恐怖主义分子,怎么定义的? 我想知道什么是红色恐怖主义,红色恐怖之一也是恐怖主义吗? There ____ some mistakes in your composition. A have B has C seems D seem to be这条题目应该选什么答案...求解释...谢谢..!尽量详细点! 恐怖主义的概念,特征及国际社会的影响是什么? S和HCl好反映吗?写方程式如果你没有十足把握,请备注一下, There __some mistakes in your composition.A,seems to be B,seem to be 为什么选B,A为什么不对?mistake 不是可是名词吗? 3dsmax 中怎么获取三维物体沿轴线的各个切面? 求问恐怖主义和其他政治暴力的区别不同点.要写在论文中的....求问恐怖主义和其他政治暴力的区别不同点.要写在论文中的.difference between terrotism and other politics violence There seen to be some mistake in your composition.seem to be 为何不能换为have 在非取暖期时在铁制管道内充满水,原因是在非取暖期时在铁制管道内充满水,以减缓其锈蚀,原因是———— 如何惩治暴力恐怖主义? 反邪教的重要意义、现实危害、本质特征、渗透途径和防范措施 .要材料 恐怖主义到底在针对谁 英国王储查尔斯否认说过“当国王像蹲监韩调查显示 面试官平均14分钟决定是日媒称4架中国军机同一天越过冲绳飞向专家:旅新大熊猫嘉嘉可能已进入性成熟揭秘网络相约自杀群体:低龄化 渴望得巴西警方要求传讯美国信息业大腕专家:旅新大熊猫嘉嘉可能已进入性成熟俄学者:不要对伊核谈判前进步伐抱过高河岸边那些粉色\"小花\"竟是福寿螺冷空气吹开雾霾带来降温 这两天早晨只经济与环境如何共存? 专家称中国污染婚嫁礼服与传统丝绸邂逅 中华嫁衣创意欧盟方面积极评价中欧经贸高层对话美报分析中国“见死不救”因何屡见不鲜外媒:美国监听丑闻暴露欧洲的整体虚弱韩调查显示 面试官平均14分钟决定是英国王储查尔斯否认说过“当国王像蹲监新加坡熊猫专家群英会热议熊猫的可持续外媒:美窃听丑闻再添猛料 痴迷监控近三季度A股交易账户增长近五成 场整体“杀光中国人”言论事件持续发酵 美华免费培训月嫂育婴师泰客机撞飞鸟“飞鸟航空”躺枪重要城镇“沦陷”伊总理呼吁“紧急状态华中科技大学与本报联办大学开放日暨高热天吃豆胜过吃肉?校园枪击频发美商家推出“保命毯”美国父母劫匪枪口下救女图文:“指尖上的楚天”带你走进魔力空江西夺刀少年有望圆梦飞行员梦里说女友坏话男子遭“追杀”玻利维亚123岁老人辞世广告:港湾十二盛景,逐梦人生十二境激素催生嫩豆芽以政坛“常青树”将卸任总统美著名中餐馆客户银行卡数据疑遭窃SuperJunior对决2PM小货车违法160次 昨日终被交警查获广州轩尼诗新点 Mega1.5派对道博股份并购强视传媒展会速递世界杯来了 这样看球才爽
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘