【问题标题】:PHP if statement for anchor tag is not workingPHP if 锚标记语句不起作用
【发布时间】:2018-10-18 22:41:42
【问题描述】:

锚标记的 If 语句不起作用。在我检查过的条件内,如果会话有值,则进入仪表板。但如果会话没有值,则进入注册页面。

我在登录后检查了这段代码,所以设置了 $_SESSION['c_id']。所以 $_SESSION['c_id'] 有一个值并且不为空,应该显示仪表板选项。但是即使会话不是空的,导航栏也会显示注册选项,这表明 else 条件在这里起作用。

我按照 PHP 手册 http://php.net/manual/en/control-structures.alternative-syntax.phphttp://php.net/manual/en/control-structures.if.php 尝试了这个 我不确定我的代码是对是错还是有语法错误或逻辑错误。

    <li><a href="order_page.php">Order Anything</a></li>

    <?php if(isset($_SESSION['c_id'])):?>
        <li><a href="index2.php"> Dashboard</a> </li>

    <?php elseif(isset($_SESSION['p_id'])):?>
        <li><a href="index1.php"> Dashboard</a></li>

    <?php else:?>
        <li><a href="BeProvider.htm">Sign up</a></li>
    <?php endif;?>

    <li><a href="contact.htm">  Help Center</a></li>

【问题讨论】:

  • 启用错误报告php.net/manual/en/function.error-reporting.php 然后告诉我们错误是什么,如果有的话。
  • start_session()在这个脚本的任何地方吗?
  • 只是为了扩展@FunkFortyNiner 评论,在脚本顶部添加ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(-1);
  • 如果您希望在检查会话后重定向用户,那么您应该使用header('location: mypage.php') 而不是锚标记。
  • 人们不得不想知道 OP 在这一切中的位置。这个问题缺少细节。

标签: php html session


【解决方案1】:

你需要 session_start() 在你的页面上使用 Session

<?php session_start(); ?>
<li><a href="order_page.php">Order Anything</a></li>

    <?php if(isset($_SESSION['c_id'])):?>
        <li><a href="index2.php"> Dashboard</a> </li>

    <?php elseif(isset($_SESSION['p_id'])):?>
        <li><a href="index1.php"> Dashboard</a></li>

    <?php else:?>
        <li><a href="BeProvider.htm">Sign up</a></li>
    <?php endif;?>

    <li><a href="contact.htm">  Help Center</a></li>

阅读本手册session

【讨论】:

  • 你应该添加一个解释 - OP 不会理解解决方案和更好的未来代码,他们只会记住它,导致他们不断查找代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
相关资源
最近更新 更多