一、描述
intval函数有个特性:”直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换”,在某些应用程序里由于对intval函数这个特性认识不够,错误的使用导致绕过一些安全判断导致安全漏洞.
二、分析
PHP_FUNCTION(intval)
{
zval **num, **arg_base;
int base;
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。更让人高兴的是,PHP也支持 cURL 库。本文将介绍PHP中如何运用它。
基本结构
先来看一下在PHP中建立cURL请求的基本步骤:
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, “http://www.nettuts.com”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
开发一个PHP程序,不可避免的要使用到全局数据.
全局变量便是其中之一,当然这个观点颇具争议,有许多人还是建议禁用全局变量,使用不当对造成程序的可读性很差!结构混乱,调试更是一头雾水,但是不可否认他的便捷,这便是php为什么会用全局变量global原因吧!…
今天就遇到了php 全局变量不起作用的问题.
先上一段简单的代码:
<?php
$a = 0 ;
function Test()
{
$a =1;
}
Test();
echo $a;
?>
上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下
<?php
$a = 0 ;
function Test()
{
global $a;//申明函数体Test内使用的$a变量为global全局变量
$a =1;
}
Test();
echo $a;
?>
PHP的预定义变量$_SERVER是一个包含头部(headers),路径信息及脚本位置的数组,数组的实体由web服务器创建.
利用$_SERVER数组,我们可以获取URL完整路径及真实路径,让自己随心所欲的运用它们.
$_SERVER['SERVER_NAME'] // 当前运行脚本所在服务器主机的名称.
$_SERVER[SERVER_PORT'] //用户连接到服务器时所使用的端口.
$_SERVER['REQUEST_URI'] //当前运行脚本除主机名外的请求URL.
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录.
举例 URL : http://www.cndong.cn/Test/Test.php
$_SERVER['SERVER_NAME']: www.cndong.cn
$_SERVER['SERVER_PORT'] : 80
$_SERVER['REQUEST_URI'] : /Test/Test.php
$_SERVER['DOCUMENT_ROOT'] : /home/var/www/cndong.cn/htdocs
今天想得到客户端访客IP…google了一下,分享:
例如测试向东而立IP地址为: 222.190.127.26
<?php
function GetIP() {
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
else if (getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknown";
return $ip;
}
echo GetIP();
?>