对于我在这里尝试做的事情显而易见的道歉,我对PDO / PHP有点新意见......我目前对我的问题有点小问题可能会带来一点安全风险的网站。
我有一个视频'通过URL传递变量(video.php?id=VALUE
)的页面 -
目前我的页面设置如下:
<?php
$video = $_GET['video'];
$videodata = $pdo->prepare("SELECT * FROM video WHERE siteurl = ? LIMIT 1");
$videodata->execute([$video]);
?>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>
<?php
foreach ($videodata as $videodatas) {
echo "{$videodatas['title']}</title>";
echo "<meta property=\"og:title\" content=\"{$videodatas['title']}\"/>"; }?>
<meta name="description" content="Description lives here">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta property="og:url" content="<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];?>" />
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="stylesheet" href="scripts/style.css">
</head>
如果成功匹配,则会生成页面,显示正确的视频,并在<title>
标记和整个页面的其余部分列出正确的视频标题。
然而,当我在URL中测试一个不正确的变量或者我的数据库中没有的东西时,该页面正在吐出一个完全空白的页面(没有错误),其中包含了所有的原始HTML。 <title>
代码。
如何防止这种情况,而是重定向到我的404页面?
答案 0 :(得分:1)
在你的sql之前加上一个条件:
if (isset($_GET['video']) && $_GET['video'] !="") {
$video = $_GET['video'];
$videodata = $pdo->prepare("SELECT * FROM video WHERE siteurl = ? LIMIT 1");
$videodata->execute([$video]);
}