我正在尝试通过查询数据库来制作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"]
,如何禁止文件下载?
在这种情况下,我希望访问者不要下载,而是获取一个空白页面作为示例。
答案 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错误请求。