当前位置:  编程技术>php
本页文章导读:
    ▪php上传文件要注意哪些地方      首先,要在用户界面中提供一个表单用于提交上传文件的请求。 由于上传的文件是一种特殊数据,不同于其它的post数据,所以必须给表单设置一个特殊的编码: <form encType="multipart/form-data".........
    ▪php短链接、短网址、短url的实现代码      php生成短链接url地址,代码:   代码示例: <?php /** * 短连接生成算法  * site: www. */     class Short_Url {          #字符表          public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUV.........
    ▪隐藏PHP版本的方法 PHP基本安全设置      本节内容: 隐藏PHP版本,避免一些因PHP版本漏洞而引起的攻击。 1、隐藏PHP版本 其实就是隐藏 “X-Powered-By: PHP/5.2.13″ 这样的信息。 编辑php.ini配置文件,修改或加入: expose_php = Off 保存,.........

[1]php上传文件要注意哪些地方
    来源: 互联网  发布时间: 2013-12-24

首先,要在用户界面中提供一个表单用于提交上传文件的请求。

由于上传的文件是一种特殊数据,不同于其它的post数据,所以必须给表单设置一个特殊的编码:
<form encType="multipart/form-data" method="POST" action="/blog_article/upload.html"></form>
以上的enctype属性,最容易出错。
如果http post请求中既有常规数据,又包含文件类数据的话,这个属性就应该显示加上,这样可以提高针对各种浏览器的兼容性

接下来,向表单中添加一个用于上传文件的字段:
<input name="attachment" type="file">

例子:
 

代码示例:
<p>请上传附件:</p>
<form encType="multipart/form-data" method="POST" action="/blog_article/upload.html">
<input name="attachment" type="file">
<input value="上传附件" type="submit">
</form>

提示:
可以通过php.ini中的upload_max_filesize来设置允许上传文件的最大值。

另外,还有一个post_max_size也可以用来设置允许上传的最大表单数据,即表单中各种数据之和,因此,也可以通过设置这个字段来控制上传文件的最大值。
不过要注意后者的值必须大于前者,因为前者属于后者的一部分表单数据。

相关阅读:
php文件上传综合实例分享
php文件上传类与实例(单文件上传、多文件上传)
php 文件上传(普通上传与异步上传)的例子
php 文件上传的实例解析
php 文件上传实例剖析
php单文件上传的实例分析
php多文件上传的简单示例分析
php文件上传原理深入分析与理解
php 文件上传类(轻便型)
php 普通表单多文件上传的例子
PHP 文件上传进度条的简单实现方法
php 文件上传简单实例


    
[2]php短链接、短网址、短url的实现代码
    来源: 互联网  发布时间: 2013-12-24

php生成短链接url地址,代码:
 

代码示例:
<?php
/**
* 短连接生成算法 
* site: www.
*/
    class Short_Url { 
        #字符表 
        public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
 
        public static function short($url) { 
            $key = "alexis"; 
            $urlhash = md5($key . $url); 
            $len = strlen($urlhash); 
 
            #将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接 
            for ($i = 0; $i < 4; $i++) { 
                $urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4); 
                #将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零 
                $hex = hexdec($urlhash_piece) & 0x3fffffff; #此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常 
 
                $short_url = "http://t.cn/"; 
                #生成6位短连接 
                for ($j = 0; $j < 6; $j++) { 
                    #将得到的值与0x0000003d,3d为61,即charset的坐标最大值 
                    $short_url .= self::$charset[$hex & 0x0000003d]; 
                    #循环完以后将hex右移5位 
                    $hex = $hex >> 5; 
                } 
 
                $short_url_list[] = $short_url; 
            } 
 
            return $short_url_list; 
        } 
    } 
 
    $url = "http://www.www./jb//"; 
    $short = Short_Url::short($url); 
    print_r($short); 
?>

输出结果:
Array ( [0] => http://t.cn/KyfLyH [1] => http://t.cn/bPafHS [2] => http://t.cn/H880aD [3] => http://t.cn/TmvDK0 )

生成的短url存到服务器里,做一个映射,short_url => original_url,输入短url的时候按照映射转回长url,然后访问原始url即可。

代码:
 

代码示例:
<?php 
Class TinyURL { 
    static private $key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; //可以多位 保证每位的字符在URL里面正常显示即可 
    private function  __construct() {} 
    private function  __clone(){} 
     
    static public function encode($value) { 
        $base = strlen( self::$key ); 
        $arr = array(); 
        while( $value != 0 ) { 
            $arr[] = $value % $base; 
            $value = floor( $value / $base ); 
        } 
        $result = ""; 
        while( isset()($arr[0]) ) $result .= substr(self::$key, array_pop($arr), 1 ); 
        return $result; 
    } 
     
    static public function decode($value) { 
        $base = strlen( self::$key ); 
        $num = 0; 
        $key = array_flip( str_split(self::$key) ); 
        $arr = str_split($value); 
        for($len = count($arr) - 1, $i = 0; $i &lt;= $len; $i++) { 
            $num += pow($base, $i) * $key[$arr[$len-$i]]; 
        } 
        return $num; 
    } 

调用示例:
 

代码示例:
<?php
$t = 100; 
$time_start =  microtime(true); 
while($t--){ 
    var_dump( TinyURL::encode(1000000) ); 
    var_dump( TinyURL::decode("4C92") ); 

$time_end = microtime(true); 
printf("[内存使用: %.2fMB]\r\n", memory_get_usage() /1024 /1024 );  
printf("[内存最高使用: %.2fMB]\r\n", memory_get_peak_usage()  /1024 /1024) ;  
printf("[执行时间: %.2f毫秒]\r\n", ($time_end - $time_start) * 1000 ); 

以上代码适用于:
自增ID的传统关系型数据库。
需要执行二次SQL,第一次获取自增ID,第二次根据ID生成短链接。[或者3次,额外一次用于判断是否存在此短链接。]

此外,还有一种是根据URL进行Hash运算的算法,这种算法的优点:
1,无需id,用Key/Value这样的格式即可满足存储。
2,SQL插入只需一条语句。
3,生成的数据具有离散性,无法观察生成规律。

缺点:
1,所以的Hash算法都存在冲突的可能,一旦冲突原始的就会被覆盖。[当然你可以增加额外的逻辑去判断。]
2,数据规模不好控制,你不知道什么时候才能开始使用新的Hash数据位,但随着数据量的增加,冲突的概率会越来越高。
此种的代码适用于NoSQL等非关系型数据库,查找快更新快。

您可能感兴趣的文章:

php 短网址的实现代码
php 创建短地址 (var_export)的方法

 


    
[3]隐藏PHP版本的方法 PHP基本安全设置
    来源: 互联网  发布时间: 2013-12-24

本节内容:
隐藏PHP版本,避免一些因PHP版本漏洞而引起的攻击。

1、隐藏PHP版本
其实就是隐藏 “X-Powered-By: PHP/5.2.13″ 这样的信息。

编辑php.ini配置文件,修改或加入: expose_php = Off
保存,重新启动Nginx或Apache等相应的Web服务器即可。

检测:
 

代码示例:
[root@xxx /]# curl -I www.
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 20 Jul 2010 05:45:13 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
 

已隐藏了PHP版本。

2、其它几个PHP的基本安全设置:
 

disable_functions = phpinfo,system,exec,shell_exec,passthru,popen,dl,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
#该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

display_errors = Off
#是否将错误信息作为输出的一部分显示。在最终发布的web站点上,强烈建议你关掉这个特性,并使用错误日志代替。打开这个特性可能暴露一些安全信息,例如你的web服务上的文件路径、数据库规划或别的信息。

allow_url_fopen = Off
#是否允许打开远程文件,建议关闭,如果网站需要采集功能就打开。

safe_mode = On
#是否启用安全模式。打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。

open_basedir = /var/www/html/xxx:/var/www/html/168pc
#目录权限控制,xxx目录中的php程序就无法访问168pc目录中的内容。反过来也不行。在Linux/UNIX系统中用冒号分隔目录,Windows中用分号分隔目录。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3