2013-03-14 69 views
0

我已经看到了很多关于此的文章,但迄今没有任何工作。我想要做的事很简单。如何正确使用会话

我有一个登录页面..通过mysql/php等验证您是谁。此页面中有session_start()。从那里,它会将您带到菜单页面。

我想让它到达如果会话尚未从登录页面启动的地方,您无法查看菜单页面,它会将您引导回登录页面。如果这是不可能的,我最终想做的就是让它到达必须使用登录页面查看菜单页面的位置。从评论

代码:

的login.php

session_start(); 
session_id ("username"); 

menu.php

if(!session_id() == "") { 
    header("location:login.html"); 
} 
+0

向我们展示了什么没有奏效,也许解释什么是“没有工作“的意思。 – 2013-03-14 01:56:57

+0

这是我试过的最新代码。从这里发生的事情是,你仍然能够查看主页面,没有任何错误。 login.html session_start(); session_id(“username”);如果(!session_id()==“) { header(”location:login.html“); – 2013-03-14 01:57:50

+0

“主页”不是php;告诉我们你到目前为止所做的一切。 – 2013-03-14 01:58:54

回答

0

使用框架如Laravel因为这些功能都已经内置了和妥善处理。 Theres没有使用重新发明轮子和像我提到的那个框架很容易学习。

编辑:对不起,我是比较新的回答问题,所以我会再试一次。

在库,如Usercake,发生的事情是当你的用户登录,要求用户在你登录可以进入

检查每个页面上设置可变会话

$_SESSION["stack_user"] = "[email protected]"; // This could be their name, an object etc 

在此之后

if (!isset($_SESSION["stack_user"])){ 
    header("Location: /login.php"); 
} 
// The rest of your page logic here 

Aaaaaand我才意识到这已经说...男孩我是开了一个糟糕的开局

+0

一个不应该使用的代码至少粗略理解,IMO。在他开始依靠框架为他做这件事之前,他应该已经具备了这些东西如何起作用的基本工作知识。 – cHao 2013-03-14 03:13:14

+0

我明白他正在学习如何完成,但他没有任何地方说这不是一个生产现场。就像我说的那样,重新发明轮子是没有用的。 – Adam 2013-03-14 21:04:26

2

而不是刚刚开始的会议,你应该把东西一边,这样你知道它去过去login.php

$_SESSION['logged_in'] = true; 

然后,在菜单页面中,你还需要session_start()

session_start(); 
if (!isset($_SESSION['logged_in'])) { 
    header('Location: /login.php'); 
} 
+0

此代码基本上工作。现在,如果我尝试直接转到main.php,它会将我引导回login.php 但是,登录后,它仍将我引导回login.php。 – 2013-03-14 02:17:03

+0

我的不好,我在代码中有一个错字。这工作..非常感谢你 – 2013-03-14 02:21:35