首页 > 编程技术 > php

php中include()带参考传递实例

发布时间:2016-11-25 17:39

include是php中的一个调用文件的函数,默认状态下是不可以直接像include(a.php?id=1)这样操作,下面我来介绍解决include不能带参数调用解决办法。

有时基于某些特殊需求,需要在PHP中使用include()方法调用项目中某个独立提供服务的文件,如果被调用文件使用GET方式传入数据,则需要用到一些小技巧。

举例:假设在 index.php 中需要调用 inc.php?para=3 ,

inc.php

 代码如下 复制代码

<?php     echo $_GET['para']; ?>

下面的写法是无法得到正确结果的:
index.php

 代码如下 复制代码


 <?php     include dirname(__FILE__).'/inc.php?para=3'; ?>

稍微变通一下,把$_GET变量在include之前定义,则可以正常运行:
index.php

 

 代码如下 复制代码
<?php    
$_GET['para'] = 3;    
include dirname(__FILE__).'/inc.php; ?>

如果php.ini中开启了allow_url_include功能,则可以使用include url的方式:
index.php

 代码如下 复制代码


<?php     include 'http://www.yoururl.com/inc.php?para=3'; ?>

设置方法:php.ini中,找到如下行,改为On:

 代码如下 复制代码

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = On

不过为了保证安全性,大部分的服务器都将allow_url_include 功能关闭,那样就只能视情况而定了。

如果使用的是独立的服务器,有权限修改配置文件,设置时区就可以通过修改php.ini中的date.timezone属性完成。我们可以将这个属性的值设置为\"Asia/Shang\"、\"Asia/Chongqing\"、\"Etc/GMT-8\"或PRC等中的一个

,再在PHP脚本中获取的当前时间就是北京时间。修改PHP的配置文件如下所示:
1.date.timezone = Etc/GMT-8
//在配置文件中设置默认时区为东8区(北京时间)


在需要的php程序里边加多一句:

 代码如下 复制代码

date_default_timezone_set(‘PRC’);

测试的话可以这样写写:

 代码如下 复制代码

<?php
date_default_timezone_set(‘PRC’);
?>

php无论是在windows下还是linux下安装,其默认安装配置的时区都是与中国相差8小时


也可以在服务器中打开php.ini文件,找到;date.timezone,去掉前面的分号,改成date.timezone=PRC(如果在php.ini里面找不到date.timezone,可以直接加一行date.timezone=PRC 亦可)。


在代码中设置时区

 代码如下 复制代码
date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”
date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”
在php中生成图片是需要用到一个GD库的,默认情况下phpStudy都是打开了,但到了phpStudy2013之后GD库就像php默认安装一个不再开启这个功能了,要用户需配置一下。

phpStudy2013 GD支持未开启 解决方法

phpStudyAdmin控制台 - 配置文件 - php.ini

查找“extension=php_gd2.dll”,去掉“extension=php_gd2.dll”前面的“;”,保存

phpStudyAdmin控制台 - Apache服务 - 重启

PHP中header和session_start前不能有输出的原因,下面分析给大家看看。

在http传输文本中,规定必须 header和content顺序必须是:header在前content在后,并且header的格式必须满足“keyword: valuen”这种格式。

1、在header输出之前有输出内容的话,就会造成对header的错误理解(尽管现在已经能容错了),例如不是满足“keyword: valuen”的格式还好,直接错误了,但是满足“keyword: valuen”这个格式以后,客户端是否安装错误理解,还是按照正确理解?

2、session开启是会隐含的触发是否用header(“Set-Cookie: sid=xxxxxx”),也就是其实还是一个隐式的header调用

 

PDO版本问题 Invalid parameter number: no parameters were bound 有碰到此类问题的朋友可参考参考。

  发现在客户的某个PHP版本下,执行某类操作的时候,总是会报如下错误 Invalid parameter number: no parameters were bound,经google,发现是php版本过低导致。

正文:

      今天在处理bug的时候发现某一个很奇怪的问题,在执行某类操作的时候会报:Invalid parameter number: no parameters were bound,但是该问题在本地或是测试机上测试都没有重现,猜想是否和版本有关,于是就google了下,发现http://forum.typecho.org/topic.php?id=1501 该文的二楼说道,该问题是版本的bug,在php5.2.9以下的pdo中会出现。于是就是找了团队中另外一位同时的机子(5.2.6)做测试,果然重现该问题,他的服务器上5.2.17上测试,该问题没有出现。

       在调试的时候,发现出现该类操作的时候有如下业务报以上错误:

       用PDO往表nw_log(表字段一些列uid之类的,及content字段)中插入一条数据,其中content字段的内容为<a href='http://a.xxx/?tid=1'>test</a>,并且在入库之前表字段的内容会调用PDO->quote方法进行转义。在php5.2.6机子上则报如上错误,但是在5.2.17机子上表现正常。

      当我仅仅只是将内容修改为http://a.xxx/?tid=1的时候,在5.2.6机子上和5.2.17机子上均表现正常,于是再次将内容格式调试为<a href=“http://a.xxx/?tid=1”>test</a>,则5.2.6及5.2.17上均表现正常,看来是单引号惹的祸。

 

标签:[!--infotagslink--]

您可能感兴趣的文章: