如何使警报在 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']) && $_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');
然而,alert
s 是:
只需在页面中将消息添加为<div>
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 中工作的主要内容,如果未能解决你的问题,请参考以下文章