Jos*_*son 7 php session localhost
我在我的PHP代码中设置了这样的会话:$_SESSION['user_id'] = $login;
这似乎工作正常,同时上传到我的服务器并进行不同的页面,但是当我在我的本地机器上测试网站时,会话似乎在离开脚本后立即被取消在哪里设置.
我正在使用XAMPP和完全相同的代码在我的本地机器上进行测试.
我不确定为什么会出现这个问题,并且非常感谢任何有用的答案.
$_SESSION['user_id'] = $login;
echo '<META HTTP-EQUIV="refresh" content="0;URL=../home.php">';
Run Code Online (Sandbox Code Playgroud)
这是我登录的整个函数(它是类的一部分):
public function loggingIn(){
session_start();
$db = new Database('localhost','root','','userdata');
$userFunctions = new Users($db);
$username = $_POST['usernameInput'];
$password = $_POST['passwordInput'];
if(empty($username) || empty($password)){
$this->errors['u&p'] = 'Please Enter Your Username AND Password';
$this->printE();
} elseif($userFunctions->user_exists($username)===false){
$this->errors['nm'] = 'That Username/Password Combination Is Not Valid';
$this->printE();
} else {
$login = $userFunctions->login($username, $password);
if($login === false){
$this->errors['nm'] = 'That Username/Password Combination Is Not Valid';
echo 'Login Failed!';
} else {
if(!$userFunctions->economyTableExistsForUser($login)){
$userFunctions->createEconomyTableForUser($login);
}
if(!$userFunctions->schoolTableExistsForUser($login)) {
$userFunctions->createSchoolTableForUser($login);
}
$_SESSION['user_id'] = $login;
echo $_SESSION['user_id']; // working fine
header('Location: ../home.php');
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们猜测你的家用机器没有:
session.autostart = On
在你的php.ini中,而你的另一台机器显然是.
确保您已在PHP代码中设置:
session_start();
如果你不这样做,那么你的会话就不会开始,除非我的第一个推测是真的.
此外,您必须在localhost上检查PHP版本并在php.ini中设置.确保存储会话文件的目录是可写的,并且会话文件确实存在.
您最好使用PHP解决方案进行重定向:
header("Location: /");
exit();
Run Code Online (Sandbox Code Playgroud)
PHP具有修改HTTP标头的功能.他们中有一些:
换行符和空格可能是个问题,但也有不可见的字符序列Warning: Cannot modify header information
,如UTF-8 BOM(字节顺序标记).尝试重新保存您的文件,确保它保存为UTF-8 (no BOM)
.
要正确调试代码,请确保PHP显示所有警告和通知.在会话开始之前运行它:
ini_set('display_errors', -1);
Run Code Online (Sandbox Code Playgroud)
您还必须检查session.gc_maxlifetime
设置:
session.gc_maxlifetime
session.gc_maxlifetime指定数据被视为"垃圾"并清理的秒数.在会话开始期间发生垃圾收集.
要在Sublime Text中查看空格,请编辑设置:
// Set to "none" to turn off drawing white space, "selection" to draw only the
// white space within the selection, and "all" to draw all white space
"draw_white_space": "selection",
Run Code Online (Sandbox Code Playgroud)
您可以在Preferences-> Settings Default中进行设置.如果您编辑用户设置首选项 - >设置 - 用户并按以下方式添加行:
{
"font_size": 10,
"draw_white_space": "all"
}
Run Code Online (Sandbox Code Playgroud)
还要确保它显示所有其他特殊字符以正确调试代码!
最后session_write_close();
在重定向之前尝试添加.
在您的PHP文件中设置,之前session_start();
,session.save_path = "/home/username/tmp";
指令.tmp
在public_html之外创建dir .确保tmp
dir具有chmod 770并使用相同的用户/组权限创建.ls -lsa
在你的主目录中运行,检查新目录是否与其他目录具有相同的用户/组,例如public_html.如果没有,请确保tmp
通过运行以root身份更改权限chown username:groupname /home/username/tmp
.
归档时间: |
|
查看次数: |
29410 次 |
最近记录: |