标签: session-variables

PHP会话变量未保留

我无法在设置它们的页面上使用会话变量,它们就像非会话变量一样.我在其他六个类似的论坛上发现了一个类似的问题,但在其他案例中的答案总是不适用.

这是我的文件:

sess1.php

<?php
session_start();

session_register("userid");
session_register("textvar");

$_SESSION['userid'] = 10333 ;
$_SESSION['textvar'] = TextVariable ;

echo "<p>User ID is: " . $_SESSION['userid'] . "</p>" ;
echo "<p>Another variable is: " . $_SESSION['textvar'] . "</p>" ;
?>
<p>Go to the <a href="sess2.php">next page</a>.</p>
Run Code Online (Sandbox Code Playgroud)

并且, sess2.php

<?php
session_start();

echo "<p>The userid session variable is: " . $_SESSION['userid'] . "</p>";
echo "<p>The other session variable is: " . $_SESSION['newvar']. "</p> ";
?>
Run Code Online (Sandbox Code Playgroud)

每种情况下的浏览器输出是:

sess1.php

用户ID是:10333

另一个变量是:TextVariable

转到[下一页].

并且, sess2.php

userid会话变量是:

另一个会话变量是:

转到[最后一页].

有些事情不是: …

php session session-variables

7
推荐指数
2
解决办法
9657
查看次数

在PHP SESSION中缓存数据,还是每次从db查询?

它是"更好"(更高效,更快,更安全等)到(A)缓存数据,用于$ _SESSION数组中的每个页面加载(但仍然查询表以获取标记以重新加载数据),或者(B)每次从数据库加载它?

我正在使用缓存方法(A),但我担心有数百个用户,内存可能会成为一个问题?它只是简单的数据,如名字,姓氏,生日等.

无论使用哪种方法,仍然会运行查询.思考?

php mysql caching session-variables

7
推荐指数
1
解决办法
3358
查看次数

我应该在asp.net中声明一个会话变量

我正在构建一个Asp.net应用程序.我需要在会话中保存HashTable.

在页面加载我正在写

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       Session["AttemptCount"]=new Hashtable(); //Because of this line.
    }   
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当用户刷新页面时,会话["AttemptCount"]也会刷新.我想知道我应该在哪里申报

Session["AttemptCount"]=new Hashtable();
Run Code Online (Sandbox Code Playgroud)

所以我的看法不会被彻底改变.

编辑在Global.asax中,只要用户打开网站,此会话就会开始.我想仅在用户转到特定页面时才创建此会话.即Login.aspx

.net c# asp.net session session-variables

7
推荐指数
1
解决办法
3万
查看次数

会话对象不更新ASP.NET

我在代码的一个时刻设置了一个会话对象:

Session("my_name") = "Dave"
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中,我给用户一个更新此对象的机会:

Session("my_name") = TextBox1.Text
Run Code Online (Sandbox Code Playgroud)

我重新加载我的页面并显示一个像这样的小问候:

Label1.Text = "Hello" & CStr(Session("my_name"))
Run Code Online (Sandbox Code Playgroud)

结果是:"Hello Dave"无论我改变Session("my_name")也是如此.

编辑:这是我写的一个完整的代码隐藏演示:

Public Class WebForm1
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1)
    If Page.IsPostBack = False Then
        Session("my_name") = "Dave"
    End If
    Label1.Text = CStr(Session("my_name"))
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Session("my_name") = TextBox1.Text
End Sub
Run Code Online (Sandbox Code Playgroud)

结束班

.net asp.net session session-variables session-state

7
推荐指数
1
解决办法
6292
查看次数

在会话变量中存储数据库连接

可能重复:
无法在php中的会话中传递mysqli连接

我们中的许多人编写了需要数据库的PHP应用程序; 主要是MySQL,但我经常使用非常小的MS Access数据库,因为技术能力较差的人可以下载调整它们/保存备份/等等.在他们自己(这是否正确,我不知道).

我注意到的是,花了很多时间来连接和运行一些相同的查询.因此,我有一个有趣的想法:存储连接和可能的结果集,这些结果集在$_SESSION变量中大部分是静态的,以减轻用户导航网站时的负担.

显然这样做需要很多考虑.在会话被销毁时关闭连接的事情只是一个开始.

我的问题归结为:这真的有可能吗?如果是这样,我应该注意哪些事情(除了会话固定,因为它是适用于所有会话的自身问题)?

php database session-variables

7
推荐指数
2
解决办法
2万
查看次数

如何为在同一服务器上运行的不同ColdFusion应用程序实现单点登录?

我有多个CF应用程序在相同的域名下运行在同一台服务器上.其中之一,我们称之为Portal,旨在成为其他应用程序的单点登录,让我们称之为AtlasP-Body.通常,您会在session范围中设置一些变量来处理登录信息:

function Login()
{
    session.auth = structNew();
    session.auth.isLoggedIn = true;
    session.auth.id = GetCurrentUserId();
}
Run Code Online (Sandbox Code Playgroud)

但会话范围仅在一个应用程序中共享,而不是在整个服务器中共享.这意味着登录Portal的任何用户都将保持登录状态,但如果他们尝试导航到AtlasP-Body,他们将不得不再次登录.

在这种情况下,我将如何"共享"会话范围,以便服务器上的所有应用程序都可以访问它?我能想到的唯一方法是使用客户端变量并设置数据存储,以便在应用程序之间共享.然后代码变成:

function Login()
{
    client.auth = structNew();
    client.auth.isLoggedIn = true;
    client.auth.id = GetCurrentUserId();
}

function Logout()
{
    structDelete(client, "auth");
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是,因为客户端变量在会话结束时没有被清除,所以我们必须在OnSessionEnd处理程序中手动清除它.

这是处理ColdFusion中单点登录的最佳方式吗?如果是这样,使用客户端变量有什么缺点,或者需要注意缺陷吗?

更新:我只是测试客户端变量法,它看起来像只hitcount,timecreated,lastvisit,和urltoken应用程序之间共享,所以我又回到了起点1.

authentication coldfusion session-variables single-sign-on coldfusion-9

7
推荐指数
1
解决办法
2833
查看次数

如何在登录后返回CakePHP中的referer页面

回到referer页面时遇到问题:

first url: http://site.com/venue/apartments/1564/venue-name
referer url: null
Run Code Online (Sandbox Code Playgroud)

在这个页面我可以编辑内部的东西,所以我有一个login按钮去登录页面,成功登录后,我想转回到first url.

second url: http://site.com/users/login
referer url: http://site.com/venue/apartments/1564/venue-name
Run Code Online (Sandbox Code Playgroud)

当我尝试登录时,由于CakePHP操作规则,我必须刷新登录页面以检查凭据,problem从这里开始:

third url: http://site.com/users/login
referer url: http://site.com/users/login
Run Code Online (Sandbox Code Playgroud)

通过刷新页面,并检查控制器的login操作中的凭据users我得到的是我之前的相同页面,现在我不能回到first url.

我通过在AppController中设置会话变量来尝试一些解决方案,该变量检查我是否不在login操作页面中并执行此操作:

AppController.php

public function beforeFilter () {
    $this->setRedirect();
}

public function setRedirect () {
    if ($this->request->params['controller'] != 'users' && $this->request->params['action'] != 'login') {
        $this->Session->write('redir', array('controller'=>$this->request->params['controller'], 'action'=>$this->request->params['action'], implode($this->request->params['pass'], '/')));
    }
}
Run Code Online (Sandbox Code Playgroud)

通过测试会话var,debug($this->Session->write('redir'));一切看起来都很完美,直到我开始login行动:

UsersController.php

public function login () {
    if …
Run Code Online (Sandbox Code Playgroud)

authentication cakephp login session-variables referrer

7
推荐指数
2
解决办法
2万
查看次数

尽管"SET client_min_messages TO WARNING"之前的INFO输出

CentOS 6.5上的postgresql-9.0.15.我有一个输出INFO消息的plperlu函数.我想在测试期间抑制它(使用psql,其行为如下),但我似乎甚至无法从pgAdminIII(win2003的1.18.1)查询窗口中执行此操作:

SET client_min_messages TO WARNING;
select my_info_outputting_function('lalala')
Run Code Online (Sandbox Code Playgroud)

我运行它并查看"消息"选项卡,这是我的INFO消息.

(这可能类似于在运行psql脚本时如何抑制INFO消息,但我不想为我的整个会话禁用INFO消息,只是其中的一部分,然后将最小值设置为NOTICE.)

我上面的代码片段出了什么问题?client_min_messages不适用于pl/perlu函数吗?

更新:进一步调查后,即使使用plpgsql函数,似乎也会发生这种情况,而不仅仅是plperlu函数:

create or replace function my_info_outputting_function() returns void as $$
begin
    raise INFO 'this should not appear...';
    return;
end;
$$ language plpgsql;
SET client_min_messages TO WARNING;
select my_info_outputting_function();
Run Code Online (Sandbox Code Playgroud)

我在pgAdminIII查询窗口中运行上面的代码片段,并在"消息"选项卡中显示"不应出现此内容".Quoi?

更新2:我还尝试了log_min_messages以防万一.相同的行为.

postgresql logging error-logging session-variables postgresql-9.0

7
推荐指数
1
解决办法
1万
查看次数

为所有用户创建全局会话

我正在使用php 5.4

会话变量$_SESSION['name']用于存储数据,以便数据可以在任何将来的请求中访问,但仅对用户

是唯一的 是否可以创建类似于会话变量的内容,所有请求都可以访问但是不管是哪个用户?换句话说,一个不是用户唯一的会话变量

目前我正在使用MySQL数据库来存储临时数据,但我认为如果这Global Session for all users是可能的,它会提供一些性能改进

我想存储一些非常小的数字,如4位数字

php session-variables

7
推荐指数
1
解决办法
8215
查看次数

如何在PHP中有效防止跨站点请求伪造(CSRF)

我试图防止CSRF通过以下方式:

  1. $_SESSION['token']在每页开头生成A. 我已经知道使用$_COOKIES完全错误,因为它们是针对每个请求自动发送的.

  2. 在每个中<form>,<input type="hidden" name="t" value="<?php echo '$_SESSION['token']; ?>">附加以下输入:

  3. $_SESSION['token'];验证与$_POST['t']

现在我有几个小问题:

  • 这是防止CSRF的好方法吗?如果没有请解释.
  • 当打开另一个页面并设置相同的$_SESSION变量时,前一个(仍然打开的)页面变为无效,如何防止这种情况?
  • 对于表单这个方法很明确,但如何处理普通链接?是否有必要将令牌附加到每个链接?

非常感谢你提前.

php security session session-variables csrf

7
推荐指数
1
解决办法
2569
查看次数