我很困惑。我正试图使这些链接只在用户登录时出现。
但是奇怪的事情正在发生。
这是我的代码在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