【发布时间】:2010-02-27 08:21:14
【问题描述】:
我正在尝试创建一个使用 ajax 的简单登录系统,但我遇到的问题不会设置 $_SESSION。
login.js:
$('#bt-login').click(function(){
var login = $('#login').serialize();
$.ajax({
type: "POST",
url: 'widgets/Login/loginFunction.php',
data: login,
cache: false,
success: function(msg){alert(msg)}
});
});
loginFunction.php:
<?php
include_once '../../dbConfig.php';
include_once '../../config.php';
session_start();
$usr = mysql_escape_string($_POST['username']);
$pass = mysql_escape_string($_POST['password']);
$remember = intval($_POST['rememberMe']);
$row = mysql_fetch_assoc(mysql_query("SELECT usr, id FROM members WHERE usr='".$usr."' AND pass='".md5($pass)."'"));
if($row['usr']){
$_SESSION['usr'] = $row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $remember;
setcookie('DirtPileGames',$remember);
}
?>
现在由于某种原因 loginFunction.php 没有设置 $_SESSION。我进行了刷新并且 $_SESSION 是空白的。
有没有人知道为什么这不起作用。
【问题讨论】:
-
这是我到目前为止所知道的。我正在使用 session_name 函数,因此它使用我想要的名称创建一个 cookie。当 ajax 运行时,它将创建一个名为 PHPSESSID 的不同 cookie。所以我只需要弄清楚如何在不制作第二块饼干的情况下给它命名。哦,是的,如果我不包含 session_name,那么脚本确实可以正常工作。
-
好吧,我想我已经明白了。我不得不将 session_name 和 session_set_cookie_params 放在主文件和 ajax 文件上。我不知道这是否正确,但它确实有效。