<?php
session_start();
include("connect.php");
$timeout = 60 * 30;
$fingerprint = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
if(isset($_POST['userName']))
{
$user = mysql_real_escape_string($_POST['userName']);
$password = mysql_real_escape_string($_POST['password']);
$matchingUser = mysql_query("SELECT * FROM `users` WHERE username='$user' AND password=MD5('$password') LIMIT 1");
if (mysql_num_rows($matchingUser))
{
if($matchingUser['inactive'] == 1)//Checks if the inactive field of the user is set to one
{
$error = "Your e-mail Id has not been verified. Check your mail to verify your e-mail Id. However you'll be logged in to site with less privileges.";
$_SESSION['inactive'] = …Run Code Online (Sandbox Code Playgroud) 我的网站上有一个用于邀请朋友的表单.这是一个简单的文本字段和一个提交按钮.如果有错误,我会重定向回此页面并显示错误消息(如果它们是会话变量集).
if (isset($_SESSION['invite_error'])) {
echo $_SESSION['invite_error'];
unset($_SESSION['invite_error']);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我离开此页面并返回到该页面,则仍会显示错误消息.如果我离开并再次回来,它将会完成.当我刷新那个页面时它是一样的... 1刷新不会摆脱它,但2会.我不能破坏整个会话,我只是想取消设置这个变量.PHP版本是5.2.5 build 6,注册全局变量是关闭的,我在这个页面的顶部调用了session_start(),我也尝试过使用no-cache标头.
编辑:添加完整代码.
<?php
ob_start();
session_start();
$user_id = $_SESSION['user_id'];
$user_name = $_SESSION['user_name'];
if ($user_id==null) header("Location: /login.php");
if (isset($_SESSION['invite_errors'])) {
$error = $_SESSION['invite_errors'];
unset($_SESSION['invite_errors']);
}
require_once("ui/header.php");
?>
<div id="invite" class="content">
<?php if($error) { ?>
<div class="errors round">
<?php echo $error ?>
</div>
<?php } ?>
<h3>Invite Your Friends</h3>
<div class="invite-form">
<form method="post" action="controllers/invite.php">
<div class="row">
<textarea class="txt-area" name="emails" id="emails" rows="5"></textarea>
<div class="tip">Separate multiple email addresses with ,</div>
</div>
<div class="row-submit">
<input …Run Code Online (Sandbox Code Playgroud) 如果这个问题已被提出,请原谅我.HttpContext.Current.Session["key"]返回一个对象,我们必须Type先将它强制转换为该对象才能使用它.我正在研究类型会话的各种实现
http://www.codeproject.com/KB/aspnet/typedsessionstate.aspx http://weblogs.asp.net/cstewart/archive/2008/01/09/strongly-typed-session-in-asp-net.aspx http://geekswithblogs.net/dlussier/archive/2007/12/24/117961.aspx
如果我们想要将一个新Type的对象添加到会话中,或者作为一个方法或一个单独的包装器,我觉得我们需要在SessionManager中添加一些代码(如果我错了,请更正).我以为我们可以使用泛型
public static class SessionManager<T> where T:class
{
public void SetSession(string key,object objToStore)
{
HttpContext.Current.Session[key] = objToStore;
}
public T GetSession(string key)
{
return HttpContext.Current.Session[key] as T;
}
}
Run Code Online (Sandbox Code Playgroud)
使用是否有任何固有的优势
SessionManager<ClassType>.GetSession("sessionString")
而不是使用
HttpContext.Current.Session["sessionString"] as ClassType
Run Code Online (Sandbox Code Playgroud)
SessionManager["sessionString"] = objToStoreInSession,但发现静态类不能有索引器.有没有其他方法来实现这一目标?
我的想法是创建一个SessionObject,它将存储Type和对象,然后使用密钥将此对象添加到Session(使用SessionManager).检索时,将所有对象强制转换为SessionObject,获取类型(比方说t)和对象(比如说obj)并转换obj为t并返回它.
public class SessionObject
{
public Type type {get;set;}
public Object obj{get;set;}
}
这不会起作用(因为返回签名将是相同的,但返回类型将是不同的).
是否有任何其他优雅的方式以更安全的方式在会话中保存/检索对象
我需要这个用于调试目的,需要转储所有变量.有没有办法获得所有变量?并且有没有办法在脚本结束后跟踪所有调用?没有改变我的代码.请注意,我不能使用xdebug或任何可安装的,因为我的脚本在主机上运行.
如何从模型访问会话?
我尝试使用:
public IQueryable<EstudentsViewModel> GetEstudentsProjected(decimal? Code)
{
.
.
.
decimal id;
id = (decimal)Session["Consul"];
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
出现:当前上下文中不存在名称"会话"
我正在尝试保存一个名为的变量persistent_data.
我通常使用session[:persistent_data]或cookies[:persistent_data],但我想使用localstorage代替.
我如何在Rails上做到这一点?
我已经将挑战响应方案实现为Ajax处理程序.出于某种原因,它在工作几个月后停止工作.调查问题表明,Context.Session[KEY]在挑战和响应呼叫之间失去了价值.
我把Session_Start和Session_End(和其他几个)在Global.asax.cs中的方法与一些记录那里,我看到一个新的在session_start事件与相同的会话ID解雇,没有Session_End中的事件
问题是:为什么IIS会丢失会话值?
更新:我尝试切换到SQLServer会话,但行为没有变化.在极少数情况下,会话按预期工作,不确定原因.我尝试了所有"会话丢失变量"故障排除指南我发现无效
更新2:我将问题缩小到缺少会话cookie,但修改my.browsers配置后几次尝试都没有解决问题.当我从浏览器调用ajax处理程序时,会话cookie"ASP.NetSessionId"按预期显示.我将站点和服务器的IIS设置中的cookie名称更改为"SessionId",但即使重新启动服务器,我仍然看到ASP.NET.我仍然想把这个赏金给予那些知道发生了什么的人.同时我通过在代码中设置会话cookie来解决这个问题.
Login.ashx的伪代码:
string login = GetParameter("login", context);
string passhash = GetParameter("pass", context);
string challenge = "" + Context.Session["CHALLENGE"];
if (!string.IsNullOrEmpty(challenge))
{
// this is the 'response' part
string challengeResponse = Crypto.GetChallengeResponse(Challenge, UserFromDB.PassHash);
if (challengeResponse == passhash)
{
// Great success, challenge matches the response
Log.I("Success");
return "SUCCESS";
}
else
{
Log.W("Failed to respond");
return "FAILED TO RESPOND";
}
}
else
{
// if passed login or session-stored challenge are empty …Run Code Online (Sandbox Code Playgroud) 我最近正在努力学习Spring MVC.似乎我不太了解@ModelAttribute注释和HttpSession的功能.
@SessionAttributes({"shoppingCart", "count"})
public class ItemController {
@ModelAttribute("shoppingCart")
public List<Item> createShoppingCart() {
return new ArrayList<Item>();
}
@ModelAttribute("count")
public Integer createCount() {
return 0;
}
@RequestMapping(value="/addToCart/{itemId}", method=RequestMethod.GET)
public ModelAndView addToCart(@PathVariable("itemId") Item item,
@ModelAttribute("shoppingCart") List<Item> shoppingCart, @ModelAttribute("count") Integer count) {
if(item != null) {
shoppingCart.add(item);
count = count + 1;
}
return new ModelAndView(new RedirectView("showAllItems")).addObject("count", count);
}
@RequestMapping(value="/deleteFromCart/{itemId}", method=RequestMethod.GET)
public ModelAndView deleteFromCart(@PathVariable("itemId") Item item,
HttpSession session) {
List<Item> list = (List<Item>) session.getAttribute("shoppingCart");
list.remove(item);
//session.setAttribute("shoppingCart", list);
Integer count = (Integer) session.getAttribute("count");
count …Run Code Online (Sandbox Code Playgroud) spring session-variables spring-mvc httpsession modelattribute
我有这个非常奇怪的问题,我确信我在这里遗漏了一些明显的东西.我有这两行:
HttpContext.Current.Session[listModelType + "ListModel"] = listModel;
listModel.ProductRows = new Collection<ProductRow>(listModel.ProductRows.Where(r => r.ParentRowId == 0).ToList());
Run Code Online (Sandbox Code Playgroud)
执行第二行后,我的会话对象也会更新(根据Visual Studio中的"Watch")
我在这里错过了什么?
我试过了
int i = 0;
HttpContext.Current.Session["i"] = i;
i++;
Run Code Online (Sandbox Code Playgroud)
和HttpContext.Current.Session ["i"]保持为0.
我想知道使用asp.net会话将变量从页面传递到页面的问题是什么.
我已经将代码删除到只有一个文本框,以查看最新情况.我只是想获取文本框的值并将其显示在确认页面上.单击该按钮时,它会将我转移到第二页,但标签为空白.是的,我的帖子后面的网址指向第二页.
这是按钮点击:
protected void submit_Click(object sender, EventArgs e)
{
string name = txtFirstName.Text.Trim();
Session["name"] = name;
}
Run Code Online (Sandbox Code Playgroud)
这是第二页的页面加载:
protected void Page_Load(object sender, EventArgs e)
{
lblName.Text = (string)(Session["name"]);
}
Run Code Online (Sandbox Code Playgroud)
除非我一直在看这个并且错过了什么.我已经从MSDN上阅读了"如何:从会话状态中读取值".
asp.net ×4
session ×4
c# ×3
php ×3
.net ×1
asp.net-ajax ×1
debugging ×1
html5 ×1
httpsession ×1
login ×1
ruby ×1
security ×1
spring ×1
spring-mvc ×1
variables ×1