会话不工作html


Session not working html

我很困惑。我正试图使这些链接只在用户登录时出现。

但是奇怪的事情正在发生。

这是我的代码在index.php…

// at the beginning of the page i have
session_start();
....
....
 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">

                 <li>
                    <a class="page-scroll" href="#about"> <?php if(!isset($_SESSION['user'])){echo 'Profile';?></a>
                </li>
                <li>
                    <a class="page-scroll" href="#services"><?php if(isset($_SESSION['user'])) echo 'Post Links';?></a>
                </li>
                <li>
                    <a class="page-scroll" href="#portfolio"><?php if(isset($_SESSION['user'])) echo 'My Views';?></a>
                </li>
                <li>
                    <a class="page-scroll" href="#contact"><?php if(isset($_SESSION['user'])) echo 'Logout';?></a>
                </li>
            </ul>
        </div>

它不工作。然后,我创建了一个虚拟的.php来测试我的会话是否有效。

    <?php session_start();?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php if(isset($_SESSION['user'])) echo "Session is up and runnig";?>
</body>
</html>
//I get Session is up and runnig

它起作用了。所以我很困惑。我做错了什么?

<?php if(!isset($_SESSION['user'])){echo 'Profile';?>
                                   ^               ^???

和错误报告会抛出一个解析错误(文件结束),类似于:

解析错误:语法错误,文件结束在X行

一定要养成使用适当的支撑技术的习惯。

if(condition) {...}

如果不这样做,在以后使用复杂编码时可能会产生不利影响。

错误报告添加到文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:显示错误应该只在登台时显示,而不应该在生产中显示。

更不用说我的蜘蛛感对于使用.html而不是.php的刺痛

然而你的问题说"这是我的代码在index.php…"但是你在评论中说你的文件是.html。它不会被解析为PHP(默认情况下),除非您指示Apache将.html文件视为PHP。

另外,您可以使用三元操作符来代替。

  • http://php.net/manual/en/language.operators.comparison.php