php5中的cookieless身份验证

时间:2010-07-08 22:56:54

标签: php session authentication cookieless

在我的PHP应用程序中,我使用了UserName& Pwd并检查数据库中的用户表以检查用户的有效性。登录成功后,我将凭据存储在服务器会话中,如下所示:

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

我检查了会话以确保用户已经登录。您可以看到以下代码:

if (empty($_SESSION['userId']))
    header("Location: login.php");

问题是如果我在浏览器中禁用了cookie,即使登录成功,我也无法进入另一个页面。我发现,PHP会话使用cookie在浏览器中存储一些值。无论如何在PHP5中使用cookieless会话?

4 个答案:

答案 0 :(得分:1)

是的,但您需要将sessidsid附加到每个链接。

这里详细描述: http://myles.eftos.id.au/blog/2005/11/26/cookie-less-sessions-in-php/

您还需要像php.ini一样更改php_value session.use_trans_sid = 1

答案 1 :(得分:0)

是的,但你不想。实际上,您应该使用基于cookie的会话。这是PHP 5.3的默认配置。请阅读session fixation了解更多信息。

您有什么情况迫使您要求用户无法使用您的网站?

答案 2 :(得分:0)

是的,您可以启用session.use_trans_sid。但是,这样做存在安全问题。

人们普遍认为,要登录,需要接受cookie。

另一种选择是使用http授权而不是会话,尽管这也有它的缺点。

请参阅session id passing

答案 3 :(得分:0)

您可以生成会话ID,并将其添加到您的链接

<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>