手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:误人子弟

看到一篇误人子弟的PHP代码

原文地址:http://hi.baidu.com/hi_bai_du_com/blog/item/fd297b89b318a8b20e24444a.html

原文:

PHP代码
  1. <?  
  2. /* 
  3. # 
  4. # 数据表的结构 `images` 
  5. # 
  6.  
  7. CREATE TABLE images ( 
  8.     picid int(3) NOT NULL auto_increment, 
  9.     picdata longblob NOT NULL, 
  10.     pictext varchar(100) NOT NULL default '', 
  11.     PRIMARY KEY    (picid) 
  12. ) TYPE=MyISAM; 
  13.  
  14. */  
  15. if(trim($picfile[0])!=""){  
  16.   $link=@mysql_connect("localhost","root","root");  
  17.   //连接,用你的具体连接名替换root,具体连接密码替换root  
  18.   if($link==false) {  
  19.     echo "<script>alert('连接数据库时发生错误,请稍后再试!')</script>";  
  20.   }  
  21.   $res=mysql_select_db("kkk");  
  22.   if($res==false){  
  23.     echo "<script>alert('打开数据库时发生错误,请稍后再试!')</script>";  
  24.   }  
  25.   $tmpset=0;  
  26.   // 存放成功加入的图片数目  
  27.   for($i=0;$i<=3;$i++){  
  28.     // picfile[i]存放所提交的图片信息(文件路径)  
  29.     if(trim($picfile[$i])!=""){  
  30.      //读取数据  
  31.       $fp=fopen($picfile[$i],"r");  
  32.       $picdata=fread($fp,filesize($picfile[$i]));  
  33.       fclose($fp);  
  34.       //加上必要的标志符号  
  35.       $picdata=addslashes($picdata);  
  36.       //用具体的数据表名代替images  
  37.       //pictext[i]存放所提交的图片的文字说明  
  38.       $qu="insert into images(picdata,pictext) values('$picdata','$pictext[$i]')";  
  39.       $res=@mysql_query($qu,$link);  
  40.          if($res==false){  
  41.            echo "<script>alert('图片 ".$i." 提交失败!')</script>";  
  42.            continue;  
  43.         }  
  44.       $tmpset=$tmpset+1;  
  45.     }  
  46.   }  
  47.   echo "<script>alert('操作成功!实际入库图片数 ".$tmpset." 张')</script>";  
  48. }  
  49. ?>  
  50. <html>  
  51. <head>  
  52. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  53. <title>无标题文档</title>  
  54. </head>  
  55.   
  56. <body>  
  57. <form action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="form1">  
  58. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  59. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  60. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  61. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  62. <input type="submit" name="Submit" value="提交">  
  63. </form>  
  64. </body>  
  65. </html>  

 

 

显示存在mysql中的图片
  1. <?  
  2. /* 
  3. * 在外部用<img src="displayimg.php?picid=1">来调用数据库中的第一张图片 
  4. */  
  5.   
  6. $link=@mysql_connect("localhost","root","root");  
  7. mysql_select_db("kkk");  
  8. $qu="select picid,picdata from images where picid=$picid";  
  9. $res=@mysql_query($qu,$link);  
  10. $num=mysql_num_rows($res);  
  11.   if($num==0){  
  12.     print "<br/><br/><br/>";  
  13.     print "<p><b>没有这张图片!</b></p>";  
  14.     exit();  
  15.   }  
  16. $row=@mysql_fetch_row($res);  
  17. header("Content-type:image/");  
  18. echo $row[1];  
  19. ?>  

——END——
仔细看看吧。。。是怎么误人子弟的。唉。
1、上传没有上传(大哥,你这是读本地文件呐,如果是这样的话,那。。。要那个enctype有啥用?)
2、变量直接全局(。。。。。。。。)
3、二进制字段是可以直接echo输出的吗??不谈别的,刚才你都addslashes了,为什么输出的时候没有stripslashes??
4、header头。。。。
5、for循环,直接就是3了。。这个居然就写死了
6、$tmpset的加法。。。都用了for了,用这个有意义吗??直接用$i不就完了?(这个就不算他的问题,算是习惯吧)
7、BLOB字段的插入。。。直接插的吗???看这里
MySQL 5 中 blob 类型字段的插入

Tags: php, 上传, 误人子弟