调用PHP脚本来获取图像URL

时间:2011-04-24 03:46:24

标签: php javascript ajax

我的路径是这样的

/网站/ PHP的
/网站/ JavaScript的
/website/photographer/index.html
/网站/摄影师/照片

我有一个javascript,显示文件夹中照片的照片库。使用带有jquery的ajax,它调用一个PHP文件,在“照片”中返回图像URL,以便javascript可以设置图库等。

问题是我似乎无法让PHP访问“photos”文件夹。看,我有一堆不同的摄影师页面做同样的事情,所以我试图有一个PHP文件和一个javascript文件,但不同的目录。

我设计的方法是在ajax get调用中发送“window.location.pathname”,以便php可以获取当前页面所在的目录,然后只需搜索该目录中的“photos”文件夹。

chdir($_GET["currentPath"] . "photos"); //change the directory so we just get the file names
echo json_encode(glob("*.jpg"));

我收到此错误: 警告:chdir()[function.chdir]:第4行的/hermes/bosweb/web054/b541/ipg.danielechevarriacom/testing/oneonethousand_test/php/images.php中没有这样的文件或目录(错误号2) []

当我

echo $_GET["currentPath"] . "photos";

它打印:“/ testing / oneonethousand_test / steele / photos”

这是照片所在的正确目录,所以我不知道为什么这不起作用。我假设这与chdir如何工作有关。

我不想做chdir(“../ steele / photos”),因为我会有很多目录,我希望PHP文件保持通用。我只是想能够让javascript告诉php目前的目录是什么,然后PHP切换到该目录。为什么这不起作用?

感谢。

4 个答案:

答案 0 :(得分:0)

首先,永远不要相信$ _GET / $ _ POST / etc中的变量。使用您的脚本,我可能会在服务器上的任何目录中列出文件(包括非网络可访问的目录),而不仅仅是您想要的目录。

它不起作用,因为$ _GET [“currentPath”]中的路径是URL,而不是文件夹名称:它设置为“http://danielechevarria.com/testing/oneonethousand_test/steele/”而不是“斯蒂尔”。

将JavaScript发送的变量更改为顶级路径(例如“steele”),并考虑将脚本更改为:

//Validate the path somehow, in this case, reject anything that's not alphanumeric
if(!preg_match("/^\w+$/", $_GET["currentPath"])) die("{'error':'Invalid path'}");
chdir("../" . $_GET["currentPath"] . "/photos");
echo json_encode(glob("*.jpg"));

答案 1 :(得分:0)

chdir需要文件系统路径,而不是http路径。

根据echo命令的输出,看起来它将整个http url(“http://danielechevarria.com/testing/oneonethousand_test/steele/photos”)传递给chdir函数。

答案 2 :(得分:0)

我相信chdir只适用于本地路径,而不适用于Web路径。所以,为了" chdir"到photos目录,你需要FULL系统路径。

即。 / home / user / public_html / photos或C:\ www \ photos

http://us2.php.net/chdir

以下是我的意见:不知道你为什么使用ajax和javascript来提取图片和构建图库。为什么不使用PHP来生成图库? Javascript过于复杂了。

答案 3 :(得分:0)

你可以在php中使用curl来调用 (“http://danielechevarria.com/testing/ oneonethousand_test / steele / photos”)