PHP5文件上传之宝典篇

 更新时间:2016年11月25日 16:08  点击:2153

1、  全局变量$_FILES[‘xxx’];

    PHP5新创了一个$_$_FILES全局变量来接收文件的上传。这和以往版本有些差别。在旧版本里,你可以打开register_globals=on直接使用全局变量,或使用$HTTP_POST_FILSE[‘xxx’],这里只研究PHP5

 

2文件上传表单

    1,上传文件的表单使用post方式(和get的区别不用说了);还要加上enctype=''multipart/form-data''。
    2,一般要加上隐藏域:

<input type=hidden name=''MAX_FILE_SIZE'' value=”30000”>,位置在file域前面。value的值是上传文件的客户端字节限制。据说可以减少文件超标时客户端的等待时间,不过我没觉得有什么区别。
   注意:MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini 设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦

    3,出于安全考虑,file域是不许赋值的。随便在file域输入字符串,然后按submit也不会有反应。必须是第二个字符是冒号的时候(比如空格跟随冒号可以上传一个长度为0字节的“文件”),submit才同意“服务”——不过这个是客户端的措施,跟MAX_FILE_SIZE一样很容易绕过去。

 

Page1.php:

<form enctype="multipart/form-data" action="page2.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="8388608">
上传文件: <input name=     
      		


1. php生成js文件:

<?php
$a=array(
 array(''title''=>''本地新闻1'',ln=>''#''),
 array(''title''=>''本地新闻2'',ln=>''#''),
 array(''title''=>''本地新闻3'',ln=>''#'')
 
);//实际操作中可通过数据库得到记录集数组
$news='' var a=[''; //把该数组转化为javascrīpt形式

for($i=0;$i<count($a);$i++) {
 
 
 if($i==count($a)-1) {
  $news.=''{''
   ."title:''"
   .$a[$i][title]."''"
   .","
   ."ln:''"
   .$a[$i][ln]
   .''''}'';
 }else {
  $news.=''{''
   ."title:''"
   .$a[$i][title]."''"
   .","
   ."ln:''"
   .$a[$i][ln]
   .''''},''; //如不是最后一个数据,则用逗号隔开,否则结束
 }
}

$news.=''];'';
$fh=fopen("file.js","w");
fwrite($fh,$news);
fclose($fh); //写入js
?>

2.html 文件

<!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=gb2312" />
<title>无标题文档</title>
</head>


<body>
<div id="news"  style="display:none" > //定义显示的格式,先通过display:none 隐藏
<table border="1" bordercolor="#FF0000">
  <tr>
    <td><a href="$link">$title</a></td>
  </tr>
 </table>
</div>
<scrīpt language="javascrīpt" src="file.js"> //引用js

</scrīpt>
<scrīpt language="javascrīpt" >

 news_obj=document.getElementById(''news'');
 e=news_obj.innerHTML;
 re=/$title/g; //正则,匹配$title
  re2=/$link/g; // 匹配$link
 for(i=0;i<a.length;i++) {
  tmp=e.replace(re,
< 属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)

在 PHP5 中,属性指在 class  中声明的变量。
在声明变量时,必须使用  public private protected 之一进行修饰,定义变量的访问权限。

Public(公开): 可以自由的在类的内部外部读取、修改。 
Private(私有): 只能在这个当前类的内部读取、修改。 
Protected(受保护):能够在这个类和类的子类中读取和修改。
这里我们先介绍Public(公开)的情况下对属性的读取和修改。

属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。
在方法内部通过 $this-> 符号调用同一对象的属性。

<?php
class Bike
{
public $color = "blue"; //定义自行车的颜色属性为蓝色
public $price = 200;  //定义自行车的价格为200
}
$myBike = new Bike();  //创建了对象
echo "自行车的颜色为".$myBike->color."<br />";
echo "自行车的价格为".$myBike->price;
?>


输出的结果就应该为

自行车的颜色为blue
自行车的价格为200


以上就是将原先给自行车属性所定义的值进行输出。
接下来是看看怎么在创建对象后修改原来的属性值。

<?php
class Bike
{
public $color = "blue"; //定义自行车的颜色属性为蓝色
public $price = 200;  //定义自行车的价格为200
}
$myBike = new Bike();  //创建了对象
$myBike->color = "red"; //修改成red
$myBike->pirce = 300;  //价格变为300
echo "自行车的颜色为".$myBike->color."<br />";
echo "自行车的价格为".$myBike->price;
?>
 

以前发过,今天又校对了一下,也当是自己又重新温习了一遍,又有新的感觉。
不愧是久负盛名的开源项目,编码规范简单精练,切中要害。
希望能对大家有所帮助,欢迎交流看法。 

phpBB 编码标准规范

如果您对原手册内容有注解或建议,请发电子邮件至 nate@phpbb.com ;
如果您对本文翻译有什么意见或建议,请联系QQ78045595,或发电子邮件至gaogan at gmail dot com.

编辑器设定

制表符 vs 空格:为了此事尽可能地简单,我们使用制表符,不用空格。 你可以随便设定编辑器使用多少空格显示制表符,但是必须保证当你保存文件时,它保存的是制表符而不是空格。 这样,我们每个人都可以让代码以我们喜欢的方式显示,同时不破坏实际文件的布局。

换行: 确保编辑器将文件保存为 Unix 格式。这意味着以换行符终止一行,而不是在 Win32 里那样用一个 CR/LF 对,也不是 Mac 所用的某种方式。任何规范的 Win32 编辑器应该做到这点,但这并不见得总是默认的。你需要熟悉你的编辑器。如果你需要有关使用 Windows 文本编辑器的建议,应该去咨询它的开发者。他们中有些人在 Win32 中做编辑工作。

命名约定

在我们的命名约定中,不会使用任何形式的匈牙利命名。我们很多人相信,匈牙利命名是导致代码混乱的一种主要手法。

变量名称:变量名应当全部小写,并且词语之间以单个下划线分隔。

例如: $current_user 是正确的, 但是 $currentuser 和 $currentUser 就不正确。

名称应当是描述性的,并且简明。我们自然不希望使用冗长的句子作为变量名,但是多输入几个字符总好于疑惑于某个变量到底是干什么用的。

循环计数器:允许使用一个单字符变量名的唯一情形是当它作为一个循环计数器的时候。在这种情况下,外层循环的计数器应当始终是 $i。如果有一个循环处于这个循环的内部,它的计数器应当是 $j,进而是 $k,等等。如果循环的计数器是一个已经存在并且名字有意义的变量,本规范并不适用。

例如:
 

1    for ($i = 0; $i < $outer_size; $i++)  
2    { 
3       for ($j = 0; $j < $inner_size; $j++)  
4       { 
5          foo($i, $j); 
6       } 
7    }
    view plain | print | copy to clipboard | ?

 


函数名称: 函数也应该描述性地命名。这里我们并非在用 C 编程,我们不希望写出诸如“stristr()”此类的函数来。同上,使用单词间用单下划线分隔的小写名称。函数名称中某处最好有一个动词。较好的函数名 称如print_login_status(), get_user_data(),等等。

函数参数:参数遵循和变量名字相同的约定。我们不希望一堆这样的函数:do_stuff($a, $b, $c)。在大部分情况下,我们希望仅仅看看函数的声明,就知道怎样使用它。

总结: 这里的基本哲学是不要为了偷懒而伤害了代码的清晰。但是,必须由一些常识来掌握这种平衡;例如, print_login_status_for_a_given_user() 做得就过火了——这个函数命名为 print_user_login_status() 更好些, 或只是 print_login_status()。

代码布局

新建文件的标准头部:这里是一个头部的模版,它应当包含在每个 phpBB 文件开始
 

1    /***************************************************************************
2                   &nb
<

 

 


<?php
/**
 * @name 采集后的处理.php
 * @date Sat Dec 22 02:07:45 CST 2007
 * @copyright 马永占(MyZ)
 * @author 马永占(MyZ)
 * @link http://blog.111cn.net/mayongzhan/
 */
 
//采集后的文件,然后那来进行处理.这里的东西让我抄了5本书,是哪的不方便提供,自己找找吧.
 
header(''Content-Type:text/html;charset=utf8'');
 
function writer($content,$url)
{
    $fp = fopen($url, ''ab'');
    fwrite($fp, $content);
    fclose($fp);        
}
 
//从1到136页的内容一次合并.这个是最爽的...
 
for ($i=1;$i<136;$i++) {
    $str = file_get_contents(''./myz/''.$i.''.shtml'');
    preg_match("/(<h1>)(.*?)(</h1>)(.*?)(<div class="artibody" id="artibody">)(.*?)(</div>)/s",$str,$arr);
    $arr[6] = preg_replace("/(<span[^>]+>.*?<a[^>]+>)(.*?)(</a></span>)/s","$2",preg_replace("/<p>|</p>/","rn",$arr[6]));
    $result = "rn------------------------------------------------rn------------------------------------------------rn------------------------------------------------rn".$i."----------------马永占的目录编号:".$arr[2]."rn------------------------------------------------rn------------------------------------------------rn------------------------------------------------rn".$arr[6];
    writer($result, "./myz/all.txt");
}
?> 

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07