在php中处理多个会话

时间:2013-02-28 12:35:14

标签: php session

我对网站编程有基本的了解。我想创建一个在同一个域上有两个应用程序的网站。第一个是用户,第二个是管理员,也就是我。这将有利于我做事情并管理网站而无需登录数据库。问题是如何处理这两个会话。我试图在session_start之前使用session_name,但它不起作用。我需要帮助才能使每个会话都在自己的独立方面,所以他们不要互相混淆。另一个问题。当你有多个时,这是设置会话的正确方法吗?

  

$ _ SESSION [$ variable] = $ variable。

编辑:仍然无法正常工作。这是我的代码:

<?php
@$admin = $_POST['admin'];
@$password = $_POST['password'];

if(empty($admin) OR empty($password)) {
echo 'You need to fill all the spaces.';
}

if (!empty($admin) AND !empty($password)) {
    mysql_connect('localhost','root','');
    mysql_select_db('job');
    $tip0 = mysql_query("SELECT admin, password FROM admin WHERE admin = '".mysql_real_escape_string($admin)."' AND password = '".md5($password)."'");
    if(mysql_num_rows($tip0)==TRUE) {
    $_SESSION['admin']['login'] = $admin;
    header('location:administrator.php');
    echo 'Session has been created';
    }
    elseif(mysql_num_rows($tip0)==FALSE) {
    echo 'There is no admin.';
    }

}

?>


<html>
<body>

<form action="admin_login.php" method="POST"></input><br />
Admin: <input type="text" name="admin"></input><br />
Password: <input type="password" name="password"></input><br />
<input type="submit"></input>

</form>
</body>
</html>

这是重定向页面:

    <?php
session_start();

if (isset($_SESSION['admin']['login'])) {
echo 'Here we go.';
}
elseif(!isset($SESSION['admin']['login'])) {
echo 'Not found';
}

?>

3 个答案:

答案 0 :(得分:3)

会话只能在session_start()之后使用;您可以在数组中创建一个数组,以使其工作。你可以尝试这样的事情:

$_SESSION['user']['name'] = 'Something';
$_SESSION['user']['email'] = 'Something';

对于管理员:

$_SESSION['admin']['something'] = 'Something';

编辑:记住你使用session_start();在每个页面上您使用会话。看起来你忘记了第一页。

答案 1 :(得分:1)

为什么不使用$ _SESSION ['admin'] []存储与管理相关的变量?

例如,$ _SESSION ['admin'] ['login'] ='Mansour Fahad';

答案 2 :(得分:1)

我更喜欢这个:

网站:

define('SES_PREFIX' , 'website-');
$_SESSION[ SES_PREFIX . 'user'] = 'waqar';

管理

define('SES_PREFIX' , 'admin-');
$_SESSION[ SES_PREFIX . 'user'] = 'admin';

这将允许您在同一个域上部署同一应用程序的多个副本。