我不清楚php的session.use_trans_id的含义和用法。
在线文档中,它说:
运行时选项 session.use_trans_sid已启用, 相对URI将更改为 自动包含会话ID。 这是否意味着它总是会添加会话ID?或者只有当cookie不起作用时?
是否会自动将其添加到javascript的window.location或ajax调用?
另外,在php.ini文件中,它说:
trans sid support is disabled by default.
Use of trans sid may risk your users security.
Use this option with caution.
- User may send URL contains active session ID
to other person via. email/irc/etc.
- URL that contains active session ID may be stored
in publically accessible computer.
- User may access your site with the same session ID
always using URL stored in browser's history or bookmarks.
http://php.net/session.use-trans-sid
我很困惑,在线文档说Unless you are using PHP 4.2.0 or later, you need to enable it manually
。那么为什么默认会禁用它? (我正在使用php 5)。
此外,这个功能是否必须处理禁用cookie的用户?
答案 0 :(得分:2)
你可以这样做:
if(isset($_COOKIE['session_name'])){
ini_set("session.use_trans_sid",false);
session_start();
///////////////////
//any hard tracking code or hard work goes here
// like $_SESSION['msisdn']="9455366212";
///////////////////
$_SESSION['cookie_support']=1;
}else{
ini_set("session.use_trans_sid",true);
session_start();
$_SESSION['cookie_support']=0;
}
如果用户尝试登录,请先检查$_SESSION['cookie_support'];
尽量避免与cookie_support=0
答案 1 :(得分:2)
风险是有人可以给你链接sid并且你会使用该链接登录,他们会在你登录的情况下进行活动会话。
答案 2 :(得分:2)
“这是否意味着它总是会添加会话ID?或者只有当cookie不起作用?”
session.use_trans_sid
和session.use_cookies
都是1,则session.use_only_cookies
决定:1将禁用网址重写。见this nice article。“会自动将其添加到javascript的window.location还是ajax调用?”
“除非您使用的是PHP 4.2.0或更高版本,否则需要手动启用它”
“此外,这个功能是否必须处理禁用cookie的用户?”
答案 3 :(得分:1)
如果启用“use_trans_sid”,则会话ID每次都附加到URL。我不确定ajax请求会发生什么,但我认为它会被附加到。
是的,当用户禁用cookie时你需要trans_sid,但它有点不安全(想想有人正在你的屏幕上查看并记下你的会话ID?:-))。