我不明白下面的代码,我不知道,当我们使用session_id()之前session_start()。
<?php
if($_GET){
//defining the session_id() before session_start() is the secret
session_id($_GET['session_id']);
session_start();
echo "Data: " . $_SESSION['theVar'];
//use your data before below commands
session_destroy();
session_commit();
}else{
//common session statement goes here
session_start();
$session_id=session_id();
$_SESSION['theVar'] = "theData";
echo "your.php?session_id=" . $session_id;
}
?>
Run Code Online (Sandbox Code Playgroud)
我要你解释一下!不只是复制 php.net 的描述!
另一方面, session_id() 在哪里使用?!它的用途是什么?!先感谢您 !
我正在使用PHP 4+,我正在一个osCommerce项目中工作,我在网址中遇到会话ID,所以我只需要知道,这是一个很好的做法,在网址上显示会话ID?如果是,那么为什么?如果没有那么为什么?以及如何在URL中隐藏会话ID并在url中使用任何替换字符串?
在带有Jetty的Spring MVC 2.5中 - 可能有任何servlet容器 - 我希望使用RedirectView通过MagicAndView中视图名称的魔术"redirect:"前缀重定向到外部站点.
不幸的是,RedirectView使用response.encodeRedirectURL(),因此我的(其他想要的)会话ID被附加到URL.将会话ID携带到外部站点不仅存在安全风险,"; jsessionid = gagnbaba"字符串也可能被解释为其他站点上的ContextPath/PathInfo的一部分,从而导致URL错误.
除了实现我自己的ExternalRedirectView之外的任何"弹性"选项......还要破解ViewResolver来解释"externalRedirect:"前缀?(不需要cookie.)
莫里茨
在PHP购物车中遇到以下问题.
我的会话转储如下:
Array ( [username] => test@test.com [key] => 1 )
Run Code Online (Sandbox Code Playgroud)
购物车有三个按钮:
<form name='cartForm' action='cart.php' method='post'>
<input type='image' value='submit' name='continueshopping' src='x.jpg' />
<input type='image' value='submit' name='update' src='y.jpg' />
<input type='image' value='submit' name='checkout' src='z.jpg' />
Run Code Online (Sandbox Code Playgroud)
每当我按下其中一个按钮时,页面会重新加载并执行所需的操作(即删除或添加项目)...但是会话数组会更改为以下内容(取决于按下的按钮)
Array ( [username] => test@test.com [key] => continueshopping_y )
Array ( [username] => test@test.com [key] => update_y )
Array ( [username] => test@test.com [key] => checkout_y )
Run Code Online (Sandbox Code Playgroud)
[key]是保留字吗?为什么$ _SESSION ['key']的值会从只发布POST的表单中被覆盖?这是我们项目的问题,因为我们在[key]中存储了用户帐户ID,但每次在购物车中按下按钮时,该值都会被覆盖.
实际的代码很长,在这里发布它是不切实际的.不知道要发布什么,因为除了抓住session_id()之外,购物车永远不会与会话交互.真的,我只是想知道是否有人经历过类似的事情.我无法在本地服务器(PHP5)上重新创建问题,只存在于实时服务器(PHP4)上.
提前致谢.
我有一个登录页面,可在成功登录后设置会话变量。然后,登录页面重定向到管理页面。管理员页面能够读取会话变量。但是,当我执行一个在内容div中加载viewUsers.php的jQuery load()函数时,会话变量就消失了。奇怪的是,会话ID是相同的。
我在管理页面和viewUsers页面上都使用了var_dump()。管理页面显示了登录页面上的所有适当变量,但使用jQuery load()函数var_dump $ _SESSION调用的viewUsers页面为空白。$ _COOKIE ['PHPSESSID']的var_dump具有正确的ID,对我来说没有任何意义。
这就是我设置会话变量的方式。
$_SESSION['userID'] = $userInfo['ID'];
$_SESSION['userType'] = $userInfo['userType'];
$_SESSION['programID'] = $userInfo['programID'];
Run Code Online (Sandbox Code Playgroud)
这是jQuery
$("#content").load("viewUsers.php");
Run Code Online (Sandbox Code Playgroud)
所有页面的最顶部都有session_start()。当我尝试使用window.open和window.location而不是jQuery load()函数时,会话变量也不起作用。
即使我具有正确的会话ID,一些会话变量也会丢失。如果有人能对此有所启示,我将不胜感激!
截至目前,我正在填充隐藏字段,并使用post函数而不是load来解决它。我知道这不是最好的方法,但是这是我找出方法的唯一方法。
编辑: 这是读取会话变量正常的索引的顶部。
<?php
session_start();
//require("session.php");
if(!isset($_SESSION['userID'])){
header("location: ../login/index.php");
}
?>
Run Code Online (Sandbox Code Playgroud)
这是整个查看用户
<?php
session_start();
//foreach($_POST as $name => $value){
//$_SESSION[$name] = $value;
//}
//echo " session id " . $_COOKIE['PHPSESSID'];
var_dump($_COOKIE);
var_dump($_SESSION);
?>
<?php require("adminFunctions.php"); ?>
<h2>View Current Users</h2>
<?php require("userlinks.php"); ?>
<table id="userTable" class="tablesorter">
<?php getUsers($_SESSION['programID'], $_SESSION['userType']) ?>
</table>
<script type="text/javascript">
$('td[name="userID"]').hide();
//$("#userTable th").click(function(){
//color();
//colorTable(); …Run Code Online (Sandbox Code Playgroud) 是不是可以获得session_idPHP SESSIONS 中的所有列表?
注意:我需要在服务器中维护一些文件.一个文件等于一个会话.如果SESSION过期,我需要确定旧文件的行为.
谢谢大家的任何建议.
在构建通过STARTUPINFO中指定的CreateProcessAsUser和lpDesktop在用户会话中启动交互式进程的服务之后 - 是否可以动态更改进程正在执行的会话?
因此,如果我们在会话1中运行记事本而另一个用户在会话2中登录到同一台计算机,我们可以将记事本的ProcessId从1更改为2吗?我理解,完成此任务的良好遵循和理智的方法是在第2节中启动记事本,但是我们可以使用API调用来实现吗?
顺便说一句,我是用C#编写的,但使用pInvoke或低级语言我感觉很舒服.
我正在尝试使用HtmlUnit登录Facebook页面并查看其HTML内容.我正在尝试通过HtmlUnit填写登录凭据,但是当单击提交按钮时我看不到会话正在进行.
无法在htmlunit会话管理类中找到很多内容.我还附加了我正在使用的代码来尝试此问题.任何帮助赞赏!
WebClient webClient = new WebClient();
HtmlPage page1 = webClient.getPage("https://www.facebook.com");
List<HtmlForm> listF = page1.getForms();
HtmlForm form = null;
for(int i=0; i<listF.size(); i++)
{
if(listF.get(i).getId().equals("login_form"))
{
form = listF.get(i);
}
}
HtmlTextInput uName = form.getInputByName("email");
HtmlPasswordInput passWord = form.getInputByName("pass");
HtmlSubmitInput button = form.getInputByValue("Log In");
uName.setValueAttribute(FACEBOOK_UNAME);
passWord.setValueAttribute(FACEBOOK_PASS);
HtmlPage page2 = button.click();
Run Code Online (Sandbox Code Playgroud) 我正在切换到PDO预处理语句,我在获取和使用会话ID方面遇到了问题.
当客户注册时,session_id被设置为等于user_id(自动递增),并且当用户返回时,session_id以相同的方式设置.这在切换到PDO之前正常工作,但是现在session_id在任何后续页面上都没有被识别(它将'user_id'视为null)
我是否需要切换到使用PDO会话处理程序,还是有办法继续使用我熟悉的方法?
mysql - 这是我用来设置会话ID的代码(这个工作正常):
// Statements defining $user_name, $password and $hashedPassword (as shown below), and mysql_real_escape_string
// Insert statement
if($result) {
$qry="SELECT * FROM customer_info WHERE user_name='$user_name' AND password='".sha1($salt + $_POST['password'])."'";
$result=mysql_query($qry);
if($result) {
if(mysql_num_rows($result) == 1) {
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_USER_ID'] = $member['user_id'];
session_write_close();
exit();
} } }
Run Code Online (Sandbox Code Playgroud)
PDO - 这是我尝试的代码(会话ID未设置):
$user_name = $_POST['user_name'];
$password = $_POST['password'];
$hashedPassword = sha1($salt . $password);
$stmt = $conn->prepare('INSERT INTO customer_info (...) VALUES(...)');
$stmt->bindParam(':user_id', $user_id);
...
$insertResult = $stmt->execute();
if …Run Code Online (Sandbox Code Playgroud) 我在我的webapp中使用Apache Shiro.
我在会话中存储了一些参数,特别是存储在数据库中的对象的主键.
当用户登录时,我从数据库加载对象并将主键保存在会话中.然后在应用程序内,用户可以编辑对象的数据,并点击取消或保存按钮.
这两个按钮都会触发RPC,以便将更新的数据提供给服务器.然后使用存储在会话中的主键在数据库中更新对象.
如果用户在应用程序中保持活动状态(制作一些RPC),一切正常.但是如果他在3分钟内保持不活动状态并随后生成RPC,那么Shiro securityUtils.getSubject().getSession()将返回null.
会话超时设置为1,200,000毫秒(20分钟),所以我不认为这是问题.
当我浏览存储在会话管理器缓存中的会话时,我可以看到用户的会话,org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c但是当我尝试从cookie获取会话ID并调用 SecurityUtils.getSecurityManager().getSession(key)以获取会话时(其中key是SessionKey实现):我得到一个例外.
当我尝试从会话ID构建新主题时,我将丢失会话中保存的所有属性.
我很高兴发布一些代码来帮助解决问题,但我尝试了很多解决方法,我不知道从哪里开始......所以请让我知道你需要什么.
或者,如果有人知道一个比Shiro更好的文档框架我很满意(Shiro缺乏文档使得它真的太耗时)