php 上传功能实例代码

 更新时间:2016年11月25日 15:58  点击:1288

上传表单 upload.html
复制代码 代码如下:
<form enctype="multipart/form-data" action="upload.php教程" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">  
<input type="submit" value="上传文件">
</form>

1.注意<form enctype="multipart/form-data"......>这是一个标签,我们要实现文件的上传,必须指定为multipart/form-data,否则服务器将不知道要干什么。
2.值得注意的是文件upload.html中表单选项 MAX_FILE_SIZE 的隐藏值域,通过设置其Value(值)可以限制上载文件的大小。
3.MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP 设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。
PHP上传文件涉及到的参数
复制代码 代码如下:
$f=&$HTTP_POST_FILES['Myfile'];
$dest_dir='uploads';//设定上传目录
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//设定上传的文件的属性

或者
<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>
======================================================================== 以上范例中 $_FILES 数组的内容如下所示。我们假设文件上传字段的名称为 userfile(名称可随意命名)
复制代码 代码如下:
$_FILES['userfile']['name'] 客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error'] 和该文件上传相关的错误代码

值:0; 没有错误发生,文件上传成功。
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3; 文件只有部分被上传。
值:4; 没有文件被上传。
PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、apache等的一些参数. 下面,我们简要介绍一下PHP文件上传涉及到的一些参数:
file_uploads
是否允许通过HTTP上传文件的开关,默认为ON即是开
upload_tmp_dir
upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值
upload_max_filesize
允许上传文件大小的最大值,默认为2M
复制代码 代码如下:
<?php
define('MUILTI_FILE_UPLOAD', '10'); //最多10个文件同时上传
define('MAX_SIZE_FILE_UPLOAD', '500000' ); //文件大小不超过5MB
define('FILE_UPLOAD_DIR', 'd:/'); //上传文件的目录
//允许上传的文件名
$array_extention_interdite = array( '.php' , '.php3' , '.php4' , '.exe' , '.msi' , '.htaccess' , '.gz' ); //上传文件的扩展名
//显示信息的公共函数
function func_message($message='', $ok=''){
echo '<table width="100%" cellspacing="0" cellpadding="5">';
if($ok == true){
echo '<tr bgcolor="#99FF99" ><td width="100"> </td><td class= "text"> '.$message.'</td></tr>' ;
}
if($ok == false){
echo '<tr bgcolor="#FF99CC" ><td width="100"> </td><td class="text"> '.$message.'</td></tr>';
}
echo '</table>';
}
//处理表单提交
$action = (isset($_POST['action'])) ? $_POST['action'] :'' ;
$file = (isset($_POST['file'])) ? $_POST['file'] :'' ;
if($file != '') {
$file = $file.'/';
}
$message_true = '';
$message_false = '';
switch($action){
case 'upload' :
chmod(FILE_UPLOAD_DIR,0777);
for($nb = 1 ; $nb <= MUILTI_FILE_UPLOAD ; $nb ++ ){
if( $_FILES['file_'.$nb]['size'] >= 10 ){
if ($_FILES['file_'.$nb]['size'] <= MAX_SIZE_FILE_UPLOAD ){
if (!in_array(ereg_replace('^[[:alnum:]]([-_.]?[[:alnum:]])*.' ,'.', $_FILES['file_'.$nb]['name'] ) , $array_extention_interdite) ){
if($_POST['file_name_'.$nb] !=''){
$file_name_final = $_POST['file_name_'.$nb].$extension ;
}else {
$file_name_final = $_FILES['file_'.$nb]['name'] ;
}
//文件名的修改
$file_name_final = strtr($file_name_final, 'aaaaaa', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$file_name_final = preg_replace('/([^.a-z0-1]+)/i', '_', $file_ name_final );
$_FILES['file_'.$nb]['name'] = $file_name_final;
move_uploaded_file( $_FILES['file_'.$nb]['tmp_name'] , FILE_UPLOAD_ DIR . $file . $file_name_final );
$message_true .= '已经上传文件 : '.$_FILES['file_'.$nb]['name'] .'<br>';
}else{
$message_false .= '文件上传失败 : '.$_FILES['file_'.$nb]['name'] .' <br>';
}
}else{
$message_false .= '文件尺寸超过'.MAX_SIZE_FILE_UPLOAD/1000 . 'KB : " '.$_FILES['file_'.$nb]['tmp_name'].'" <br>';}
}
}//end for
break;
}
?>
<html>
<head>
<title>多文件上传</title>
<style>
.border{background-color:#000000}
.box{background-color:#f8f8f9;}
.text{ color:#000000;
font-family: 宋体;
font-size: 12px;
font-weight:bold}
input, select{font-size: 12px;}
body {
margin-top: 8px;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body marginwidth="0" bottommargin="0" leftmargin="0" rightmargin="0">
<form name="form" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ; ?>">
<input type="hidden" name="action" value="upload">
<table border="0" cellspacing="1" cellpadding="0" align="center" class="border">
<tr>
<td>
<?php
if($message_true != '') { func_message($message_true, true); }
if($message_false != ''){ func_message($message_false, false); }
?>
<table width="100%" border="0" cellspacing="5" cellpadding="2" align="center" class="box">
<?php
for($nb = 1 ; $nb <= MUILTI_FILE_UPLOAD ; $nb ++ ){
?>
<tr class="text">
<td>上传文件: <?php echo $nb; ?></td> <td><input type="file" name="file_<?php echo $nb; ?>"></td>
<td>新文件名(包括扩展名):<?php echo $nb; ?> </td><td><input type="text" name="file_name_<?php echo $nb; ?>"></td>
</tr>
<?php } ?>
<tr>
<td colspan="2" align="right" class="text">上传目的地址:<?php echo FILE_UPLOAD_DIR ;?>
<select name="file">
<option value=""></option>
<?php
$repertoire = opendir(FILE_UPLOAD_DIR);
while( $file = readdir($repertoire) ) {
$file = str_replace('.','',$file);
if( is_dir($file)) {
?>
<option value="<?php echo $file; ?>"> <?php echo $file; ?>/</option>
<?php
}
}
closedir($repertoire);
?>
</select>
</td>
<td colspan="2" align="right"><input type="submit" value="可同时上传<?php echo $nb-1; ?> 个文件 "></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body> </html>

 

<html>
<head>
<title>查询结果</title>
</head>
<body>
<?
    $pagesize = 3;//每页显示3条记录

    $server = mysql教程_pconnect("localhost","root","");
    $db = mysql_select_db("bbs");
    mysql_query("set names 'gb2312'");
      //生成查询记录数的SQL语句
    $sql = "select count(*) as total from message";
        //查询记录数
    $rst = mysql_query($sql);
       //取出一条记录
    $row = mysql_fetch_array($rst);
      //取出记录数
    $rowcount = $row["total"];
      //释放result资源
    mysql_free_result($rst);
     //算出总共有几页
    $pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);
     //在没有设置pageno时,缺省为显示第1页
    if(!isset($pageno)) $pageno = 1;
     //若pageno比1小,则把它设置为1
    if($pageno<1) $pageno = 1;
      //若pageno比总共的页数大,则把它设置为最后一页
    if($pageno>$pagecount) $pageno = $pagecount;
 if($pageno>0){
     //把$PHP_SELF转换为可以在URL上使用的字符串,这样的话就可以处理中文目录或中文文件名
       $href = eregi_replace("%2f","/",urlencode($PHP_SELF));
       if($pageno>1){//显示上一页的裢接
          echo '<a href="fenye.php教程' . $href . '?pageno=' . ($pageno-1) . '">上一页</a>  ';
       }
       else{
          echo '上一页  ';
       }
       for($i=1;$i<$pageno;$i++){
          echo '<a href="fenye.php' . $href . '?pageno=' . $i . '">' . $i . '</a>  ';
       }
       echo $pageno . '  ';
       for($i++;$i<=$pagecount;$i++){
          echo '<a href="fenye.php' . $href . '?pageno=' . $i . '">' . $i . '</a>  ';
       }
       if($pageno<$pagecount){//显示下一页的裢接
          echo '<a href="fenye.php' . $href . '?pageno=' . ($pageno+1) . '">下一页</a>  ';
       }
       else{
          echo '下一页  ';
       }
         //算出本页第一条记录在整个表中的位置(第一条记录为0)
       $offset = ($pageno-1) * $pagesize;
         //生成查询本页数据的SQL语句
       $sql = "select * from message LIMIT $offset,$pagesize";
         //查询本页数据
       $rst = mysql_query($sql);
           //取得字段总数
       $num_fields = mysql_num_fields($rst);
       $i = 0;
       while($i<$num_fields){
        //取得所有字段的名字
          $fields[$i] = mysql_field_name($rst,$i);//取得第i+1个字段的名字
          $i++;
       }
       echo '<table border="1" cellspacing="0" cellpadding="0">';
       //开始输出表格
       echo '<tr>';
       reset($fields);
       while(list(,$field_name)=each($fields)){
        //显示字段名称
          echo "<th>$field_name</th>";
       }
       echo '</tr>';
       while($row=mysql_fetch_array($rst)){
        //显示本页数据
          echo '<tr>';
          reset($fields);
          while(list(,$field_name)=each($fields)){
           //显示每个字段的值
             $field_value = $row[$field_name];
             if($field_value==""){
                echo '<td> </td>';
             }
             else{
                echo "<td>$field_value</td>";
             }
          }
          echo '</tr>';
       }
       echo '</table>';
       //表格输出结束
       mysql_free_result($rst) or die("无法释放result资源!");//释放result资源
    }
    else{
       echo "目前该表中没有任何数据!";
    }
 //断开连接并释放资源
    mysql_close($server);
    ?>
</body>
</html>

本站原创转载注明www.111cn.net

<?
//php教程 var_export读写实例类
class user{
 var $filepath;
 function __()
 {
  $this->filepath = "d:/www.111cn.net/group/";
 }
 function cache() {
  $array = $this->db->select('select group_id,group_name from group','hashmap');
  $fp = fopen ($this->filepath, 'w');
  fputs($fp, '<?php return ' . var_export($array, true) . ';?>');
  fclose($fp);
 }

 function getVar_export($value) {
  $array = require($this->filepath);
  foreach ($array as $key => $v) {
   if ($key==$value) {
    $selected = ' current option';
   } else {
    $selected = '';
   }
   $html .= '<option value="' . $key . '"' . $selected . '>' . $v . '</option>';
  }
 
  return $html;
 }
}

//使用实例方法

$g = new user();
if( intval( $_GET['iscreate']) )
{
 $g->cache();
}
else
{
 $g->getVar_export('vv');
}
//本站原创www.111cn.net转载注明来源
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>收藏本站的代码</title>
<script language="javascript教程"> 
function AddFavorite(sURL, sTitle)
{
    try
    {
        window.external.addFavorite(sURL, sTitle);
    }
    catch (e)
    {
        try
        {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (e)
        {
            alert("加入收藏失败,请使用Ctrl+D进行添加");
        }
    }
}
</script>
</head>

<body>
<a href="javascript:AddFavorite('www.111cn.net', '网页设计教程')">收藏本站</a>
</body>
</html>
收藏本站的代码

session基本用法实例
复制代码 代码如下:
<?php
// page1.php
session_start();
echo'Welcome to page #1';
/* 创建session变量并给session变量赋值*/$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// 如果客户端使用cookie,可直接传递session到page2.php
echo'<br /><a href="page2.php">page 2</a>';
// 如果客户端禁用cookie
echo'<br /><a href="page2.php?' . SID . '">page 2</a>';
/*
默认php5.2.1下,SID只有在cookie被写入的同时才会有值,如果该session
对应的cookie已经存在,那么SID将为(未定义)空*/
?>
<?php
// page2.php
session_start();
print$_SESSION['animal']; // 打印出单个session
var_dump($_SESSION); // 打印出page1.php传过来的session值
?>

2.3 使用session函数控制页面缓存.
很多情况下,我们要确定我们的网页是否在客户端缓存,或要设置缓存的有效时间,

比如我们的网页上有些敏感内容并且要登录才能查看,如果缓存到本地了,可以直

接打开本地的缓存就可以不登录而浏览到网页了.
使用session_cache_limiter('private');可以控制页面客户端缓存,必须在

session_start()之前调用.
端缓存控制.
控制客户端缓存时间用session_cache_expire(int);单位(s).也要在

session_start()前调用.
这只是使用session的情况下控制缓存的方法,我们还可以在header()中控制控制

页面的缓存.
2.4 删除session
要三步实现.
<?php
session_destroy(); // 第一步: 删除服务器端session文件,这使用setcookie

(session_name(),'',time()-3600); // 第二步: 删除实际的session:
$_SESSION= array(); // 第三步: 删除$_SESSION全局变量数组?>
2.5 session在PHP大型web应用中的使用对于访问量大的站点,用默认的session存

贮方式并不适合,目前最优的方法是用数据库教程存取session.这时,函数bool

session_set_save_handler( callbackopen, callbackclose, callbackread,

callbackwrite, callbackdestroy, callbackgc )就是提供给我们解决这个问题

的方案.
该函数使用的6个函数如下:
1. bool open() 用来打开会话存储机制,
2. bool close() 关闭会话存储操作.
3. mixde read() 从存储中装在session数据时使用这个函数4. bool write() 将

给定session ID的所有数据写到存储中5. bool destroy() 破坏与指定的会话ID

相关联的数据6. bool gc() 对存储系统中的数据进行垃圾收集例子见php手册

session_set_save_handler() 函数.
如果用类来处理,用session_set_save_handler(
array('className','open'),
array('className','close'),
array('className','read'),
array('className','write'),
array('className','destroy'),
array('className','gc'),
)
调用className类中的6个静态方法.className可以换对象就不用调用静态方法,但

是用静态成员不用生成对象,性能更好.
2.6 常用session函数:
bool session_start(void); 初始化session
bool session_destroy(void): 删除服务器端session关联文件。

stringsession_id() 当前session的id
stringsession_name() 当前存取的session名称,也就是客户端保存session ID的

cookie名称.默认PHPSESSID。arraysession_get_cookie_params() 与这个

session相关联的session的细节.
stringsession_cache_limiter() 控制使用session的页面的客户端缓存ini

session_cache_expire() 控制客户端缓存时间bool session_destroy() 删除服

务器端保存session信息的文件void session_set_cookie_params( int lifetime

[, stringpath [, stringdomain [, bool secure [, bool httponly]]]] )设置

与这个session相关联的session的细节bool session_set_save_handler(

callbackopen, callbackclose, callbackread, callbackwrite,

callbackdestroy, callbackgc )定义处理session的函数,(不是使用默认的方式)
bool session_regenerate_id([bool delete_old_session]) 分配新的session

id

2.7 session安全问题攻击者通过投入很大的精力尝试获得现有用户的有效会话

ID,有了会话id,他们就有可能能够在系统中拥有与此用户相同的能力.
因此,我们主要解决的思路是效验session ID的有效性.
<?php
if(!isset($_SESSION['user_agent'])){
$_SESSION['user_agent'] = $_SERVER['REMOTE_ADDR'].$_SERVER

['HTTP_USER_AGENT'];
}
/* 如果用户session ID是伪造*/elseif($_SESSION['user_agent'] !=

$_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {
session_regenerate_id();
}
?>

2.8 Session通过cookie传递和通过SID传递的不同:
在php5.2.1的session的默认配置的情况下,当生成session的同时,服务器端将在

发送header set-cookie同时生成预定义超级全局变量SID(也就是说,写入cookie

和抛出SID是等价的.),当$_COOKIE['PHPSESSID']存在以后,将不再写入cookie,也

不再生成超级全局变量SID,此时,SID将是空的.

2.9 session使用实例<?php
/**
* 效验session的合法性*
*/functionsessionVerify() {
if(!isset($_SESSION['user_agent'])){
$_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR']
.$_SERVER['HTTP_USER_AGENT']);
}
/* 如果用户session ID是伪造,则重新分配session ID */elseif($_SESSION

['user_agent'] != MD5($_SERVER['REMOTE_ADDR']
. $_SERVER['HTTP_USER_AGENT'])) {
session_regenerate_id();
}
}
/**
* 销毁session
* 三步完美实现,不可漏*
*/functionsessionDestroy() {
session_destroy();
setcookie(session_name(),'',time()-3600);
$_SESSION= array();
}
?>

[!--infotagslink--]

相关文章

  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • PHP文件上传一些小收获

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

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06