php给$_POST,$_GET过滤单引号与双引号安全函数

 更新时间:2016年11月25日 15:25  点击:1778
 代码如下 复制代码
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注入方法。

 代码如下 复制代码

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.111cn.net/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us" xmlns="http://www.w3.org/1999/xhtml">
<title>login</title>
<link rel="stylesheet" type="text/css教程" href="/tryit.css教程" />
<script type="text/网页特效">
function getpinimg()
{
 document.getelementbyid("pinimg").src="log_demo.php教程?a=pin&r=" + math.random();
}
</script>
</head>

<body>
<form action="log_demo.php" method="get">
 <input type="hidden" name="a" value="log" />
 user:<input type="text" name="user" size="20" value="test" /><br /><br />
 password:<input type="password" name="pass" size="12" value="123456" /><br /><br />
 pincode:<input type="text" name="pin" size="8" value="" />
 <input type="button" value="getpin" onclick="getpinimg();">
   <img id="pinimg" src="log_demo.php?a=pin" onclick="getpinimg();" />
 <input type="submit" value="submit"><br />
</form>
</body>
</html>

log_demo.php代码

 代码如下 复制代码

<?php
require_once("log_aux.php");

if ($_get['a'] == "pin") {
 getpinimg();
 exit;
}

if ($_get['a'] == "log") {
 $ret = checkpincookie($_get['pin'], 300);
 if ($ret < 0) {
  echo "pin error:$ret ";
  exit;
 }
 // check user name and password.
 echo "ok..$ret ";
 if ("123xx" == 123) {
  echo "dddd ";
 }
 echo $_get['u'];
}

log_aux.php代码

 代码如下 复制代码

<?php
$magic_a = "www.111cn.net34589";
$magic_b = "234566***+";

function getpincookie($pin_code)
{
 global $magic_a;
 global $magic_b;
 $now = time();
 $client_ip = $_server['remote_addr'];
 $pin = md5($now . $client_ip . $magic_a . $pin_code . $maigc_b) . $now;
 return $pin;
}

function checkpincookie($pin_code_in, $timeout=300) // 5 miniuteswww.111cn.net
{
 global $magic_a;
 global $magic_b;
 $pin = substr($_cookie['pin'], 0, 32);
 $time = substr($_cookie['pin'], 32);
 $now = time();
 if ($now - $time > $timeout) {
  return -100;  // time_out
 }
 $pin_code_in = strtolower($pin_code_in);
 $client_ip = $_server['remote_addr'];
 $pin_2 = md5($time . $client_ip . $magic_a . $pin_code_in . $maigc_b);
 if ($pin === $pin_2) {
  return 0;
 } else {
  return -200; // pincode is error.
 }
}

function getpinimg()
{
// $rnd = rand(0, 10);
 $rnd = 0;
 $path = "./www.111cn.net/" . substr("00000$rnd", -4);
 for ($i = 0; $i < 4; ++$i) {
  if (__getpinimg($path)) {
   break;
  }
 }
 exit;
}

function __getpinimg($path)
{
 require("$path/pinmap.php");
 $pinv = $pin[rand(0, $pin_max)];
 list ($file, $pin_code) = explode('#', $pinv);
 $filepath = "$path/$file$pin_ext";

 //  output pincode image.
 $fh = fopen($filepath, "rb");
 if (!$fh) {
  return false;
 }
 $data = fread($fh, 10240); // php just read max size: 8k.
 fclose($fh);

 if (strlen($data) < 200) {
  return false;
 }
 // set cookie;
 header("content-type: image/jpeg");
 $pin_code = strtolower($pin_code);
 $pin = getpincookie($pin_code);
 setcookie("pin", $pin);

 echo $data;
 return true;
}

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

名称: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的优先级最高。

 

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • C#中加载dll并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#虚函数用法实例分析

    这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25
  • PHP编码转换函数mb_convert_encoding与iconv用法

    文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25