设置变量时如何下载,如果未设置则不下载

时间:2015-01-25 03:47:39

标签: php

我正在尝试通过查询数据库来制作iCalendar文件,因此我不必为每个创建的事件制作新的iCalendar文件。

<?php

    header("Content-type: text/calendar");

    $connection = mysqli_connect("localhost", "root", "");
    $sql = "SELECT * FROM events WHERE eventID = '{$eventID}'";
    $result = mysqli_query($connection, $sql);
    $numrows = mysqli_num_rows($result);

    // Render iCal file

?>

如果未设置$_GET["eventID"],如何禁止文件下载?

在这种情况下,我希望访问者不要下载,而是获取一个空白页面作为示例。

3 个答案:

答案 0 :(得分:2)

if (!isset($_GET["eventID"])){
echo 'bad';
}else{

// your code here

}

答案 1 :(得分:2)

坚持这一点:

if (!isset($_GET["eventID"])) {
    exit;
}

您还应该在SQL查询之后执行某些操作,检查它是否实际返回了结果。 e.g。

if ($numrows == 0) {
    exit;
}

答案 2 :(得分:0)

正确的做法是,如果URL /实体不存在,则发送404 Not Found HTTP状态代码:

$result = mysqli_query($connection, $sql);
$event  = $result->fetch_assoc();

if (!$event) {
    header('HTTP/1.0 404 Not Found');
    exit;
}

header("Content-type: text/calendar");

echo $event['title'];
..

我在这里检查数据库中是否存在该事件。要处理丢失的$_GET参数,您可以单独发送 400错误请求