如何使警报在 php 中工作

Posted

技术标签:

【中文标题】如何使警报在 php 中工作【英文标题】:How to make alerts work in php 【发布时间】:2013-04-21 21:54:57 【问题描述】:

在我的 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!' 都会被执行。在 URL 中我可以看到 success = no 所以我不明白为什么它不起作用。

【问题讨论】:

改变你的条件:if(isset($_GET['success']) &amp;&amp; $_GET['success'] == 'no') 【参考方案1】:
if (isset($_GET['success']) == 'no')

将始终为假,因为 isset($_GET['success']) 要么为真要么为假,并且与字符串 'no' 相比,整个表达式的计算结果为假。

改成

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

就像在您问题的第一条评论中正确陈述的 akam。

【讨论】:

【参考方案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');

然而alerts 是:

烦人 传达重要信息的糟糕方式

只需在页面中将消息添加为&lt;div&gt;s,然后对它们进行样式化或随后使用 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>';

注意我是如何在那里交换引号的;否则,您将不得不两次逃脱。

【讨论】:

【参考方案3】:

如果你将success改为1和0而不是yes和no,那么你就可以拥有

if ($_GET['success'])

【讨论】:

以上是关于如何使警报在 php 中工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Snackbar 在类组件中工作?

如何使“LIKE”查询在 MongoDB 中工作?

如何使 ProgressBar 在 LibGDX 中工作?

如何使 setState 在 useEffect 中工作

如何使 Material-UI Dialog 在 React 中工作

无法使 PHP 函数在 PHP 内部的 HTML 中工作