我正在使用extplorer(http://extplorer.sourceforge.net/),我遇到了一些问题。
这适用于PHP。
到目前为止我做了以下事情: 重写它以便不需要登录,而是检查我自己的CMS在登录时生成的$ _SESSION var以保护它。 已安装,并确认文件/文件夹dislpays适用于网站的常规根目录(DOCUMENT_ROOT)
我现在要做的是,每次将extplorer调用到iFrame中时,我希望它基于$ _GET var(例如,?idr = 35)打开另一个home_dir 。 但是由于一些奇怪的原因,我无法让它发挥作用。
我尝试了各种代码组合来实现这一点,当我print_r($ GLOBALS)时,我肯定会看到home_dir数组保存我确定的路径(应该像/ pages / 35 /文件夹那样我需要允许我的客户将小型微型网站上传到每个页面文件夹)。当AJAX模块调用文件列出目录等时,我已经在FIrebug下看到了错误。
$brixwork_pageid = $_GET['idr'];
$GLOBALS['home_dir'] = $_SERVER['DOCUMENT_ROOT'].'/pages/'.$brixwork_pageid.'/folder';
:没用。错误:
<br />
<b>Notice</b>: Undefined index: idr in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/init.php</b> on line <b>76</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/result.class.php</b> on line <b>100</b><br />
{'action':'','message':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'error':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'success':false}
所以我试过了:
$GLOBALS['home_dir'] = $_SERVER['DOCUMENT_ROOT'].'/pages/'.$_GET['idr'].'/folder';
:也没用。错误:
<br />
<b>Notice</b>: Undefined index: idr in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/init.php</b> on line <b>76</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/result.class.php</b> on line <b>100</b><br />
{'action':'','message':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'error':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'success':false}
然后我尝试了:
$GLOBALS['home_dir'] = $_SERVER['DOCUMENT_ROOT'].'/pages/'.$GLOBALS['__GET']['idr'].'/folder';
:既没有这样做。错误:
<br />
<b>Notice</b>: Undefined index: idr in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/init.php</b> on line <b>80</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/sonikas/public_html/picnetbc/admin/explorer/include/result.class.php</b> on line <b>100</b><br />
{'action':'','message':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'error':"The home directory doesn\\'t exist, check your settings. (\/home\/sonikas\/public_html\/picnetbc\/pages\/\/folder)",'success':false}
所以他们基本上或多或少都是一样的错误。但奇怪的是,如果我想测试这个模块,并吐出print_r($ GLOBALS),我会看到home_dir数组返回包括给定数字在内的所有内容,这意味着GET var确实会以某种方式进入。任何帮助,将不胜感激。
答案 0 :(得分:1)
好吧所以我想出来了 - 我打算写出来,以防万一其他人想要使用它,他们可以使用它。
问题是,由于这个文件浏览器模块(顺便说一句,这很棒)使用AJAX进行调用,初始PHP文件打开将获得$ _GET var,但是一旦它进行了AJAX调用,它将不会发送$ _GET vars!
因此,我没有修改javascript来尝试传递GET变量(这本来就是永远的,因为我甚至没有写过这个东西而且我不知道它在哪里),我使用了SESSION var方法。由于我的CMS使用SESSIONS无论如何都要登录,因此SESSION变量应该保存。在init.php文件中,我把这行代替上面的修补:
if($_REQUEST['explorer_idr']!='') {
// new request IDR is given - let's save this to a SESSION so that this opens each time on AJAX calls
$_SESSION['explorer_idr'] = $_REQUEST['explorer_idr'];
}
$GLOBALS['home_dir'] = $_SERVER['DOCUMENT_ROOT'].'/pages/'.$_SESSION['explorer_idr'].'/folder';
为了确保它不会与其他任何东西发生冲突,我将数组键设为“explorer_idr”。这样,如果提供了一个新的$ _REQUEST ['explorer_idr'],它会将$ _SESSION ['explorer_idr']覆盖到给定的值 - 如果没有,它就会运行先前设置的var,这样到AJAX的时候调用(顺便进行SESSION),即使没有再给出一个特定的$ _GET,它也会运行已保存的$ _SESSION ...如果提供$ _GET,则意味着用户切换到另一个页面,它只会再次重新加载$ _SESSION var以使其工作!