1

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

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

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

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

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

4

4 回答 4

1

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

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

您还需要php.ini像这样进行更改:php_value session.use_trans_sid = 1.

于 2010-07-08T23:00:53.567 回答
0

是的,但你不想这样做。事实上,您应该使用基于 cookie 的会话。这是 PHP 5.3 的默认配置。请阅读会话固定以获取更多信息。

您在什么情况下迫使您要求用户能够在没有 cookie 的情况下使用您的网站?

于 2010-07-08T23:01:13.207 回答
0

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

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

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

请参阅会话 id 传递

于 2010-07-08T23:01:16.400 回答
0

您可以生成一个会话 ID,并将其添加到您的链接中,如下所示

<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
于 2010-07-08T23:05:50.440 回答