如何使警报在PHP中工作

时间:2013-04-21 21:54:57

标签: php http-headers alerts

在我的member.php页面中,我收到以下警告:

if (isset($_GET['success']) == 'no')
        {
            echo"<script type=\"text/javascript\">".
                "alert('You can't remove any more services! Please contact admin if you would like your account disabled');".
                "</script>";

        }        
        if (isset($_GET['success']) == 'yes') {
            echo"<script type=\"text/javascript\">".
                "alert('Your details have been updated!');".
                "</script>";

        }

在delete.php中我使用以下代码:(仅限相关代码)

if($numJobs < 2)
                {
                    header('Location: member.php?success=no&username='.$username);
                    exit();
                }

在update.php中我使用此代码:

if(success){
                 header('Location: member.php?success=yes&username='.$username);
                 exit ();
                }

无论我如何编辑警报,警报'Your details have been updated!'都是执行的。在网址中,我可以看到success = no所以我不明白为什么它不起作用。

3 个答案:

答案 0 :(得分:2)

你的第一个块有语法错误;你需要转义单引号,因为字符串是单引号。

请注意此处突出显示的语法:

alert('You can't remove any more services! Please contact admin if you would like your account disabled');

转义:

alert('You can\'t remove any more services! Please contact admin if you would like your account disabled');

然而alert是:

  • 恼人
  • 传达重要信息的坏方法

只需在页面中将消息添加为<div>,然后对其进行样式化或随后使用JavaScript弹出它们。无障碍且不那么令人沮丧!

另外,将isset的结果与某些内容进行比较通常是错误的,而且你做了两次。所有人都应该阅读:

if (!isset($_GET['success']) || $_GET['success'] === 'no') {
    echo '<script type="text/javascript">',
         'alert("You can\'t remove any more services! Please contact admin if you would like your account disabled");',
         '</script>';
}
else {
    echo '<script type="text/javascript">',
         'alert("Your details have been updated!");',
         '</script>';
}

注意我如何在那里交换引号;否则,你必须逃避两次。

答案 1 :(得分:2)

if (isset($_GET['success']) == 'no')

将始终为false,因为isset($ _ GET ['success'])为true或false,并与字符串'no'进行比较,整个表达式将评估为false。

将其更改为

if (isset($_GET['success']) && $_GET['success'] == 'no')
像你在问题的第一条评论中正确陈述的akam一样。

答案 2 :(得分:1)

如果您将成功更改为1和0而不是是和否,那么您可以

if ($_GET['success'])