php 提交表单跳转页面到的php页面中为什么无法用require

来源:互联网 发表时间: 13:17:04 责任编辑:王亮字体:
为了帮助网友解决“php中require_once包含某个php文件,现在只想要页面中js处理后的数据,怎么包含之后不显示页面呢?”相关的问题,学网通过互联网对“php中require_once包含某个php文件,现在只想要页面中js处理后的数据,怎么包含之后不显示页面呢?”相关的解决方案进行了整理,用户详细问题包括:phpphp中require_once包含某个php文件,现在只想要页面中js处理后的数据,怎么包含之后不显示页面呢?,具体解决方案如下:解决方案1:不明白你的意思解决方案2:引用&1&楼&xuzuning&的回复:不明白你的意思就是现在我给某个页面传递参数后function&printOrderStatu($price){ini_set('date.timezone','Asia/Shanghai');&&&&//&require_once("/var/www/html/ThinkPHP/Library/Vendor/WxpayAPI/example/native.php");&&&&include&("/var/www/html/ThinkPHP/Library/Vendor/WxpayAPI/example/native.php");&&&}function&callPrintOrderStatu($price){$this-&printOrderStatu($price);}因为里面有html的内容,我现在不想让页面html部分显示学网
解决方案3:你的那些&html&是引入文件产生的?那不引入就是了解决方案4:引用&3&楼&xuzuning&的回复:你的那些&html&是引入文件产生的?那不引入就是了版主大大,主要是现在做扫码支付模式二,把价格传递到native页面后想获取用户是否支付成功,现在我把支付成功的状态写在了native.php文件的js中,想把这个文件包含之后就是需要哪个session里面的状态,但现在require之后,接口数据里面就有了html文件,想问一下版主大大有木有什么好的办法获取这个支付成功状态的办法木有???感谢了解决方案5:概念没搞清楚吧,JS不是在服务端执行的。
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
<a href="/cse/search?q=<inputclass="s-btn"type="submit"text="<inputclass="s-btn"type="submit"text="<buttonhidefocusclass="s-btnjs-ask-btn"text="我要提问
<a href="/cse/search?q=php require_once用法与相对目录要谨慎-常见问题-Php教程-壹聚教程网php require_once用法与相对目录要谨慎
文章介绍了大家在 php开发中会常常碰到的一个关于require_once用法,有需要的朋友可参考一下。
wwwroot&& //网站根目录 绝对路径为: F:/wwwroot
-- folder_a // 文件夹A
&& file_a_a.php
&& file_a_b.php
&& file_a_c.php
-- folder_b // 文件夹B
&& file_b_a.php
&& file_b_b.php
&& file_b_c.php
-- index.php
*************************************************************
这个目录层次已经很清楚了:
wwwroot为根目录,下面有index.php文件和folder_a,folder_b两个文件夹
这两个文件夹分别有3个php文件
先来看index.php文件的内容:
&&&& require_once(&folder_a/file_a_a.php&);
&&&& echo &文件folder_a_a.php被包含成功&;
再来看folder_a/folder_a_a.php文件的内容:
&&&& require_once(&../folder_b/file_b_a.php&);
&&&& $x = new X();
&&&& $x.printInfo();
最后再来看看folder_b/folder_b_a.php文件的内容:
&&&& class X{
&&&&&&&&& function printInfo(){
&&&&&&&&&&&&&& echo '
&&&&&&&&& }
ok 如果我现在直接运行 floder_a/file_a_a.php
那么会输出: success
如果我运行 wwwroot下的index.php
那么会报错,原因是找不到包含文件:file_b_a.php
但是如果我在所有的require_once()中加入 dirname(__FILE__).'/'
那么无论运行 file_a_a.php 还是 index.php 都可以正常输出
*********************************************************
我第一次使用的是相对路径,所以重复包含的时候就出错了
而我第二次使用的是绝对路径,所以不出错.可是我还是有点疑惑:
我先分析了以下使用相对路径会出错的原因:
我运行index.php,它能找到 folder_a目录,也能找到该目录下的file_a_a.php,于是它就把 folder_a/file_a_a.php 里的内容复制到了index.php 的第一行(包含语句的那行),然后再继续运行(也就是运行包含过来的内容),因此此时等于是在index.php中运行 file_a_a.php 中的require_once('../folder_b/file_b_a.php'); 它根据当前index.php的位置去找这个路径文件(file_b_a.php),当然找不到啦,所以它出错了.
可是我使用绝对路径的时候不是一样的道理吗?可为什么它就不出错?可能这句话大家有点不解了,我来详细说明(根据程序的运行顺序来说明).
程序先运行 index.php(注意此时我加上了 dirname(__FILE__),所以当前是绝对路径),
index.php先运行第一句代码:require_once(dirname(__FILE__).'/'.'folder_a/file_a_a.php');
dirname(__FILE__) 就是 f:/wwwroot/ 所以这句代码包含的路径也就是:
f:/wwwroot/folder_a/file_a_a.php
这个路径是正确的,因此没问题是吧
ok 第一步正确完成
然后它就把 file_a_a.php 中的代码复制到的 index.php 的这个地方:
然后仍然继续运行: 这是也就是在index.php 中运行file_a_a.php 中的所有代码,那么我们来看看它运行那些代码?
&&&& require_once(dirname(__FILE__).'/'.&../folder_b/file_b_a.php&);
&&&& $x = new X();
&&&& $x.printInfo();
对就是这些,需要注意的是,这些代码已经被复制到了index.php,也就是说,现在index.php的内容实际上就变成了:
&&&& require_once(dirname(__FILE__).'/'.&../folder_b/file_b_a.php&);
&&&& $x = new X();
&&&& $x.printInfo();
&&&& echo &文件folder_a_a.php被包含成功&;
我们来看个注意事项
假设有如下三个文件, c.php a.php b.php 对应的存放目录为:localhost/ localhost/ localhost/demo
require_once(&a.php&);
require_once(&demo/b.php&);
B::demo();a.php
b.php的内容比较有意思,因为它自己要继承 CLASS A 所以自己把a.php也引入进去了
require_once(&../a.php&);
class B extends A
&&& public static function demo()
&&& echo &xx&;
执行localhost/c.php 系统报错,报错信息如下
Warning: require_once(../a.php) [function.require-once]: failed to open stream: No such file or directory in F:wwwdemob.php on line 2
Fatal error: require_once() [function.require]: Failed opening required '../a.php' (include_path='.;C:php5pear') in F:wwwdemob.php on line 2但是,惊奇的发现,如果去掉b.php里面的require_once语句,执行正常,那么一定是require_once语句定义多了吗?原因就是Class A重定义了两次?可是不会啊。如果我只在c.php里面加require_once(&a.php&);这条语句,哪怕我写两遍也是没错的,那到底是咋回事呢?
原因就是,b.php定义的目录和c.php执行文件的目录层级不一致,导致在c.php里面require_once语句有两条。使其相当于
require_once(&a.php&);
require_once(&../a.php&);
class B extends A
&&& public static function demo()
&&& echo &xx&;
B::demo();
原因找到了,因为在c.php里面,其相对目录 &..&就是 c.php的上一层了,导致文件找不到报错。
所以,我们的结论是,在 PHP 里面,使用require_once的时候,存在不同层级关系,且有相对目录的使用那么一定要谨慎,小心。
require_once很简单用但在使用时大家尽量使用绝对路径了。
上一页: &&&&&下一页:相关内容php中include,include_once和require,require_once的用法区别
除了怎样处理失败之外在各方面都完全一样。include()
产生一个警告而
则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就别犹豫了,用
吧。include()
就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。
就是说再解析程序时即读取require的文件,而不是解析后,
如果不能读取到被require的文件,就不能进行下一步动作。
所以,不被正确包含就会导致程序的文件,用require比较好。
可能效率上也略微高点。
无论如何都会包含文件,而
可以有选择地包含:
if(FALSE){
require(&#8216;x.php&#8217;);
if(FALSE){
include(&#8216;s.php&#8217;);
一定会被包含,而
一定不会被包含。
二种方式提供不同的使用弹性。
require 的使用方法如 require(&#8220;MyRequireFile.php&#8221;); 。这个函式通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的一部份。常用的函式,亦可以这个方法将它引入网页中。
include 使用方法如 include(&#8220;MyIncludeFile.php&#8221;); 。这个函式一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。require_once()函数的作用和 require() 是几乎相同的
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。include_once()函数的作用和 include() 是几乎相同的
require_once的作用是会检查之前是否加载过该文件
如果没有加载则加载 如果加载过就不再次加载
比如某文件定义了一个类型 如果两次加载该文件会出现错误
require_once会避免这个错误,include_once() 之于include的区别与require_once之于require的区别几乎一样!
~~~~~~~~~~~~~~~~
当我们经常访问一个数据库时,可以把连库语句写成一个文件
con_db.php3
mysql_connect(&#8216;localhost&#8217;,&#8221;,&#8221;);
mysql_select_db(&#8216;admreqs&#8217;);
在实际应用时,我们可以在程序中调用这个文件。
如require(&#8220;con_db.php3&#8221;)或include(&#8220;con_db.php3)
这时,两个函数的效果是差不多的。
但如果这样用
filename.php3
require(&#8220;con_db.php3&#8221;)
function myfun($par1,$par2)
{包含对数据库处理的语句}
5. &#8230;..
myfun($par1,$par2);
7. &#8230;..
myfun($p1,$p2);
文件到myfun处将不能继续执行,因为函数里无法得到外面的变量(include也是一样的)。除非把$dbh作为一个变量传给函数。这又增加了调用函数的复杂度。
我们可以通过把require或include放在函数里面来解决这个问题。
如果用include,文件的第一个函数调用处将顺利通过,但第二个调用将无法执行,原因是不能在没有关闭数据库时在打开一次,也就是说,con_db.php3执行了两次。将include换成require,一切都正常。
也就是说,require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。
因此,如果在一个循环中,某些语句你只想执行一次,那你用require包括它们就可以了。
姓名:赵荣涛
生日:1984年
住址:山东济南
工作:山东大众海蓝信息科技有限公司
职位:技术总监
地址:济南历下区中润世纪锋3号楼
时间:2015.12——至今
工作:大众网-山东省互联网传媒集团
职位:技术经理/架构师
地址:济南泺源大街大众传媒大厦
时间:2006.7——2015.12关于PHP中require的有关问题_PHP教程_ThinkSAAS
关于PHP中require的有关问题
关于PHP中require的有关问题
内容来源: 网络
关于PHP中require的问题1.使用PHP中require如何包含一个文件夹中的所有文件?
require("./folder/*")是不行的,难道PHP中不能像Java中的include一样灵活方便吗?
不能正则识别名称吗?模式识别?
2。不用require同一个类两次?
file name: A_Dao.class.php
function: contain basic operations of A.class
A_Dao.class.php
require("DBConnection.class.php");
another file: B_Dao.class.php
function: contain basic operations of B.class
B_Dao.class.php
require("DBConnection.class.php");
A and B.class are entities as abstracted from conceptions.
ServiceA.class.php
require("./dao/A_Dao.class.php");
require("./dao/B_dao.class.php");
run ServiceA.class.php
"Fatal error: Cannot redeclare class DBConnection in C:Program FilesApache Software FoundationApache2.2htdocsapplicationdaoDBConnection.class.php on line 3"
What&s wrong?
为什么不能重复require相同的(DBConnection.class.php)?
编译器不会总动处理吗(像Java一样)?
------解决方案--------------------为什么要require(*)呢?
require会把目标文件全部插入当前文件。如果允许了*,目录下所有文件都会被插入进来,这样,文件会超级大。
第二个问题:
require_once
C/C++都有不允许重复include同一个文件。------解决方案--------------------php的include和c语言是差不多的,每次执行页面都会include一次,
如果支持这个,我想,会严重影响效率
不像java的import java.io.*;编译后,只导入用得到库,不影响.class大小------解决方案--------------------require("./folder/*")会加重服务器的负担,因为载如了所有folder下面的文件,Web服务器每次接收请求都这么干的话,服务器是承受不了的。
php只允许包含一次,你可以使用require_once来避免重复require.------解决方案--------------------你可以用Autoload------解决方案--------------------require_once()------解决方案--------------------1. 相比较而言,Java 可以说是“符号级”的包含,而 PHP 中,无论 include/include_once/require/require_once,都是“文件级”的包含,所以,PHP 不支持通配符也是可以理解的。如果你一定想要“包含一个文件夹下所有程序文件”的效果,可以用 scandir() 或者类似的办法做遍历来包含,也不复杂。只要是“需要的”,无所谓效率不效率。
2. 用 require_once 就好了。1 楼、3 楼兄弟说的都有不准确的地方。PHP/C/C++ 都允许包含多次。PHP 重复包含时经常会报错,只是因为 function 和 class 不能“重复定义”而已。
————————————————————————————————
[img=/bbs/m/i/red_1.gif]勋章[/img][img=/bbs/m/i/yellow_1.gif]勋章[/img][img=/bbs/m/i/blue_1.gif]勋章[/img]勋章啊……我啥时候也能得到这些……
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信

我要回帖

更多关于 php 提交多个页面 的文章

 

随机推荐