如何在PHP中处理会话?

时间:2015-09-01 14:10:57

标签: php session session-cookies

我是会议中的新手,但我真的需要使用它们。 在很多示例中,我在session_set_cookie_params()之前看到了函数session_start()。但是当我以这种方式使用它时,我似乎并不像它那样工作。 当我在session_set_cookie_params()之后放置session_start()时,一切似乎都正常,但session_set_cookie_params()返回NULL。 你知道怎么做这个吗? 这是index.php

<?php
session_name('firstsession');
session_set_cookie_params(7200, '/', 'localhost', true, true);
session_start();

require_once('includes/header.php');
require_once('DatabaseConnectivityManager.php');
require_once('AuthenticationAuthority.php');
$dbManager = DatabaseConnectivityManager::getInstance();
$dbManager->initialize('localhost', 3306, 'admin', '123456789');
$connection = $dbManager->getConnection();
$authenticationAuthority = AuthenticationAuthority::getInstance(); 
if(isset($_SESSION['isLogged'] ) && $_SESSION['isLogged'] = true)  {
    echo 'Hello ';
?>
<br><a href="logout.php">Logout</a><br>
<?php
}
else {
    require('includes/loginForm.php');
    if($_POST) {
        if (empty($_POST['username']) || empty($_POST['password'])) {
            echo 'There is an empty field';
        }
        else{   
            if($authenticationAuthority->checkCredentials($_POST['username'], $_POST['password'])) {
                echo 'You are now logged in';
                $_SESSION['isLogged']  = true;
                header("Location: index.php");
            }
            else {
                echo 'Wrong pass or username';
            }
        }
    }       
} 

2 个答案:

答案 0 :(得分:0)

你的代码很好。 void session_set_cookie_params()不应该返回任何内容。这就是为什么您在manual中的函数名称前面看到void的原因。

答案 1 :(得分:0)

找到答案!我在使用localhost时必须使SECURE参数为FALSE。

    session_set_cookie_params(0, '/', 'localhost', true, true);