PHP:通过$ _GET回声失败

Jon*_*ann 2 php strip-tags

我目前正在使用此代码在我的网站上显示错误:

<?php
$failure = strip_tags($_GET['failure']);
if($failure!=""){
echo '<div class="error">';
echo $failure;
echo '</div>';
}
?>
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇这是否安全.是吗?

And*_* SK 5

虽然这个解决方案会改变你的方法,为什么不用这个结构的errors.php文件呢?

$error[1] = 'some error message';
$error[2] = 'some other error message';
$error[3] = '...'; // you get the point
Run Code Online (Sandbox Code Playgroud)

只需发送一个ID作为错误:

somepage.php?failure=2
Run Code Online (Sandbox Code Playgroud)

然后,在您通常显示错误的位置包含此代码:

if($_GET['failure'] && array_key_exists($_GET['failure'],$error) {
    echo $error[$_GET['failure']];
}
Run Code Online (Sandbox Code Playgroud)

只需确保在config.php文件中包含errors.php(或者您的主配置的文件名是什么).

为什么?

  1. 错误经常被重复,这样你就可以一遍又一遍地使用它们.
  2. 如果您想将网站翻译成另一种语言,这个系统将非常有用.
  3. 如果您需要更改错误消息中的单词,则只需在errors.php文件中更改一次.

恕我直言,在这种情况下使用int比使用字符串安全得多.

  • +1更好,但为什么不将错误整数存储在会话var中,那么就没有操作空间了 (2认同)