更新脚本PHP / HTML

时间:2014-11-19 21:40:56

标签: php html

我有一个非常简单的网站,其中有一个按钮,允许人们发布照片。 我写了一个PHP脚本,将照片上传到我的Web服务器。

我现在的问题是如何让网站更新其主页以包含新照片?我是否需要某种脚本来生成HTML并保存文件?我知道Wordpress和其他一些公司提供的功能,但我只是做一个非常简单的设置,并不想报名或支付帐户。

任何线索都会有所帮助。 谢谢!

1 个答案:

答案 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();
}