2010-11-23 25 views
2

私のログインスクリプトでは、人々がログインしたままにしておきたいかどうかをチェックできるチェックボックスを入れました。 "stayin"というチェックボックスに名前を付けました。ログイン時のセッションの有効期限を設定する

ユーザーがログインページのインデックスに直接アクセスすると、セッションが既に設定されている(セッションが終了すると、またはブラウザがシャットダウンしたときに期限切れになる)という問題があります。セッション履歴の設定がうまくいかなかったため、「ログインしてください」とマークし、ページをブラウズしてからブラウザをシャットダウンして戻ったとします。セッションは常に、インデックススクリプトによって特定の有効期間なしに設定されます。誰もがいつもログインしたいとは思っていないので、session_start()を使う前に "session_set_cookie_parameters"を "never"に設定することはできません(session_set_cookie_paramsがスクリプトAFTER session_start()(Iこれが本当にうまくいくかどうかわからない))。

インデックススクリプトでは、単にsession_start()を使用します。 「ユーザー名」の値があるかどうかを確認し、ユーザーのログイン先をリダイレクトします。 とアクションスクリプトのために:

<?php 
session_start(); 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
session_set_cookie_params(999999999,"/path"); 
} 
?> 

私はすべてのスクリプトの最上部にあるのsession_start()を使用します。 PHPバージョン4.4.9を使用しています。

答えて

0

AFAIK session_set_cookie_params()は、スクリプト実行中のセッションクッキー長さだけを変更します(http://www.php.net/manual/en/function.session-set-cookie-params.php参照)。これを永久に変更する唯一の方法は、php.iniファイルのエントリを変更することですが、すべてのセッションに長いタイムアウトが必要です。サーバー側のセッションを使用するのではなく、クライアント側のCookieを使用していますか?もしそうなら、ユーザがチェックボックスにチェックを入れたかどうかに基づいて、setcookie()を使って個々にクッキーの寿命を設定することができます。

<?php 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
    setcookie('logincookie', true, 999999999, '/path'); 
} 
?> 
0

ベストな方法をセッションクッキーの有効期限はどのようにセットアップする:

$cookie = session_get_cookie_params(); 
session_set_cookie_params(2851200, $cookie['path'], $cookie['domain'], 
$cookie['secure']); 
関連する問題