php中print_r、var_dump和var_export几个函数的用法区别 。php setcookie一些限制。php不同路径cookies取值问题。PHP获取站点根目录

php中print_r、var_dump和var_export几个函数的用法区别  

print_r ( $array/$var ) 
print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。 
print_r ($_REQUEST) ; 
print_r ($_GET) ; /* 打印使用GET方法传递的表单内容*/ 
print_r($_POST) ; /* 打印使用表单POST方法传递过的数组内容*/ 
2、 var_dump ($object/$array/$var) 
var 代表变量(Variable),变量包括对象、数组以及标量变量,dump有倒出之意,加在一块,就是将变量或对象的内容全部输出出来。 
var_dump($DB) ; /*打印$DB数据库连接对象的内容*/ 
var_dump($fileHandle) ; /*打印文件句柄对象的内容*/ 
var_dump($Smarty) ; /*打印Smarty模板对象*/ 
3、 var_export($object/$array/$var) 
输出或返回一个变量的字符表示。此函数返回关于传递给函数的变量的结构信息,它和print_r()类似,不同的是其返回的表示是合法的PHP代码。可以通过将函数的第二个参数设置为TRUE,从而返回变量的表示。 
看下面代码: 
<?php 
$a = array (1,2, array("a","b","c")) ; 
var_export ($a) ; 
echo "<br>" ; 
$v = var_export ($a , TRUE) ; 
echo $v ; 
?> 
上例中,$v = var_export ( $a , TRUE) 表示返回的是PHP的源代码,可以直接用PHP脚本的数组文件中。 
总结说明: 
以上三个函数都可以打印对象的值、系统函数值以及数组的内容; 
1、 echo 、print、printf可以打印变量内容,但不能显示数组及系统超级变量数组; 
2、 print_r 和 var_dump不仅可以打印数组、标量变量,还可以打印对象的内容; 
3、 var_dump语句不仅能打印变量、数组内容,还可以显示布尔变量和资源(Resource)的内容; 
4、var_export 函数返回关于传递给该函数的变量的结构信息,和 var_dump()函数类似,不同的是其返回的内容是合法的PHP代码。

===================================================================

php setcookie一些限制  

1、使用setcookie必须在<html>标签之前 
2、使用setcookie之前,不可以使用echo输入内容 
3、直到网页被加载完后,cookie才会出现 
4、setcookie必须放到任何资料输出浏览器前,才送出 
..... 
由于上面的限制,在使用setcookie()函数时,学会遇到 "Undefined index"、"Cannot modify header information - headers already sent by"…等问题,解决办法是在输出内容之前,产生cookie,可以在程序的最上方加入函数 ob_start(); 
ob_start :打开输出缓冲区 
函数格式:void ob_start(void) 
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

===========================================================================

php不同路径cookies取值问题

setcookie (cookie名, cookie值, 有效期, cookie路径, 所在域 )

注意第四个参数,cookie路径,如果我们设置成 '/' 那么就对整个网站都有效。
 
使setcookie 必须同路径才行a.php-》setcookie b.php必须a.php b.php同目录同级才能使用

=============================================================================

PHP获取站点根目录 

将下面的代码放在网站根目录下的一个文件中,以便在其它文件中引用。

路径方式:

define('BASE_PATH',str_replace('\\','/',realpath(dirname(__FILE__).'/'))."/");

echo BASE_PATH;

 

输出结果:E:/wwwroot/

url方式:

 

$PHP_SELF=$_SERVER['PHP_SELF'];

$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);

echo $url;

 

输出结果:http://localhost/


 

其它的资料整理:


 

PHP取得站点根目录

 

echo $_SERVER['HTTP_HOST'];//当前请求的 Host: 头部的内容 即域名信信息

echo $_SERVER['PHP_SELF'];//当前正在执行脚本的文件相对网站根目录地址,就算该文件被其他文件引用也可以正确得到地址

 

echo $_SERVER['SCRIPT_NAME'];//当前正在执行脚本的文件相对网站根目录地址,但当该文件被其他文件引用时,只显示引用文件的相对地址,不显示该被引用脚本的相对地址。

 

echo $_SERVER['DOCUMENT_ROOT'];//网站相对服务器地址即网站的绝对路径名 #当前运行脚本所在的文档根目录。在服务器配置文件中定义

 

echo $_SERVER['SCRIPT_FILENAME'];//当前执行脚本的绝对路径名。

 

方法一:

 

今天讲了大致的站点目录结构,其中说到了怎样取得站点根目录,好多同学不是很理解,下面一步一步道来:

 

我的站点目录据对路径:D:\www\message2011,测试文件路径:D:\www\message2011\include\config.inc.php

 

在根目录下新建一个文件,也可以隔一层目录创建,就以上面为例,我要在config.inc.php中取得站点的根目录。

 

1、取得当前文件的路径:用魔术常量__FILE__。这里的路径包含了文件名,结果如下:

 

D:\www\message2011\include\config.inc.php

 

2、去掉上面路径的文件名,得到纯路径:dirname(__FILE__),结果如下:

 

D:\www\message2011\include

 

3、返回一层目录到根目录:realpath(dirname(__FILE__).'/../'),结果如下:

 

D:\www\message2011

 

4、把向左的”\“转化成向右的”/“:str_replace( '\\' , '/' , realpath(dirname(__FILE__).'/../')),结果如下:

 

D:/www/message2011

 

到这就是我们想要的站点根目录了,可以根据需求设定第三步返回目录层数,比如:返回2层就是 /../../,那么就会得到 D:\www\,以此类推。

 

方法二:

 

在global.inc   里定义根目录

 

define("APP_ROOT",dirname(__FILE__));

 

在任何PHP文件中可以引用该常量

 

require_once(APP_ROOT."/inc/head.php");

 

 

方法三:

 

<?php

 

$PHP_SELF=$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

 

$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF, '/')+1);

 

echo $url;

 

方法四:

 

$basepath=$_SERVER['PHP_SELF'];

 

$basepath=substr($basepath,0,strpos($basepath,"文件夹名称"));

 

echo $basepath;

 

如:你把文件保存为a.php并路径为:/wjj/wjj1/wjj2/a.php

 

上面的例子就写成:

 

$basepath=$_SERVER['PHP_SELF'];

 

$basepath=substr($basepath,0,strpos($basepath,"wjj1"));

 

echo $basepath;

 

方法五:

 

$basepath=$_SERVER['PHP_SELF'];

 

preg_match("/(\/)?([^\/]+)/",$basepath,$wjm);

 

echo $wjm[0];

 

注意,第二种方法我不太会,如文件路径为:/wjj/wjj1/wjj2/a.php,它只返回 /wjj 后面的/自己加!

 

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值