gpt4 book ai didi

php - Mysql PDO PHP 更改数据库名称不会引发错误,但会终止我的页面

转载 作者:行者123 更新时间:2023-11-29 16:15:27 24 4
gpt4 key购买 nike

我的数据库和错误检查有问题。

如果黑客决定更改我的数据库或任何表的名称,它将杀死我的页面。

我在另一台计算机上尝试我的网页后发现了这一点,其中我有名为“favourites”的收藏夹文件夹。

我已经尝试了所有方法,从 try catch 错误处理到检查计数,然后在返回 0 计数时抛出错误页面。我尝试了各种方法都无济于事。

我通常会将我的用户发送到错误页面。但我无法使用 header 位置重新定向,因为检查位于 PDO 和 while 循环的中间

我向您展示代码。

如何避免这个问题

如果收藏夹数据库名称更改为收藏夹以外的任何名称。它杀死了页面...但是页面的一半被显示了。但如果我 try catch 错误,我无法使用 header 位置进行重定向。这甚至没有注册为错误。

if ($_SESSION['loggedin']==='001'){


if ($db = new PDO("mysql:host=localhost;dbname=favourrites", '????', '')){
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//add ;pagination order by limit
$query11="SELECT * FROM `$useremail` WHERE `faveID` = '$listID' ";

$stat11=$db->prepare($query11);
$stat11->execute();

while($row = $stat11->fetch()){
$faveID=$row['faveID'];
}


if(!isset($faveID)) {$faveID="000";}
else
if(empty($faveID)) {$faveID="000";}
else
if(!$faveID) {$faveID="000";}


if ($faveID===$listID){
echo"
<img id='favicon[$fid]' data-variable-uid='{$UID}' data-variable-
listid='{$listID}' data-variable-accountname='{$accountname}'
src='../images/mainpage/fave1.png' title='Allready Added To
Favorites' class='iconlarge' style='opacity:0.9'
onclick='favecheck($fid);'></img>";
}
else
{
echo"
<img id='favicon[$fid]' data-variable-uid='{$UID}' data-variable-
listid='{$listID}' data-variable-accountname='{$accountname}'
src='../images/mainpage/fave2.png' title='Add To Your Favorites
List' class='iconlarge' style='opacity:1'
onclick='favecheck($fid);'></img>";
}

}else{

error_reporting(E_ALL);
ini_set("display_errors", 1);
header("Location: ../imageupload/error");
die();


echo '<script type="text/javascript">';
echo 'window.location.href="../imageupload/error.php";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
echo '</noscript>';
exit();

}

}

上面的代码添加了重定向尝试,但到目前为止还没有成功。包括许多其他代码

例如检查计数结果等...

如何重定向到我的错误页面。

我尝试了函数调用,但我不熟悉 PHP 函数,我尝试像 jscript 函数一样调用它。

非常需要任何帮助。

谢谢。

最佳答案

如果黑客有权更改数据库名称,那么一切就都结束了。

但你可以这样做

try {
$db = $db = new PDO("mysql:host=localhost;dbname=favourrites", '????', '')
} catch (PDOException $e) {
//echo 'Connection failed: ' . $e->getMessage(); // i suggest you do something with the error
header("Location: ../imageupload/error");
die();
}

在 catch 中进行重定向。但同样,您确实应该处于可能发生这种情况的位置。

关于php - Mysql PDO PHP 更改数据库名称不会引发错误,但会终止我的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com