我有一个非常简单的网站,其中有一个按钮,允许人们发布照片。 我写了一个PHP脚本,将照片上传到我的Web服务器。
我现在的问题是如何让网站更新其主页以包含新照片?我是否需要某种脚本来生成HTML并保存文件?我知道Wordpress和其他一些公司提供的功能,但我只是做一个非常简单的设置,并不想报名或支付帐户。
任何线索都会有所帮助。 谢谢!
答案 0 :(得分:2)
在为您的主页提供服务的PHP文件中,您需要阅读上传的文件并为其创建图像标记。如果将文件移动到Web服务器根目录下的目录中,则可以使用以下命令。
<强> homepage.php 强>
<?php
$path = 'where/your/images/are/';
if ($handle = opendir($path)) {
while (false !== ($entry = readdir($handle))) {
if ($entry !== '.' && $entry !== '..') {
echo "<img src='{$path}{$entry}' /><br />";
}
}
}
?>
但是您不应该将用户上传的内容存储在您的Web服务器的根目录下。这是一个让您走向正确方向的替代方案。
<强> upload.php的强>
$uploadsDir = '/not/under/web/root';
if ($_FILES["file"]["error"] !== 0) {
header("HTTP/1.1 400 internal server error");
die();
}
$tmpName = $_FILES["file"]["tmp_name"];
$info = getimagesize($tmpName);
if (is_array($info) && array_key_exists('mime', $info) && $info['mime'] === 'image/jpeg') {
$name = sha1($tmpName) . '.jpg';
move_uploaded_file($tmpName, $uploadsDir . $name);
echo "Image uploaded<br />";
}
else {
echo "Sorry we only take jpegs<br />";
}
<强> homepage.php 强>
<?php
$path = '/not/under/web/root/';
if ($handle = opendir($path)) {
while (false !== ($entry = readdir($handle))) {
if ($entry !== '.' && $entry !== '..') {
echo "<img src='imagefetcher.php?id={$entry}' /><br />";
}
}
}
?>
<强> imagefetcher.php 强>
<?php
if (isset($_GET['img']) && !empty($_GET['img'])) {
$img = $_GET['img'];
// since we know that all files in this directory are sha1 digests followed by .jpg
// make sure that $img matches $pattern
$pattern = "/^[0-9a-f]{40}\\.jpg$/";
$success = preg_match($pattern, $img);
if ($success === 1) {
$fp = fopen('/not/under/web/root/' . $img, 'rb');
if ($fp) {
header("Content-Type: image/jpeg");
header("Content-Length: " . filesize('not/under/web/root/' . $img));
fpassthru($fp);
die();
}
fail();
}
fail();
}
fail();
function fail() {
header("HTTP/1.1 400 malformed request");
die();
}