【问题标题】:Set $_SESSION['callback'] = 'no' if $_SESSION['callback'] == 'yes'设置 $_SESSION['callback'] = 'no' if $_SESSION['callback'] == 'yes'
【发布时间】:2013-03-26 13:30:13
【问题描述】:

我有一个功能可以收集有关您在接下来的十分钟内是否有任何回电给公司的信息。一切正常,除了一件事。如果找到回调,我想显示 JavaScript 警报。我将 $_SESSION['callback'] 设置为 'yes' 并重定向。

在第 #2 页,我检查 $_SESSION['callback'] 是否为“是”,如果是,则输出 JS 代码并将 $_SESSION['callback'] 设置为“否”。

这并不像人们想象的那样有效。它将 $_SESSION['callback'] 设置为 'no' 但它不输出 JS 代码,即使我在单独的 if 子句中将 $_SESSION['callback'] 设置为 'no' 也是如此。

这是有问题的代码:

if(@$_SESSION['callback'] == 'yes') {
    echo "<script type=\"text/javascript\">alert('Du har en återkoppling till detta företag inom tio minuter!');</script>";
    $_SESSION['callback'] = 'no';
};

【问题讨论】:

  • 使用truefalse 可能会更好。
  • 是不是因为警报文本中的特殊字符? "Du har en återkoppling till detta företag inom tio minuter!"
  • 检查浏览器控制台中的错误
  • @PrasanthBendra:不,不是。我也试过echo "test";,但也没有用。我目前正在尝试布尔值。
  • 如果你想养成生成高质量代码的习惯,你应该摆脱默认使用@的习惯。即使在这种情况下,也可能会出现您没有看到的错误,因为您隐藏了它。例如,您可能没有运行 session_start(),当您尝试从 $_SESSION 访问变量时会显示为通知。

标签: php session


【解决方案1】:

以下示例完全符合您的要求。如果是你的版本,那么你应该开始挖掘 $_SESSION 的内容和其他值。

您会在第一时间看到警告框,然后刷新页面时它将不起作用。

<?php

session_start();

if(!isset($_SESSION['callback'])) $_SESSION['callback'] = 'yes';

if($_SESSION['callback'] == 'yes') {
    echo "<script>alert('hello!');</script>";
    $_SESSION['callback'] = 'no';
}

?>

【讨论】:

  • 如果没有设置变量,那么应该没有JS警报。除此之外,这是我得到的代码,在我删除 $_SESSION['callback'] = 'no'; 之前它不起作用。
猜你喜欢
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 2011-07-03
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多