我正在尝试刷新 PHP 变量
I'm trying to make a PHP variable refresh
所以我正在为客户制作一个网站,客户有大量他们在 80 年代和 90 年代拍摄的不同乐队的照片,他们想尝试出售。
我没有像以前的网站那样为每个乐队(超过 100 个(制作一个页面,而是尝试制作一个页面,使用 Javascript/PHP 在单击该乐队的文本时将图像目录更改为该频段。
到目前为止,我可以使用PHP函数在幻灯片文件夹中查找照片,但是我一直无法更新此功能以搜索幻灯片文件夹中的子目录。(例如,当单击"Metallica"时,我清空 #imageGal,然后我想将所有新的metallica图像从metallica文件夹附加到图库中(。
我的PHP代码是:
<?php
$imagesDir = '';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
echo json_encode($images);
?>
这个PHP代码似乎很好用。
我使用此 JQuery 代码获取图像:
$('#imageGal').empty();
$.ajax({
url: "slideshow/getimages.php",
dataType: 'json',
success: function(json){
for(var i=0;i<json.length;i++){
$('#imageGal').append('<img src="slideshow/' + json[i] + '">');
}
}, failure: function(json){
alert('Something went wrong. Please try again.');
}
});
当用户单击乐队(即金属乐队(时,将执行此代码。
$('.options').mousedown(function() {
var name = $(this).attr('id');
//$('#output').html(name);
$.ajax({
type: "POST",
url: "slideshow/getimages.php",
data: {
imageDir: name
}, success: function(msg){
alert( "Data Saved: " + msg );
}
});
$('#imageGal').empty();
$.ajax({
url: "slideshow/getimages.php",
dataType: 'json',
success: function(json){
for(var i=0;i<json.length;i++){
$('#imageGal').append('<img src="slideshow/' + json[i] + '">');
}
}, failure: function(json){
alert('Something went wrong. Please try again.');
}
});
});
我无法更改$imagesDir变量,但是如果我在$imagesDir = "Metallica"变量中手动输入"Metallica",它会完美地加载这些图像。
任何人都可以提供任何帮助/建议吗?我已经在这里待了好几个小时了。谢谢你!
除非你打开了register_globals
,否则你需要通过全局$_POST
数组引用变量。 $_POST['imagesDir']
而不是$imagesDir
.
但是,我会以当前的形式声明,简单地替换它将是一个非常糟糕的主意,因为有人可能会试图利用您的代码来列出服务器上的任何目录。
您应该附加父目录以防止漏洞利用。像这样:
编辑 您必须chdir()
到路径,然后 glob 才能工作。我已经在下面更新了我的代码。
<?php
$imagesDir = $_SERVER['DOCUMENT_ROOT']; // this is the root of your web directory
$images = array();
// and this line ensures that the variable is set and no one can backtrack to some other
// directory
if( isset($_POST['imagesDir']) && strpos($_POST['imagesDir'], "..") === false) {
$imagesDir .= "/" . $_POST['imagesDir'];
chdir($imagesDir);
$images = glob('*.{jpg,jpeg,png,gif}', GLOB_BRACE);
}
echo json_encode($images);
?>
我不是 ajax 专家,但您似乎正在发布 imageDir。
所以你的PHP代码应该寻找$_POST['imageDir']。
<?php
$imagesDir = $_POST['imageDir'];
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
echo json_encode($images);
?>
这能解决吗?
- 可以't使用ajax刷新php表
- 自动刷新 PHP 脚本后端
- 如何使用 AJAX 刷新 PHP 文件
- 从窗口页面响应后刷新 php 页面
- 如何刷新 PHP 页面的特定部分
- 刷新 php 输出而不重新加载页面
- 刷新 php 页面而不重新加载内容
- 使用 AJAX 调用重新加载/刷新 PHP 脚本
- 使用JavaScript刷新PHP函数
- 如何在不重新加载的情况下刷新PHP页面
- Count()函数在页面刷新php后更新
- 刷新PHP sql查询而不刷新页面
- 提交按钮->run.php->弹出->刷新php页面的一部分
- 我正在尝试刷新 PHP 变量
- 如何在提交表单后刷新.php页面
- 如何在不刷新php, SQL和javascript页面上的数据的情况下单击标签提交
- Jquery刷新php和停止函数
- 如何使用javascript代码刷新PHP文件?
- Ajax定时刷新/ PHP / MySQL
- 如何在收到jquery的帖子后刷新PHP页面并显示更改