2014-11-21 173 views
-2

我想在使用下面的方法向用户显示页面之前验证用户已经登录,而if/else方法在用纯HTML包装时工作正常当涉及到PHP时。顺便说一句,我是新手。会发生什么是页面简单地加载,就好像下面的两个标签不存在一样......如果我以前登录过,那么会很好,但我没有。Php登录脚本不会环绕php

<?php 
session_start(); 
if(isset($_SESSION['user'])) { 
?> 

HTML/PHP Page goes here. 

<?php 
} else { 
    header("Location: cms/admin/loginreadmode.php"); 
} 
?> 

由于提前,

+0

u能解释清楚!ATLEAST尝试发布小提琴段与示例代码! – 2014-11-21 15:35:10

+1

“它失败时,有PHP参与”它可能会帮助,如果你提供的是PHP。 – 2014-11-21 15:35:58

回答

0

可以调试只是你的session_start低于();通过打印您的会话:

echo '<pre>'; 
print_r($_SESSION); 
die(); 

如果$ _SESSION ['user']没有显示在您的数组中,它不会被设置。 你可以做到这一点是这样的:

session_start(); 
$_SESSION['user'] = true; 
-1

1)这不是检查用户是否登录,纯粹是检查用户的会话是否存在可最终导致了很多问题的一个伟大的方法。将ID存储在会话中,然后检查ID是否有效可能是更好的方法,

2)当我将上面的代码复制到测试文档中时,它直接进入else语句中的重定向页面。这是由于用户会话没有被设置,只要我在代码执行之前设置用户会话就可以正常工作。我看到'HTML/PHP页面在这里'。

设置用户会话:

$_SESSION['user'] = 'TestUser'; 
+0

如何我们可以调试吗?兴我们不能重现吗?如果我们不能重现它,那一定是别的。我在答案的最后部分介绍了这一点。 – 2014-11-21 15:50:43

+0

“我们如何调试我们无法重现的东西”。这正是我的观点。你不能重现这个问题,因此你不能给出一个真实的答案。这个问题缺乏足够的信息来提供有意义的答案。此外,OP表明问题存在_when not logged in。这意味着设置会话将无济于事,因为在未登录时不应设置会话。登录时只应显示给未登录用户的内容。你的“答案”决不会解决这个问题。 – 2014-11-21 15:55:28

+0

啊,我明白你的意思了,我的坏话。我不得不多次重读这个问题,他的问题变得越来越不明确。 – 2014-11-21 15:59:51

-1

您可以在页面的顶部更改代码是

<?php 
session_start(); 
if(!isset($_SESSION['user'])) { 
header("Location: cms/admin/loginreadmode.php"); 
die(); 
} 
?> 
+0

这只是OP已经在做的反向逻辑。 – 2014-11-21 15:56:55

+0

@PatrickQ这将完成他需要的工作..如果他在下面添加代码之前试图检查会话 – 2014-11-21 18:00:30

0

你确定你在每一个页面中添加会话支持?

if (!isset($_SESSION)) { 
session_start(); 
} 

此代码应该是工作,所以错误可能是somwhere否则我建议你检查,如果你登录后设置$ _SESSION [“用户。 你也应该用简单的

取代你不工作的代码部分
echo "hello"; 

仄它。