在我的PHP应用程序中,我使用了UserName& Pwd并检查数据库中的用户表以检查用户的有效性。登录成功后,我将凭据存储在服务器会话中,如下所示:
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
我检查了会话以确保用户已经登录。您可以看到以下代码:
if (empty($_SESSION['userId']))
header("Location: login.php");
问题是如果我在浏览器中禁用了cookie,即使登录成功,我也无法进入另一个页面。我发现,PHP会话使用cookie在浏览器中存储一些值。无论如何在PHP5中使用cookieless会话?
答案 0 :(得分:1)
是的,但您需要将sessid
或sid
附加到每个链接。
这里详细描述: 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授权而不是会话,尽管这也有它的缺点。
答案 3 :(得分:0)
您可以生成会话ID,并将其添加到您的链接
<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>