我想要做的是如果查询为空或者代码名称错误,请将访问者发送到错误页面?我的当前脚本回应了以下“这个网站上没有黑客攻击!”,但这一切都发生在发送原始查询的同一页面上。
目标是将访问者发送到我的自定义错误页面,该页面位于第一页所在的同一文件夹中。
http://www.example.com/download/file.php
http://www.example.com/download/error.php
我当前的脚本是
<?php
$host = 'localhost';
$db_name = 'My_DB_Name';
$db_user = 'MY_User_Name';
$db_pass = '******';
$path_to_file_directory = 'download/files/';
mysql_connect( $host, $db_user, $db_pass);
mysql_select_db( $db_name ) or die(mysql_error());
$file_code = filter_input( INPUT_GET, 'urlid' );
# Query for file info
$res = mysql_query("SELECT * FROM `Files` WHERE `urlID`='".$file_code."'") or die ( mysql_error() );
# If query is empty, there is a bad code name
# This catches possible hacking attempt.
if( mysql_num_rows($res) == 0 )
{
echo 'There will be no hacking on this website! ';
exit();
}
# Save file info into an array called "$info"
$info = mysql_fetch_assoc($res);
# File path is below
$file_path = $path_to_file_directory.$info['file_name'];
# Now push the download through the browser
# There is more than 1 way to do this.
if (file_exists($file_path)) {
echo '<p>if it does not: <a href="'.$file_path.'">click here to try again</a>.</p>';
exit;
}
?>
我知道我必须将echo更改为其他内容,但我不知道我必须使用什么,因为只需将链接放在echo内的错误页面中,只会在我的file.php页面上回显它/ p>
请帮忙
答案 0 :(得分:2)
我猜您需要的是重定向到另一个页面。您可以使用header
功能。
<?php
if( mysql_num_rows($res) == 0 )
{
header('Location: /nohacking.php');
exit();
}
?>
这会将您的浏览器重定向到nohacking.php文件。
答案 1 :(得分:1)
只要你还没有发送任何标题(例如,基本上,这是在任何HTML之前):
if(mysql_num_rows($res) == 0)
{
die(header("Location: error.php"));
}
header()函数将重定向页面,而die()函数将停止处理PHP的其余部分。