尝试构建通过AJAX加载的动态库。
我正在努力建立一个ul
,其中list items
与图片一样多<ul id="foo">
<li><a href="javascript:void(0);"><img src="../images/portfolio/foo/001.jpg></a></li>
<li><a href="javascript:void(0);"><img src="../images/portfolio/foo/002.jpg></a></li>
</ul>
<div class="description">FOO TITLE / DESCRIPTION</div>
<ul id="bar">
<li><a href="javascript:void(0);"><img src="../images/portfolio/bar/001.jpg></a></li>
<li><a href="javascript:void(0);"><img src="../images/portfolio/bar/002.jpg></a></li>
<li><a href="javascript:void(0);"><img src="../images/portfolio/bar/003.jpg></a></li>
</ul>
<div class="description">BAR TITLE / DESCRIPTION</div>
,因为每个图库都有不同数量的图片......如下所示:
<?php function generateProject($projTitle,$projDesc) {
$proj = $_GET['proj'];
echo '<ul id="'.$proj.'">';
$array = array('001','002','003','004');
foreach($array as $picture)
{
echo '<li><a href="javascript:void(0);"><img src="../images/portfolio/'.$proj.'/'.$picture.'.jpg"';
echo '</li>';
}
echo '</ul>';
echo '<div class="description">'.$projTitle.' <span class="slash"> / </span>'.$projDesc.'</div>';
} ?>
<?php
generateProject(
'deadAWESOME',
'Gargoyles. Dusty leather tomes. Hidden rooms. Coffee.');
?>
我对PHP不熟悉,无法构建我构建的函数。有帮助吗?这是我到目前为止(注意我所拥有的数组是一个临时解决方案......如果项目的数量少于/超过我在数组中列出的4个数据,它就不起作用):
{{1}}
答案 0 :(得分:2)
首先,直接从$proj
获取$_GET
路径是不安全的。在将其放入URL之前,您应该根据可接受的值数组或正则表达式对其进行检查。在这种情况下,只要Web服务器的文档根目录设置正确,就不会造成太大的损害。但是保护自己的道路是个好习惯。
$proj = $_GET['proj'];
// Method 1: regex
// Test that proj is only lowercase letters...
if (!preg_match("/^[a-z]+$/", $proj)) {
// Oops, invalid $proj
}
// Or as ctype_alpha()
if (!ctype_alpha($proj)) {
// invalid $proj
}
// Method 2: whitelist array
// Array holds the valid possible values for $proj
$valid_proj = array("project1", "barmitzvah", "wedding");
if (!in_array($proj, $valid_proj)) {
// Oops, invalid project
}
要从文件系统获取所有图像,您可以使用readdir()
。
// Use a glob to get all the images *.jpg
$imgs = glob("/filesystem/path/to/images/portfolio/$proj/*.jpg");
foreach ($imgs as $picture) {
// Get only the base filename
$picture = basename($picture);
// Then build the <li>
echo '<li><a href="javascript:void(0);"><img src="../images/portfolio/'.$proj.'/'.$picture;
echo '</li>';
}