首页 > 编程技术 > php

php获取文件扩展名二种有效方法

发布时间:2016-11-25 15:25

php教程获取文件扩展名二种有效方法

$upload_name ='www.111cn.net.rar';  
$attach_ext = strtolower(substr(strrchr($upload_name,'.'),1));   
echo $attach_ext;

//方法二

$extarray = explode('.',$upload_name);
if( is_array( $extarray ) )
{
 $ext = end($extarray);
 echo $ext;
}


/*
在文件上传过程中我们经常会需要取得上传文件的扩展名或叫做后缀名,进行
判断以确定文件类型。

本站原创文章转载注明来源www.111cn.net

 代码如下 复制代码
function _strips教程lashes($string) {
 if(is_array($string)) {
  foreach($string as $key => $val) {
   $string[$key] = _strips教程lashes($val);
  }
 } else {
  $string = stripslashes($string);
 }
 return $string;
}

//111cn.net提示你:使用方法

 代码如下 复制代码
$post = _stripslashes( $_post );
$get = _stripslashes( $_get );
$ot = _stripslashes( $_post['cc'] );

//这样用户所提交的" ' 增加的了' 或"这样,可以防止一些基本sql注入方法。

名称:random_password()

#作者:克里斯亨特,杰里米阿什克拉夫特

#日期:1999年5月,2000年10月

#用途:返回一个作为密码使用随机单词。元音和辅音
#是交替给一个(希望)pronouncable,因此
#难忘的结果。

#用法:$ my_new_password = random_password();

#(c)1999年克里斯亨特。授予权限是自由包括此脚本
#您的程序。提供这个头是原封不动。

#2000年10月 - 茉莉酸 - Perl代码移植到PHP

function random_password() {

   $maxlen =  6;   # Default to 6

   # Build tables of vowels & consonants. Single vowels are repeated so that
   # resultant words are not dominated by dipthongs

   $vowel = array ("a","e", "i", "o", "u", "y", "ai", "au", "ay", "ea", "ee", "eu", "ia", "ie", "io", "oa", "oi", "oo", "oy");
   $consonant = array ("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "qu", "r", "s", "t", "v", "w", "x", "z", "th", "st", "sh", "ph", "ng", "nd");
   $password = "";

   srand((double) microtime()*1000000);
   $vowelnext = (int)rand(0,1);  # Initialise to 0 or 1 (ie true or false)

   do {
      if ($vowelnext) {
         $password = $password.$vowel[rand(0,sizeof($vowel))];
      } else {
         $password = $password.$consonant[rand(0,sizeof($consonant))];
      }

      $vowelnext = !$vowelnext;    # Swap letter type for the next one

   } while (strlen($password) <$maxlen);

   return $password;

}

1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE的所有内容,是它们的集合体。
2.$_GET、$_POST、$_COOKIE在$_REQUEST中都有一个副本。改变$_REQUEST的值不影响$_GET等,反之亦然。
3.GET和POST同名的情况下,$_REQUEST取的是POST的值。COOKIE与GET或POST重名的情况下,$_REQUEST取的是COOKIE的值。COOKIE的优先级最高。错误。

6.7.2010 update :
PHP.INI中很明确了,variables_order = "GPCS",
这个优先顺序是可以改变的。


真是的,我层次太低了。

测试开始。

测试1:
<code>
echo '<pre>';//源格式打印
//URL加上m=xxoo&url=www.111cn.net来测试$_GET

print_r($_REQUEST);//首先打印内容

print_r($_GET);


$_REQUEST = array();//清空$_REQUEST

echo $_GET['m'];
echo '</pre>';
</code>
测试结果:$_GET['m']的值是xxoo。

测试2:
<code>
echo '<pre>';//源格式打印
//URL加上m=xxoo来测试$_GET

print_r($_REQUEST);

print_r($_GET);


$_GET = array();//清空

print_r($_REQUEST);
echo '</pre>';
</code>
测试结果:$_REQUEST['m']的值是xxoo。

结论:对$_REQUEST的操作没有影响到$_GET,反之亦然。$_REQUEST只是包含了一个$_GET的副本(the same as $_POST 哈哈)。

------------------------------------华丽的分隔线 www.111cn.net:) ---------------------------------------------------
好。继续
测试3
<code>
//POST-GET重名测试
//从其他页面POST传送一个m的值为post,action地址加上m=get

print_r($_REQUEST);

print_r($_GET);

print_r($_POST);
</code>
结果:$_REQUEST['m'] == 'post'。
结论:同时提交GET和POST且同名,$_REQUEST取的是POST的值。(可能是POST优先级更高。)

测试4
<code>
//cookie与postget 重名测试
setcookie('m', 'cookie', time()+3600);//先把COOKIE种上,名字为m,值为cookie。然后刷新。(COOKIE要刷新才生效)

//从其他页面POST传送一个m的值为post,action地址加上m=get
print_r($_REQUEST);
</code>
结果:$_REQUEST['m'] == 'cookie'。结论:COOKIE的优先级最高。

 

在WEB应用中文件上传是系统不可少的功能,同时也存在很大安全隐患的地方,如果你没作限制就可以上传动态文件php,asp,jsp等,这样就对你的系统产生的特大的影响。下面我们来做二个验证上传文件类型。

第一种

 代码如下 复制代码
function ($file_name,$pass_type=array('jpg','jpeg','gif','bmp','png')){
$yx_file = $pass_type;
$kzm = substr(strrchr($file_name,"."),1);
$is_img = in_array(strtolower($kzm),$yx_file);
if($is_img){
return true;
}else{
return false;
}
}

第二种,用getimagesize函数实例,这个相对比上面一个安全一些。

 代码如下 复制代码

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");

if( strtolowerr$type !='gif' )

{

die('图片类型不对');

}
echo "<img" width=100% src="img/flag.jpg" $attr alt="getimagesize() example" />";
?>

标签:[!--infotagslink--]

您可能感兴趣的文章: