一些PHP的小笔记
require() 与 include()的区别:
require() 函数与 include() 相同,不同的是它对错误的处理方式。include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错误(fatal error)(在错误发生后脚本会停止执行)。
关于一些文件操作函数:
feof() 函数检测是否已达到文件的末端 (EOF),fgets() 函数用于从文件中逐行读取文件,fgetc() 函数用于从文件逐字符地读取文件。
require() 与 include()的区别:
require() 函数与 include() 相同,不同的是它对错误的处理方式。include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错误(fatal error)(在错误发生后脚本会停止执行)。
关于一些文件操作函数:
feof() 函数检测是否已达到文件的末端 (EOF),fgets() 函数用于从文件中逐行读取文件,fgetc() 函数用于从文件逐字符地读取文件。
下面依次是第3题,第4题,第5题的完全PHP代码。
高专有需求的直接拿了 不解释了。
第3题
这道题其实比较蛋疼,因为第一个提交和第二个汇总要求都要显示出前面的提交过的数据,所以不能当成两个表单来弄,需要重叠一次表单区域。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>第3题解答</title> </head> <body align="center"> <form name="form1" method="post" action=""> <p>请输入班级学生人数 <input type="text" name="num" value="<?=isset($_POST['num'])?$_POST['num']:""?/>" /> <input type="submit" name="button_a" value="提交" /></p><br /><br /> < ?php if(isset($_POST['button_a'])){ $num = $_POST['num']; for($i=1;$i<=$num;$i++){ echo "第$i 个学生的成绩"; echo "<input type=\"text\" name=\"stu$i\" />"."<br />"; } echo "<input type=\"submit\" name=\"button_b\" value=\"汇总成绩\" />"; } if(isset($_POST['button_b'])){ $num=$_POST['num']; $totle=0; for($i=1;$i< =$num;$i++){ echo "第$i 个学生的成绩"; $s=isset($_POST['stu'.$i])?$_POST['stu'.$i]:""; echo "<input type=\"text\" name=\"stu$i\" value=\"$s\" />"."<br />"; $totle+=$s; } echo "<input type=\"submit\" name=\"button_b\" value=\"汇总成绩\" />"."<br /><br />"; echo "总成绩为 : $totle"; } ?> </form> </body> </html> |
ThinkPHP中的image类中已经集成了验证码的制作,非常的方便。
使用方法如下:
首先在当前控制器中引用验证码:
1 2 3 4 5 6 7 8 9 10 11 12 | function verify() { import('ORG.Util.Image'); if(isset($_REQUEST['adv'])) { Image::showAdvVerify(); } else { Image::buildImageVerify(); } } |
这个时候我们就可以在模板中引用验证码了,但为了验证码不过期,我们在模板中加上一个刷新验证码的JS函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <script type="text/javascript"> function $(id) { return document.getElementById(id); } function fleshVerify(){ //重载验证码 var timenow = new Date().getTime(); document.getElementById('verifyImg').src= '__URL__/verify/'+timenow; } </script> <form method="post" name="form1" action="__URL__/writes"> 请输入验证码:<input type="text" name="seccode" id="seccode" size="11" /> <A HREF="javascript:fleshVerify()"><img SRC="__URL__/verify/" name="verifyImg" BORDER="0" id="verifyImg" title="如果您无法识别验证码,请点图片更换" /></a> <input type="submit" name="Submit2" value="提交" /> </form> |
当然最后,我们需要在提交表单内容后对首先对验证码进行判断:
1 2 3 4 5 6 7 | public function writes() { $seccode=trim($_POST['seccode']); if(md5($seccode)!=Session::get('verify'))$this->error('验证码错误!!!'); ........ } |
到这里,整个验证码的判断过程就结束了。
我怎么总觉得好像标题打错了。。
1 2 3 4 5 6 7 8 9 10 | function dhtml($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = dhtml($val); } } else { $string = str_replace(array('"', '\'', '<', '>', "\t", "\r", '{', '}'), array('"', ''', '<', '>', ' ', '', '{', '}'), $string); } return $string; } |
这几天开始做网站的前台,在这之间倒是走了一个弯路。
因为做后台功能的时候,将数据库中的表和功能对应起来,然后每个表或者功能对应一个控制器,开始做前台的时候就有点犯傻,心想前台每个页面或许会显示不同的表中的内容,但那样怎么来设计控制器呢。
当时还有个犯傻的问题就是纠结在了从数据库中读取文件时,URL路径的表现问题。
阅读全文>>>