使用PHP会话

时间:2010-09-26 16:16:32

标签: php

我刚开发了一个用户登录系统,想为不同的用户创建不同的会话。

如何在PHP中编写代码以便启动会话,如果输入的用户名为“a”,则会重定向到其他页面,如果用户名为“b”,则会重定向到其他页面。 / p>

更新

我用过这个

session_start();

switch ($_SESSION['username']) {
    case 'a':
        // $_SESSION['username'] is 'a'
        // redirect to file1.php
        header('Location: file1.php');
        die();
        break;
    case 'b':
        // $_SESSION['username'] is 'b'
        // redirect to file2.php
        header('Location: file2.php');
        die();
        break;
    default:
        // $_SESSION['username'] is neither a, nor b, or is not set at all
        // redirect to default.php
        header('Location: default.php');
        die();
        break;
}

但无论我输入什么用户名,都会把我带到file1.php

7 个答案:

答案 0 :(得分:2)

session_start();

// ...

if ($_SESSION['username'] == 'a') {
    header("Location: ./page_a");
} else if ($_SESSION['username'] == 'b') {
    header("Location: ./page_b");
} else {
    header("Location: ./otherpage");
}

答案 1 :(得分:1)

只需启动php会话:

session_start() ;

然后,在登录时,将登录用户的ID保存到:

$_SESSION['currentuser'] = $userid ;

注销时,请不要忘记:

unset($_SESSION['currentuser']) ;

在您希望以不同方式显示给每个用户的页面上,选中$_SESSION['currentuser'],然后重定向:

if($_SESSION['currentuser'] == 1) {
    Header("Location:/page1.php") ;
} else {
    Header("Location:/page_default.php") ;
}
exit ;

答案 2 :(得分:1)

所有PHP页面都应该以:

开头
<?php
session_start();

您将设置如下的会话变量:

$_SESSION['myVariableName'] = 'myIntendedValue';

因此,当您处理登录时,您可能会为username或userid设置会话变量,然后您可以处理该重定向:

if (isset($_SESSION['userName']) && $_SESSION['userName'] == "a") {
    header("Location: pageA.php");
    exit();
} else if (isset($_SESSION['userName']) && $_SESSION['userName'] == "b") {
    header("Location: pageB.php");
    exit();
}

答案 3 :(得分:1)

使用switch()代替if语句:

session_start();

switch ($_SESSION['username'])
{
    case 'a':
        // $_SESSION['username'] is 'a'
        // redirect to file1.php
        header('Location: file1.php');
        die();
        break;
    case 'b':
        // $_SESSION['username'] is 'b'
        // redirect to file2.php
        header('Location: file2.php');
        die();
        break;
    default:
        // $_SESSION['username'] is neither a, nor b, or is not set at all
        // redirect to default.php
        header('Location: default.php');
        die();
        break;
}

请注意,仅凭这一点还不够安全。在file1.php和file2.php中,您还必须调用session_start()并执行类似的检查,允许用户在显示页面内容之前查看此页面。

答案 4 :(得分:0)

session_start();
if($_SESSION['username'] == 'a')
   header('Location: pageA.php');
else
   header('Location: pageB.php');

答案 5 :(得分:0)

您可能需要阅读session_start()上的PHP.net文档。

基本上,每个页面都以session_start()开头,以启动PHP会话。之后,您可以访问可用于存储和读取数据的全局$_SESSION[]数组。

例如,您可以在登录过程中将用户名存储在会话中:

$_SESSION['username'] = 'a';

然后,在您的其他页面中,您将阅读会话用户名,找出用户名并进行正确处理:

if (isset($_SESSION['username']))
{
    header("Location: newlocation.php");
}

答案 6 :(得分:0)

就像quantumSoup的代码一样但是他犯了一个简单的错误,请使用:

在session_start();

// ...

if($ _SESSION ['username'] =='a'){     标题(“位置:./ page_a”); } else if($ _SESSION ['username'] =='b'){     标题(“位置:./ page_b”); } else {     标题(“位置:./ otherpage”); }