php中php://input和$_POST有什么不同

 更新时间:2016年11月25日 15:42  点击:1597
在php中php://input和$_POST有什么区别呢,post是我们常用的获取表单提交的数据的一个例子,但是php://input估计很多朋友和我一样没有怎么用过,下面我们就一起来看看吧。

我们先来看两个实例

例子:php://input

 代码如下 复制代码

 <form action="post.php" method="post">
<input type="text" name="user">
<input type="password" name="password">
<input type="submit">
</form>

post.php

 代码如下 复制代码

 <? echo file_get_contents("php://input");?>

例子,post

html

 代码如下 复制代码

<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

welcome.php

 代码如下 复制代码
Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

通过 HTTP POST 发送的变量不会显示在 URL 中。

当我们用$_POST接受不到页面传过来信息时,我们可以用php://input去接受值,那么他俩有什么区别

首先当$_POST 与 php://input可以取到值时$HTTP_RAW_POST_DATA 为空;
$http_raw_post_data是PHP内置的一个全局变量。它用于,PHP在无法识别的Content-Type的情况下,将POST过来的数据原样地填入变量$http_raw_post_data。它同样无法读取Content-Type为multipart/form-data的POST数据。需要设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。

然后$_POST以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换;
而php://input 通过输入流以文件读取方式取得未经处理的POST原始数据;

php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype=”multipart/form-data”;

php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。

根据IP地址查找我们的IP地址所在地,这个最简单办法就是直接把ip在百度搜索就可以知道你的IP地址所在地了,但对于一些网站我们不能使用此方法,但可以通过api来实现

例子,利用第三方接口实例

 代码如下 复制代码


<form action=www.111cn.net method="post">

 <p>请输入ip地址:<input type="text" name="ip" /></p>

 <p><input type="submit" value="查询"  /></p>

</form>

<?php

 //获取ip地址

 //$ip = $_SERVER['REMOTE_ADDR'];    //自动获取客户端的IP

 //ip对应的地区

 if(!empty($_POST['ip'])){

  $ip = $_POST['ip'];

  //接口地址,这样返回的是一个xml结果集,

  $str = file_get_contents("http://www.yodao.com/smartresult-xml/search.s?type=ip&q=".$ip);

  //这里要得到里面的地址信息,提取xml方法有很多,我用的是正则。

  preg_match_all( "/<location>(.*?)</location>/",$str,$addr1);

  //最终结果,如图2;

  $addr = $ip."=>".$addr1[1][0];

  echo $addr;

 }

?>

例子,利用QQWry


目前只支持PHP5版本。

安装

1.sudo pecl install qqwry-beta或者直接下载编译,phpize && ./configure && make && sudo make install
2.编辑php.ini,加入extension=qqwry.so
3.重启http server
使用很简单,首先就是实例化,传入纯真数据库的文件路径,然後调用q方法。该方法返回一个数组,第一个值为地址1,例如南宁市,第二个值为地址2,例如邕 宁区电信ADSL。看例子吧,一目了然。下面的iconv是把数据从GB2312转到UTF-8,如果你的站点是用GB2312,那么这一步是不需要的。

 代码如下 复制代码


$qqwry=new qqwry('QQWry.Dat');

list($addr1,$addr2)=$qqwry->q('127.0.0.1');
$addr1=iconv('GB2312','UTF-8',$addr1);
$addr2=iconv('GB2312','UTF-8',$addr2);
echo $addr1,'|',$addr2," ";

$arr=$qqwry->q('222.216.47.4');
$arr[0]=iconv('GB2312','UTF-8',$arr[0]);
$arr[1]=iconv('GB2312','UTF-8',$arr[1]);
echo $arr[0],'|',$arr[1]," ";

$arr=$qqwry->q('64.233.187.99');
$arr[0]=iconv('GB2312','UTF-8',$arr[0]);
$arr[1]=iconv('GB2312','UTF-8',$arr[1]);
echo $arr[0],'|',$arr[1]," ";

输出:

本机地址|
广西南宁市|(青秀区)电信ADSL
美国|加利福尼亚州Google公司

例子,如果你只要查查IP地址就不需相面那么复杂了,如我在百度输入 110.110.110.110

显示地址为

IP地址: 110.110.110.110黑龙江省哈尔滨市 铁通

如下图所示

PHP查询ip所在地的几种方法(api实例)

 

今天在要php5.4.6中编译安装一个php-screw了,但是怎么操作都不成功了,后来看到有朋友博客写到一篇关于php-screw在php5.4.6上编译失败问题的解决方案,于是拿过来试了一下没想到还真解决了,下面我把文章拿出来与大家一起分享。

php-screw版本问题,报错

make

/bin/sh /root/php_screw-1.5/libtool --mode=compile cc -I. -I/root/php_screw-1.5 -DPHP_ATOM_INC -I/root/php_screw-1.5/include -I/root/php_screw-1.5/main -I/root/php_screw-1.5 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/php_screw-1.5/php_screw.c -o php_screw.lo
libtool: compile: cc -I. -I/root/php_screw-1.5 -DPHP_ATOM_INC -I/root/php_screw-1.5/include -I/root/php_screw-1.5/main -I/root/php_screw-1.5 -I/usr/include/php -I/usr/include/php/main www.111cn.net -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/php_screw-1.5/php_screw.c -fPIC -DPIC -o .libs/php_screw.o
/root/php_screw-1.5/php_screw.c: In function ‘zm_startup_php_screw’:
/root/php_screw-1.5/php_screw.c:124: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
/root/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:
/root/php_screw-1.5/php_screw.c:133: error: ‘struct _zend_compiler_globals’ has no member named ‘extended_info’
make: *** [php_screw.lo] Error 1

修改php-screw.c

 代码如下 复制代码


修改
CG(extended_info) = 1;

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

在php中浮点数计算通常我们会得不到自己想要的结果了,这个到底是什么原因呢,下面我们来分析问题的同时也给各位朋友整理了一些比较好用的实例。

如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58*100 );会打印57,而不是58,这个其实是计算机底层二进制无法精确表示浮点数的一个bug,是跨语言的,我用python也遇到这个问题。所以基本上大部分语言都提供了精准计算的类库或函数库,比如php有BC高精确度函数库,下面达内php培训老师介绍一下一些常用的BC高精确度函数使用。

例子

 代码如下 复制代码
<?php    $f = 0.58;    var_dump(intval($f * 100)); //为啥输出57?>

为啥输出是57啊? PHP的bug么?

我相信有很多的同学有过这样的疑问, 因为光问我类似问题的人就很多, 更不用说bugs.php.net上经常有人问…

要搞明白这个原因, 首先我们要知道浮点数的表示(IEEE 754):

浮点数, 以64位的长度(双精度)为例, 会采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位).

符号位:最高位表示数据的正负,0表示正数,1表示负数。

指数位:表示数据以2为底的幂,指数采用偏移码表示

尾数:表示数据小数点后的有效数字.

这里的关键点就在于, 小数在二进制的表示, 关于小数如何用二进制表示, 大家可以百度一下, 我这里就不再赘述, 我们关键的要了解, 0.58 对于二进制表示来说, 是无限长的值(下面的数字省掉了隐含的1)..

0.58的二进制表示基本上(52位)是: 00101000111101011100001010001111010111000010100011110.57的二进制表示基本上(52位)是: 001000111101011100001010001111010111000010100011110而两者的二进制, 如果只是通过这52位计算的话,分别是:www.111cn.net

0.58 -> 0.579999999999999960.57 -> 0.5699999999999999至于0.58 * 100的具体浮点数乘法, 我们不考虑那么细, 有兴趣的可以看(Floating point), 我们就模糊的以心算来看… 0.58 * 100 = 57.999999999

那你intval一下, 自然就是57了….

可见, 这个问题的关键点就是: “你看似有穷的小数, 在计算机的二进制表示里却是无穷的”

so, 不要再以为这是PHP的bug了, 这就是这样的…..

PHP浮点型在进行+-*%/存在不准确的问题

例如:

1.<?php

$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

打印出来的值为 boolean false
这是为啥?PHP手册对于浮点数有以下警告信息:
Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999…。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数

 代码如下 复制代码

<?php

$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);

bcadd — 将两个高精度数字相加
bccomp — 比较两个高精度数字,返回-1, 0, 1
bcdiv — 将两个高精度数字相除
bcmod — 求高精度数字余数
bcmul — 将两个高精度数字相乘
bcpow — 求高精度数字乘方
bcpowmod — 求高精度数字乘方求模,数论里非常常用
bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
bcsqrt — 求高精度数字平方根
bcsub — 将两个高精度数字相减

整理了一些实例

php BC高精确度函数库包含了:相加,比较,相除,相减,求余,相乘,n次方,配置默认小数点数目,求平方。这些函数在涉及到有关金钱计算时比较有用,比如电商的价格计算。
 

 代码如下 复制代码
/**
  * 两个高精度数比较
  *
  * @access global
  * @param float $left
  * @param float $right
  * @param int $scale 精确到的小数点位数
  *
  * @return int $left==$right 返回 0 | $left<$right 返回 -1 | $left>$right 返回 1
  */
var_dump(bccomp($left=4.45, $right=5.54, 2));
// -1
 
 /**
  * 两个高精度数相加
  *
  * @access global
  * @param float $left
  * @param float $right
  * @param int $scale 精确到的小数点位数
  *
  * @return string
  */
var_dump(bcadd($left=1.0321456, $right=0.0243456, 2));
//1.04
 
  /**
  * 两个高精度数相减
  *
  * @access global
  * @param float $left
  * @param float $right
  * @param int $scale 精确到的小数点位数
  *
  * @return string
  */
var_dump(bcsub($left=1.0321456, $right=3.0123456, 2));
//-1.98
 
 /**
  * 两个高精度数相除
  *
  * @access global
  * @param float $left
  * @param float $right
  * @param int $scale 精确到的小数点位数
  *
  * @return string
  */
var_dump(bcdiv($left=6, $right=5, 2));
//1.20
 
 /**
  * 两个高精度数相乘
  *
  * @access global
  * @param float $left
  * @param float $right
  * @param int $scale 精确到的小数点位数
  *
  * @return string
  */
var_dump(bcmul($left=3.1415926, $right=2.4569874566, 2));
//7.71
 
 /**
  * 设置bc函数的小数点位数
  *
  * @access global
  * @param int $scale 精确到的小数点位数
  *
  * @return void
  */
bcscale(3);
var_dump(bcdiv('105', '6.55957'));
// 16.007

 
注意点:关于设置的位数,超出部分是丢弃掉,而不是四舍五入。

下面我整理了一些常用的数组转换成树的实例与大家一起学习,我想大家都会很喜欢这篇文章的哦。

Php代码 

 代码如下 复制代码
 
* $sourceArr 原来的数组
* $key 主键
* $parentKey 与主键关联的父主键
* $childrenKey 生成的孩子的键名
*
*/ 
 
function arrayToTree($sourceArr, $key, $parentKey, $childrenKey) 

    $tempSrcArr = array(); 
    foreach ($sourceArr as  $v) 
    { 
        $tempSrcArr[$v[$key]] = $v; 
    } 
    $i = 0; 
    $count = count($sourceArr); 
    for($i = ($count - 1); $i &gt;=0; $i--) 
    { 
        if (isset($tempSrcArr[$sourceArr[$i][$parentKey]])) 
        { 
           $tArr = array_pop($tempSrcArr); 
           $tempSrcArr[$tArr[$parentKey]][$childrenKey] = (isset($tempSrcArr[$tArr[$parentKey]][$childrenKey]) &amp;&amp; is_array($tempSrcArr[$tArr[$parentKey]][$childrenKey])) ? $tempSrcArr[$tArr[$parentKey]][$childrenKey] : array(); 
           array_push ($tempSrcArr[$tArr[$parentKey]][$childrenKey], $tArr); 
        } 
    } 
    return $tempSrcArr; 

 

 
Php代码 
 
 * 将数组转换成树
 * 例子:将 array(
            array('id'=>1,'parentId' => 0,'name'=> 'name1')
            ,array('id'=>2,'parentId' => 0,'name'=> 'name2')
            ,array('id'=>4,'parentId' => 1,'name'=> 'name1_4')
            ,array('id'=>15,'parentId' => 1,'name'=> 'name1_5')
    );转换成
 * Array(
    [1] => Array([id] => 1
            [parentId] => 0
            [name] => name1
            [children] => Array(
                    [0] => Array([id] => 15,[parentId] => 1,[name] => name1_5)
                    [1] => Array([id] => 4,[parentId] => 1,[name] => name1_4)
                )
        )
    [2] => Array([id] => 2,[parentId] => 0,[name] => name2)
)
 * @param array $sourceArr 要转换的数组
 * @param string $key 数组中确认父子的key,例子中为“id”
 * @param string $parentKey 数组中父key,例子中为“parentId”
 * @param type $childrenKey 要在树节点上索引子节点的key,例子中为“children”
 * @return array 返回生成的树
 */ 

 代码如下 复制代码
function arrayToTree($sourceArr, $key, $parentKey, $childrenKey) 

    $tempSrcArr = array(); 
 
    $allRoot = TRUE; 
    foreach ($sourceArr as  $v) 
    { 
        $isLeaf = TRUE; 
        foreach ($sourceArr as $cv ) 
        { 
            if (($v[$key]) != $cv[$key]) 
            { 
                if ($v[$key] == $cv[$parentKey]) 
                { 
                    $isLeaf = FALSE; 
                } 
                if ($v[$parentKey] == $cv[$key]) 
                { 
                    $allRoot = FALSE; 
                } 
            } 
        } 
        if ($isLeaf) 
        { 
            $leafArr[$v[$key]] = $v; 
        } 
        $tempSrcArr[$v[$key]] = $v; 
    } 
    if ($allRoot) 
    { 
        return $tempSrcArr; 
    } 
    else 
    { 
        unset($v, $cv, $sourceArr, $isLeaf); 
        foreach ($leafArr as  $v) 
        { 
            if (isset($tempSrcArr[$v[$parentKey]])) 
            { 
                $tempSrcArr[$v[$parentKey]][$childrenKey] = (isset($tempSrcArr[$v[$parentKey]][$childrenKey]) && is_array($tempSrcArr[$v[$parentKey]][$childrenKey])) ? $tempSrcArr[$v[$parentKey]][$childrenKey] : array(); 
                array_push ($tempSrcArr[$v[$parentKey]][$childrenKey], $v); 
                unset($tempSrcArr[$v[$key]]); 
            } 
        } 
        unset($v); 
        return arrayToTree($tempSrcArr, $key, $parentKey, $childrenKey); 
    } 

 

 
 
Php代码 
/**递归方法:**/ 
 
$rows = array( 
    0 => array('id' => 1, 'name' => '菜单1', 'parentId' => 0) 
    , 1 => array('id' => 2, 'name' => '菜单2', 'parentId' => 0) 
    , 2 => array('id' => 3, 'name' => '菜单3', 'parentId' => 0) 
    , 3 => array('id' => 4, 'name' => '菜单1_1', 'parentId' => 1) 
    , 4 => array('id' => 5, 'name' => '菜单1_2', 'parentId' => 1) 
    , 5 => array('id' => 6, 'name' => '菜单2_1', 'parentId' => 2) 
); 
print_r(getTree($rows, 0, 'id', 'parentId')); 

 代码如下 复制代码
 
/**
 * 数组根据父id生成树
 * @staticvar int $depth 递归深度
 * @param array $data 数组数据
 * @param integer $pid 父id的值
 * @param string $key id在$data数组中的键值
 * @param string $chrildKey 要生成的子的键值
 * @param string $pKey 父id在$data数组中的键值
 * @param int $maxDepth 最大递归深度,防止无限递归
 * @return array 重组后的数组
 */ 
function getTree($data, $pid = 0, $key = 'id', $pKey = 'parentId', $childKey = 'child', $maxDepth = 0){ 
    static $depth = 0; 
    $depth++; 
    if (intval($maxDepth) <= 0) 
    { 
        $maxDepth = count($data) * count($data); 
    } 
    if ($depth > $maxDepth) 
    { 
        exit("error recursion:max recursion depth {$maxDepth}"); 
    } 
    $tree = array(); 
    foreach ($data as $rk => $rv) 
    { 
        if ($rv[$pKey] == $pid) 
        { 
            $rv[$childKey] = getTree($data, $rv[$key], $key, $pKey, $childKey, $maxDepth); 
            $tree[] = $rv; 
        } 
    } 
    return $tree; 

一个实例

 代码如下 复制代码

<!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=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>TREE</title>
<style type="text/css">
/*树的全局CSS*/
.kyp_tree{
font: 12px/2.5 verdana;
float:left;display:inline;
}
.kyp_tree dd{
margin:0;padding:0;
margin-left:20px;
}
/*链接*/
.kyp_tree dl a{
font-size:12px;
color:#333;
text-decoration:none;
}
.kyp_tree dl a:hover, .kyp_tree dd dt.red_sub a{
font-size:12px;
color:#AE0002;
}
/*一级dl*/
.kyp_tree dl{
border-bottom:1px dashed #ccc;
margin:0;padding:0;
}
/*次级dl*/
.kyp_tree dl dl, .kyp_tree dl.last{
border:none;
}
.kyp_tree dd dt.currentClass{
background:url(tree_top.gif) no-repeat 0 -24px;
}
/*一级标题*/
.kyp_tree dt{
background:url(tree_top.gif) no-repeat 2px -57px;
padding-left:15px;
cursor:pointer;
font-size:13px;
height:30px;
line-height :27px;
line-height :32px9;
}
/*子标题*/
.kyp_tree dd dt{
background:url(tree_arrow.gif) no-repeat 2px 10px;
font-size:12px;
}
/*一级张开样式*/
.kyp_tree dt.open{
background:url(tree_top.gif) no-repeat 2px 12px;
}
/*张开样式*/
.kyp_tree dd dt.open{
background:url(tree_arrow.gif) no-repeat 0 -25px;
}
/*没有子节点的样式*/
.kyp_tree dt.nosub{
background:none;
}
</style>
<script type="text/javascript">
//<![CDATA[
jQuery.fn.createTree = function (fn, ini){
var $ = jQuery, ini = Object(ini);
this.find('dd').hide();
this.children('dl:last').addClass('last');
this.find('dt', this).each(function (){
var nosub = $(this).next('dd').size() == 0;
if (nosub) {
$(this).addClass('nosub');
}
if (ini.id && ini.id == $(this).attr('classify')) {
$(this).parents('dd').show().prev('dt').addClass('open');
$(this).addClass('red_sub');
if (nosub) {
$(this).addClass('currentClass')
}else{
$(this).next('dd').show();
$(this).addClass('open')
}
}
}).click(function (e){
var dd = $(this).next('dd'),
isClose = dd.css('display') == 'none';
if (dd.size()) {
if (isClose) {
dd.show();
$(this).addClass('open')
}else{
dd.hide();
$(this).removeClass('open')
}
}
return fn && fn.call(this, e, dd)
});
if (ini.mx) {
this.find('dt').click(function (e){
var J = $(this);
if (J.next('dd').size()) {
if (J.hasClass('open')) {
J.parent().siblings('dl').children('dd').hide();
J.parent().siblings('dl').children('dt').removeClass('open');
J.next('dd').show();
J.addClass('open')
}
}
})
}
};
(function ($){
$(function (){
$('#tree_wrap').createTree(function (e, dd){//回调(事件, 下一个dd)
$('#show').html(this.innerHTML+dd.size())
}, {mx: 1, id: 200})// mx是否互斥, id 当前类别
});
})(jQuery)
//]]>
</script>
</head>
<body>

<?php

// 树组的顺序即是分类的顺序,因此前当分类的下级子类一定要紧随其后
$tree= array(
1 => array('id'=>1, 'cname'=>'一级分类', 'pid'=>0),

100 => array('id'=>100, 'cname'=>'特意加进去的二级分类', 'pid'=>1),
101 => array('id'=>101, 'cname'=>'特意加进去的二级分类2222222222', 'pid'=>1),

2 => array('id'=>2, 'cname'=>'二级分类', 'pid'=>1),
3 => array('id'=>3, 'cname'=>'三级分类', 'pid'=>2),
4 => array('id'=>4, 'cname'=>'四级分类', 'pid'=>3),
5 => array('id'=>5, 'cname'=>'四级分类2', 'pid'=>3),
200 => array('id'=>200, 'cname'=>'55555', 'pid'=>5),
6 => array('id'=>6, 'cname'=>'另一级分类', 'pid'=>0),
7 => array('id'=>7, 'cname'=>'First First First', 'pid'=>0),
8 => array('id'=>8, 'cname'=>'First First First', 'pid'=>7),
);

// 指定分类ID,返回子类量(不进行深度递归)
function getChildTotal($id)
{
global $tree;
$total = 0;
foreach($tree as $value)
{
if ($id == $value['pid'])
{
$total++;
}
}
return $total;
}

 

// 指定分类ID,www.111cn.net并返回数组(不进行深度递归)
function getChildArray($id)
{
global $tree;
$array = array();
foreach($tree as $key=>$value)
{
if ($id == $value['pid'])
{
$array[$key] = $value;
}
}
return $array;
}


// 递归查询方式将树数组转换成HTML嵌套树

function getTreeHTML($tree,$level = 0)
{
if ($tree)
{
$level += 1;
foreach($tree as $id => $node)
{
$html .= "<dl>";
$html .= '<dt classify="'.$node['id'].'"><a href="http://www.baidu.com/">'.$node['cname']."</a></dt>";
if (getChildTotal($node['id']))
{
$tree_last = getChildArray($node['id']);

$html .= '<dd>';
$html .= getTreeHTML($tree_last,$level);
$html .= '</dd>';

}
$html .= '</dl>';
}
}
return $html;
}

$html = getTreeHTML( getChildArray(0) );
echo '<div id="tree_wrap" class="kyp_tree">';
echo $html;
echo '</div><div id="show" style="clear:both;border-top:1px solid red"></div>';

?>
</body>
</html>

[!--infotagslink--]

相关文章

  • gin 获取post请求的json body操作

    这篇文章主要介绍了gin 获取post请求的json body操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-15
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • C#模拟http 发送post或get请求的简单实例

    下面小编就为大家带来一篇C#模拟http 发送post或get请求的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • JS双击变input框批量修改内容

    这篇文章主要介绍了JS双击变input框批量修改内容的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-01-09
  • vue:el-input输入时限制输入的类型操作

    这篇文章主要介绍了vue:el-input输入时限制输入的类型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • Angular利用HTTP POST下载流文件的步骤记录

    这篇文章主要给大家介绍了关于Angular利用HTTP POST下载流文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Angular具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-26
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • C#使用post发送和接收数据的方法

    这篇文章主要介绍了C#使用post发送和接收数据的方法,涉及C#使用post收发数据的相关技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • vue element table中自定义一些input的验证操作

    这篇文章主要介绍了vue element table中自定义一些input的验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-18
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标

    从IE 10开始,type=”text” 的 input 在用户输入内容后,会自动产生一个小叉叉(X),方便用户点击清除已经输入的文本,下面通过本文给大家介绍下如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标...2017-01-09