我刚开发了一个用户登录系统,想为不同的用户创建不同的会话。
如何在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
答案 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”); }