phpinclude文件
㈠ php里面的include是什么意思连接数据库的时候才用吗后面括号里面的以.php为结尾的文件
$usernc是获取到的用户输入信息($_POST['usernc']),trim()去除字符串首尾的无意义的字符(空格、制表符(就是键盘上的Tab键)、换行符" "(unix及类unix系统的换行符)、回车符" "(又称软换行符,Mac OS X的换行符))。(另外说一下,windows的换行符是" ",也支持" ",但不支持单独的" ")
另外,少用双引号,单引号更快。
双引号支持在字符串中嵌入变量,也支持更多的字符转义("
","
"之类的必须用双引号)。
例如:
<?php
$b='b';
$str="a{$b}c";//相当于$str='a'.$b.'c';但双引号更慢
?>
单引号仅支持很少的转义序列。事实上,它只支持
'''//这是一个单引号字符,相当于"'"
和
'\'//这是一个反斜线
不过,单引号的速度要快得多。
include可以引入一个PHP文件或HTML文件。
如果引入php文件,那么php会先执行被include的文件中的代码,再执行后面的代码。
如果引入html文件,那么php会直接输出这个文件。
在本例中,连接数据库的代码被放在了conn文件夹下的conn.php中。
所以,在这里包含此文件,就可以连接到数据库。
参见PHP手册:include 和 include_once:
http://php.net/manual/zh/function.include.php
http://php.net/manual/zh/function.include-once.php
举个例子:
inc.php
<?php
echo'a';
?>
b.php
<?php
echo'm';
//include允许相对路径与绝对路径,这里是相对路径
//PHP手册推荐在使用include和require时不使用括号
//因为它们是语法结构(就像if,echo之类的),而不是函数
include'inc.php';
echo'n';
?>
你运行b.php,将会输出:
man
加不加_once都可以,不过建议你不要加,这样运行起来会很慢(慢了好几倍)。
include_once主要是为了防止某些函数被重复定义(多次包含)而报错。
这应该用合理的代码规划来避免,而不是使用_once后缀。
虽然性能问题在小程序中不会得到太大体现,但是在一些复杂的项目中,差劲的代码导致的性能问题一定会让你抓狂。
你结合microtime()函数来测试一下,就可以看出来了。
代码如下:
<?php
//获取代码运行的时间
$t=microtime(TRUE);
//这里放上你要测试的代码
//输出运行时间,代码以毫秒为单位
//直接echo很可能会输出为科学计数法,看起来不直观
printf('%f',microtime(TRUE)-$t);
unset($t);//变量用完就注销是个好习惯
?>
另外,如果文件不存在,include会产生警告。
还有一个函数require,与include类似,不过如果文件不存在会产生错误。require比include快一些,因为include有返回值,而require没有。同样,最好不要使用require_once。
参见PHP手册:require 和 require_once:
http://php.net/manual/zh/function.require.php
http://php.net/manual/zh/function.require-once.php
另外,我建议您不要再看这本书了,这本书的代码就好像是一个初学者写的一样,根本不符合规范,而且会有很大的性能问题。
例如:
(1)数组键名没有加上引号。php会首先查找是否存在以这个键名为名称的常量。如果存在,这段代码就很可能会出问题。如果不存在,php没有办法,只能返回这个字符串。在这查找的过程中,就会造成相当大的性能损失。
(2)大量使用双引号,而且还没有正确利用双引号的特性。
(3)没有过滤用户输入,存在sql注入漏洞。应该把单引号转义。
应该改为:
//适用于大多数数据库,不适用于Sybase
$usernc=addslashes(trim($_POST['usernc']));
//或者
$usernc=mysql_real_escape_string(trim($_POST['usernc']));//仅适用于MySQL
(4)既然有了$_POST['usernc'],为什么还要再用$usernc呢?难道就为了少输几个字符?浪费服务器内存资源。服务器内存资源是非常宝贵的,不应该这样浪费。每执行一次PHP程序都会创建一个新的操作系统线程,并分配2MB的配套内存。使用不当,可能会造成内存泄露(Out of Memory)!如果是在大型网站上,更应注意此类问题。
(5)既然只是判断一条数据是否存在(用户名是否存在),就应该在SQL语句的末尾加上
LIMIT1
否则,会严重影响MySQL性能。不加的话,MySQL找到一条数据后,还会继续查找符合条件的数据(即使并不存在)。如果这个数据表的数据量非常大,那浪费的时间是相当恐怖的!
而加上后,MySQL 搜索到一条数据后就会停止,不会浪费时间。
(6)依赖JavaScript中的history.back()是不对的。如果用户没有保存历史记录(一些浏览器有无痕浏览模式,例如Firefox,Chrome等),或者用户刚好将历史记录清除了,这条语句就会失效。最好的办法是新建一个session变量,例如$_SESSION['history'],将历史记录保存在里面就可以了。再说本例中,程序是应该知道应该跳转到哪个页面的(不是有getuserinfo.php吗?)。
应该直接302重定向。可以使用下面的代码:
//把“网址”替换为相应的URL就行了
//注意:是从http://一直到URL最后
header('Location:网址');
注意,这之前不能有输出。或者,在程序最开始的php文件上方加上:
ob_start();
这样就可以了。
以上这些问题都是应该避免的。
㈡ PHP里include的文件能跟参数吗
php的include可以载入一个外部php文件,其参数是一个文件名,既然是文件名,就不能带参数了。
例如:
include "http://localhost/aaa.php?id=1";//正确
include "aaa.php?id=1";//错误
其实include本义就只是用来载入一个外部文件到当前文件中来的,并不解释其中的代码。因此带参数看上去似乎没有意义。
㈢ php里面require和include的区别
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
1. include有返回值,而require没有。
2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。
3. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。
这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。
4. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。
5. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
6. include一般是放在流程控制的处理部分中PHP程序网页在读到include的文件时,才将它读进来。这种方式可以把程序执行时的流程简单化。
㈣ 一个PHP文件能多次使用include包涵其他PHP文件吗
可以包含多次,需要注意的是当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。
另外include是一个特殊的语言结构,其参数不需要括号。在比较其返回值时要注意
如果在包含文件中定义有函数,这些函数不管是在 return 之前还是之后定义的,都可以独立在主文件中使用。如果文件被包含两次,PHP 5 发出致命错误因为函数已经被定义,但是 PHP 4 不会对在 return 之后定义的函数报错。推荐使用 include_once 而不是检查文件是否已包含并在包含文件中有条件返回。
说明:
include语句包含并运行指定文件。
㈤ php include引入文件问题
include函数是引入文件
命名空间解决的是同一脚本下相同函数重名,不同的命名空间命名,相当于处于不同的模块,解决同一脚本下php函数重名的致命错误
1. 你之前include引入的时候你的2个文件的相同函数处于不同命名空间下,就算在同一脚本也不会报错
2. 看你最后段代码,你连续定义了2个命名空间,第1个就没用了,相当于你在namespace Foo\Bar\subnamespace;命名空间下写了之后的代码,但是之后的代码处于namespace Foo\Bar\subnamespace;下但是出现了2个相同名的函数,自然报错
3. 你要区分命名空间和include就要先懂得他们代表的意思,从你的问题可以看出你不太懂命名空间,建议你网络或者看下php手册上的命名空间,自己捉摸比别人教理解得更加深刻
4. 建议你把namespace Foo\Bar\subnamespace;写到const FOO = 2;上面
㈥ 浅谈php中include文件变量作用域
本文给大家总结了php中include文件时的几种情况下的作用域,十分的简单实用,希望对大家熟悉include的使用能够有所帮助。
在php中我们有时候需要include一个文件。比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件就可以,但是这只是我的意淫而已。
写完后发现在模板中所有的变量都提示未定义。通过各种研究和查找资料,总结了include文件时的几种情况下的作用域。
第一种情况:A文件include
B文件,在B文件中可以调用A中的变量。
A文件代码:
1
2
3
4
?php
$aaa
=
'123';
include
B.php;
B文件代码:
1
2
3
?php
echo
$aaa;
可以正常输出内容。
第二种情况:A文件include
B文件,然后在A文件中可以调用B文件的变量。
A文件代码:
1
2
3
4
5
?php
include
B.php;
echo
$fff;
B文件代码:
1
2
3
?php
$fff
=
'i
am
f';
这个时候是可以正常输出内容的。
第三种情况:A文件的某个类的某个方法中调用B文件,然后在B文件中可以调用该方法中的变量。
A文件代码:
1
2
3
4
5
6
7
8
9
10
11
?php
class
test{
public
function
show(){
$bbb
=
'abc';
include
B.php;
}
}
$t
=
new
test;
$t-show();
B文件的代码:
1
2
3
?php
echo
$bbb;
这个时候是可以正常输出内容的。
第四种情况:A文件通过定义的一个函数引入B文件,在B文件中无法使用A中的变量,但是可以使用A文件中调用函数(display)中的变量。
A文件代码:
1
2
3
4
5
6
7
8
9
?php
$aaa
=
'123';
function
display($file){
$bbb=
'asdasdas';
include
$file;
}
display(B.php);
B文件代码:
1
2
3
?php
echo
$aaa;
echo
$bbb;
运行后$aaa提示未定义,$bbb可以正常输出。
所以我开始准本用一个display方法来引入模板是不可行的。根据方面的三种情况,最后我选择了写一个类来导入模板文件。目前ThinkPHP和Smarty也都是用类来引入模板文件的。文中不足之处欢迎指正。
以上所述就是本文的全部内容了,希望大家能够喜欢。