我试图在我创建的两个页面中传递会话变量。我的浏览器关闭了Cookie(firefox最新版本),但是我收到了错误消息。这是我的代码
的index.php
<?php
session_start();
$_SESSION['name'] = "bob";
?>
<p>
go to next page <a href="session.php?<?php echo SID; ?>">click here</a>.
</p>
session.php文件
<?php
session_start();
echo $_SESSION['name'];
?>
PHP无法识别$ _SESSION [&#39; name&#39;]索引并输出以下错误
注意:未定义的索引:第3行的C:\ xampp \ htdocs \ S2 \ session.php中的名称
注意:我在php.ini文件session.use_trans_sid = 1
上启用了trans_sid答案 0 :(得分:0)
我重新创建了您的方案,对我来说有用的是将这些设置放在 session_start()之前:
$computer = $Env:ComputerName
$text = "C:\accounts.csv"
$user = import-csv -path $text
$ObjOU = [ADSI]"WinNT://$computer"
foreach($strUser in $user)
{
$user = $struser.user
$password = $struser.password
$description = $struser.description
$group = $struser.group
Clear-Host
If($user -notin ($ObjOU.Children|Where{$_.SchemaClassName -eq 'user'}).Name){
$objUser = $objOU.Create("User", $user)
$objUser.setpassword($password)
$objUser.put("description",$description)
$objUser.SetInfo()
}
$objGroup = [ADSI]"WinNT://$computer/$group"
$objGroup.add("WinNT://$computer/$user")
$objGroup.SetInfo()
}
我希望这能解决你的问题。当然你也可以编辑你的php.ini而不是硬编码。
我想补充的是,如果有人获得您的会话ID,使用trans_sid可能会产生安全漏洞。之前进行一些IP检查,并限制只访问创建会话ID的IP。请注意,如果使用旧会话ID的旧链接,使用trans_id也可能会破坏您的应用。
答案 1 :(得分:0)
一定要注意谨慎,在URL中传递会话ID是一种安全风险,绝对不可取。
将session.use_trans_sid
设置为true
,这是填充SID
常量的内容,您还需要将session.use_only_cookies
设置为false
,否则PHP会查找饼干首先。
session.use_trans_sid
实际上是一个PHP 4特性,当与具有--enable-trans-sid
编译时标志的PHP构建一起使用时,将使用SID
常量透明地填充相对URL。 / p>
PHP能够透明地转换链接。除非您使用的是PHP 4.2.0或更高版本,否则在构建PHP时需要手动启用它。在Unix下,传递
--enable-trans-sid
进行配置。如果启用此构建选项和运行时选项session.use_trans_sid
,则相对URI将更改为自动包含会话ID。
注意:与基于Cookie的会话管理相比,基于URL的会话管理具有额外的安全风险。用户可以通过电子邮件将包含活动会话ID的URL发送给他们的朋友,或者用户可以将包含会话ID的URL保存到他们的书签,并始终使用相同的会话ID访问您的站点,例如。