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

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

 

 

如何保住公司的人才:创造良好的学习氛围 主宰全球的10大算法 专访Google数据科学家彭晨:大数据成为潮流走近各行各业! 强横Metal技术来袭,能否取代OpenGL? Swift横空出世,Xcode 6 Beta有了哪些新变化? 《近匠》GameMei:简单易用、快速开发商用游戏 Gartner:2014年一季度浪潮服务器出货量中国第一 【技术博客推荐】张安站:大数据时代下的商业存储 Amazon继续登顶IaaS魔力象限,榜眼是微软而非Google 友盟Q1移动互联网报告:解读三线城市移动互联网用户 智能生活 “视”不可挡——首届TCL杯HTML5智能电视开发大赛等你来挑战 Mobile First!开源HTML5游戏引擎Kiwi.js 1.0正式发布 天天用的开发环境,你真的了解吗? 物联网时代,你的汽车也在转型 触宝输入法产品经理解析iOS 8第三方输入法开放程度 专访联想谢政维:功耗和价格是天蝎项目最大障碍! 《近匠》蚁视科技创始人覃政:ANTVR,虚拟现实的新生 后棱镜门时代:开发者保护应用安全的5大技巧 专访许鹏:谈C程序员修养及大型项目源码阅读与学习 65种GPU性能测试,AMD开源驱动领先! 一周消息树:我们从WWDC 2014收获了什么? 精益设计:“纸上谈兵”的说服力 指尖上的艺术——如何运用代码发挥无限创意 周末巨献:100+诡异的数据集,20万Eclipse Bug、死囚遗言等 TIOBE 2014年6月编程语言排行榜:Swift能否取代Objective-C? 移动游戏后端:开发还是购买?你必须知道的6件事 Vuforia SDK 3.0发布在即 全球注册开发者已逾10万 最受职场青睐的十大热门云计算技能盘点 Android Bootstrap:开发也能用模板,省时又省力! Facebook开源又一力作,欲借Broadcom开放交换机 华为敏捷网络:坚持被集成,引领ICT融合 关于 VC 6.0 有没有什么补丁,升级文件之类的东西? 高分争解 怎么利用Jsp发邮件? 有谁知道光驱加锁的问题 parodox数据库问题 各位平时用 VC 作东西,都用那些辅助工具?  高分争解 【 http://www.esoftware.com.cn/search.php?condition=%BA%AB%C1%F7%C0%B4%CF%AE&page=1&mode=3 】 JBuilder的使用问题 在VFP中,编程执行SQL语句时,怎样使系统的查询结果不出现? 一个程序流程的问题 为什么当我的SpeedButton的enabled为false时,上面的图标就没有了? 囡囡(baicolt)请进,问你一点事情 简单问题,请赐教 高分相赠!!!:操作系统和SQL SEVER2000都是英文版,用VB连接如何可以正确的输入和显示中文? 则么在程序中得到sql的存储过程的返回值? 请问 VB 6.0 有没有最新的升级文件之类的东西?高分争解 谢谢 谁有用java做的复杂一点的图行界面的例子 网管来看看,为什么不能给分了!右边的文本框又不见了! 各位用 VB 编程都用那些辅助工具? 高分争解 关于ShellExecute 装了redhat7,在/etc里没有inetd.conf文件,谁见过这咋整 菜鸟请教大侠!很急!谢谢!!只有10分对不起! 请问一个关于CLASSWIZARD 的问题 这里有PB反编译程序,你信吗? 怎样解 关于大数据量的问题,经验丰富者里面谈! 我想在程序里控制程序外的浏览器窗口资源管理器窗口,怎么做呢?急呀!!!!!! 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 认识我的人都进来跟我聊聊吧,我最近新换了工作,还没有适应,你们各位是怎么换工作? 请问如何在Delphi中表示二进制,或者十六进制数呢? 各位35以后干什么?我们能干什么? ????? 如何将eltree中的数据和某数据表关联 有没有比RECORDCOUNT快的方法实现同样的功能? 鉴于目前有些东西说话不知轻重,把这个旧闻再贴一遍,不要以为真的在网上 “没人知道你是一只狗” Java 工具 怎样解决vb中编译成exe文件中出现的问题? 你别说国企,只要是沾的国企的气味就他妈的黑! api函数我不懂。 我要开发一个网络监听的程序,捕获所有以太网中所有的帧,象NT和Win2000中的网络监视器一样 找了半天,看不到一个熟人,认识的过来报到 请问哪里有下载jdk啊? 问题征集算法 偶烦!偶郁闷!咿呀~~~~~~~~老哥进来安慰偶。。。。快!快!快!!! 在ListView中,如何象Windows资源管理器那样将剪贴了的文件图标变虚? 清华大学的学生素质真差 打开数据库为什么出错? WinCE的串口通讯读和写之间有相互制约的问题吗? 强烈抗议IBM蓝色“快”车服务的速度和质量!!各位同志请帮我广帖出去! outlook 求助 jsp的小问题 关于cjlib中显示中文的问题 山东快书 《武松上网》 化学方程式化合价配平 氢化钙 钙鉴别能用与水反应生成的氢气的量吗物质的量相同 只用一种试剂一次性就能验证锌、铜、银三种金属活动性强弱,该试剂为( )A 硫酸铜溶液 B 硫酸锌溶液 C 硝酸银溶液 D 稀盐酸 工业制取漂白粉的化学方程式? 化学方程式配平利用化合价升降的方法 为什么登山制取氢气用氢化钙而不电解水?制取同等质量的氢气需要的水的质量要比氢化钙要少,负担更少,而且电解水还能产生氧气,为社么登山制取氢气用氧化钙而不电解水? 制取四氧化三铁的化学反应方程式 如何用化合价升降配平化学方程式 化学题设计个过氧化钠的小实验过氧化钠保存不当容易变质1,某过氧化钠样品已经部分变质,请设计实验,限用一种溶液,证明过氧化钠已经变质2,检验样品中还有过氧化钠的方法是都回答得很好 工业制取Cu2O的方法以及相关化学反应方程式 在一个化学反应式中同一元素在反应前后化合价能变么? 设计试验(化学)现在就要!1.设计试验证明二氧化碳具有下述性质:(1)二氧化碳的密度比空气的大;(2)二氧化碳能溶与水.2.设计实验证明汽水中含有二氧化碳.(别太复杂) 氢化钙CaH2与冰反应放出氢气,生成对应的碱.(要化学方程式)(生成的碱沉淀吗?) 求一个化学方程式:反应前后元素的化合价没有改变的化合反应 化学设计实验现有一白色粉末是由氯化钠、硫酸钠中的一种或两种共同组成.给你四种溶液:硝酸银溶液、氢氧化钠溶液、碳酸钠溶液、硝酸钡溶液,要你证明此粉末只由硫酸钠组成(两步). CaH2+2H2O====Ca(OH)2+H2中哪个是还原剂,哪个是氧化剂,哪个是还原产物,哪个是氧化产物?请把化合价的升降情况等等详细描述 化学反应方程式与化合价的问题是不是还有一种情况用对应符号的问题 HCL~H 这样的写法.问题主要在这里:这种对应符号的写法与化合价有关系么?为什么?我的问题来源于这个方程式的疑问 求5篇化学家庭实验 实验报告拜托各位高手帮我找5篇家庭小实验的实验报告包括目的.步骤.现象.结论注意:要是家里能做的实验.最好是收集沼气,、葱汁写密信、收集沼气.要5篇啊,谢谢如果 怎样快速判断氧化剂还原剂 例如CaH2+2H2O=Ca(OH)2+2H2↑ 到底谁是氧化剂还原剂氧怎样快速判断氧化剂还原剂 例如CaH2+2H2O=Ca(OH)2+2H2↑ 到底谁是氧化剂还原剂氧化产物还原产物 为什么?那氢 化学方程式物质化合价如何改变?有的方程式反应前后化合价改变,比如三价铁反应后变成二价铁,这样的规律是什么? 利用下列各组反应,能够验证铁、铜、银三种金属活动性顺序的是利用下列各组物质之间的反应,能够验证铁、铜、银三种金属活动性顺序的是( ) A、氯化亚铁溶液、铜、银 B、氯化亚铁溶液、 CaH2+2H2O=Ca〔OH〕2+2H2↑,该反应中化合价的升降关系如何,哪个是还原剂哪个是氧化剂 关于化学方程式与化合价.“O正上方一个-2”中-2代表什么?“2O”的O右上方有一个-2,这个-2代表什么? 利用下列各组物质之间的反应,能够验证铁、铜、银三种金属活动性顺序的是(  )A、氯化亚铁溶液、铜、银B、氯化亚铁溶液、氯化铜溶液、银 C、铁、氯化铜溶液、银 D、氯化铁溶液、铜 请问怎么看出CaH2+2H2O=Ca(oH)2+2H2是归中麻烦说详细一点 怎么用化合价写化学方程式比如Fe+O2--- 怎么写后面的生成物、、怎么用化合价写他们下面的小数字、 利用下面各组物质之间的反应,能够验证铁,铜,银三种金属活动性顺序的是( )A.氯化亚铁溶液,铜,银B.氯化亚铁溶液,氯化铜溶液,银C.铁,氯化铜溶液,银D.氯化铁溶液,铜,硝酸银溶液我觉得应 反应CaH2 + 2H2O = Ca(OH)2 + 2H2中氢氧化钙是什么 为什么氢氧化钙的化学式是Ca(OH)2?为什么氢氧化钙的化学式Ca(OH)2和其他有些物质的化学式要加括号?是因为这样简便些么? 设计实验关于判断铝铁铜的金属活泼性强弱顺序4种方案 CaH2中的氢元素呈负一价.CaH2+H2O=Ca(OH)2+2h2其中水是还原剂还是氧化剂或者都是或都不是? 硝酸HNO3和氢氧化钙Ca(OH)2 什么试剂能直接验证铝 铁 铜的活动性顺序 硅酸钙(CaSiO3)是玻璃的主要成分之一.硅酸钙中Si的化合价是A.+2 B.+3 C.-4 D.+4 氢氧化钙化学式Ca(OH)2 为啥oh要加括号 证明铁、铝、铜三种金属的活动性顺序,选用哪些试剂?A 盐酸、硝酸银溶液B 盐酸、氯化亚铁溶液C 硝酸、硝酸铜溶液D 氯化镁溶液、硫酸铜溶液为什么? 普通玻璃的主要成分是二氧化硅还是硅酸钙如果是二氧化硅,为什么一个推论题中说A是普通玻璃的主要成分,答案却是硅酸钙那个题错了吗?错得也太低级了吧、 CaH2 + 2H2O====2H2 + Ca(OH)2.氧化剂与还原剂的比值是多少? 铝、铁、铜是人类广泛使用的三种金属,与我们生活息息相关.3)用下列试剂验证这三种金属的活动性顺序,能达到目的是 (填序号). A.硫酸铝溶液 B.硫酸亚铁溶液 C.硫酸铜溶液 选什 请问大家硅酸钙CaSiO3是沉淀吗? 化学变化的分辨有放热,发光,生成沉淀,生成气体或颜色变化现象发生的一定是化学变化吗?请各举一例加以说明 为验证铁、铜、铝三种金属的活动性顺序,可选用的一组物质是(  )A.FeSO4溶液、Cu、AlCl3溶液B.CuSO4溶液、Fe、AlC13溶液C.CuSO4溶液、Fe、AlD.AlCl3溶液、Fe、Cu我知道答案是B,我想知道C为 硅酸钙(即CaSiO3)是沉淀物吗?硅酸钙是不溶于水的那种化合物吗? 怎么区分物理和化学变化酒精蒸发是什么变化 怎样证明铝、铁、铜三种金属的化学活泼性大小,解释为什么这三种金属只有铁最容易生锈. 氧化反应化学方程式上怎样判断元素的化合价 和化学变化的区别在于? 设计实验探究铝和铜的金属活动性大小顺序要实验的具体步骤材料:硫酸铜,铝片,试管……(是先放硫酸铜进试管还是先放铝片?) 亚氯酸钠与氯气反应化学方程式.各元素的化合价是多少? 如何区分化学中物质的性质与变化举出具体事例说明 用Fe,ZnSO4溶液,CuSO4溶液,验证锌、铁、铜三种金属活动性顺序,可不可以? 根据元素化合价发生的变化,各写出一个相应的化学方程式,并确定发生还原反应的是哪个反应.1.0—————+12.+2————03.-1————04.+1————0并且好,本人决不食言 现象和变化的区别 铜是金属活动性弱的金属,那么怎么配置硫酸铜溶液 如何利用化合价升降给化学方程式配平 登上运动员用氢化钙CaH2固体提供能源有什么优点 验证铝和银的金属活动性顺序用稀盐酸还是硫酸铜?这俩不都行吗? 利用化合价升降配平化学方程式FeTiO3+C+Cl2 --- TiCl4+FeCl3+COTiCl4+O2 --- TiO2+Cl2 能否用燃烧现象鉴别氢化钙和钙? 铝和硫酸铜溶液反应Al+CuSO4+H2O=?不是置换反应,是生成沉淀的那种
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn