PHPのセッションのデータが失われたとのページで荷重WAMPserver2.0localhost
-
23-09-2019 - |
質問
私はPHPの認証システムの自分のウェブサイトのト$_SESSION可変となります。
形で提出のユーザー名とパスワードのファイル"login.php".では同様の取り扱いをさせていただきます:
<?php include '../includes/sessionstart.inc.php'; ?>
<?php ob_start(); ?>
if($_POST){
$q = mysql_query("SELECT id, company FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5($_POST['password'])."'");
if(mysql_num_rows($q) >= 1){
$f = mysql_fetch_Array($q);
$_SESSION['company'] = $f['company'];
$_SESSION['id'] = $f['id'];
$_SESSION['logedin'] = true;
session_write_close();
ob_clean();
header("Location: index.php");
}
その後、index.php が読み込まれるかどうかを判'logedin'はtrueです。
<?php include '../includes/sessionstart.inc.php'; ?>
<?php if(!isset($_SESSION['logedin'])) header('Location: login.php'); ?>
私の生産をサーバーですが、私のWampserverで帰に戻るlogin.php.とは思Wampserverは非常にゆっくりページの読み込み、こうしています。そのsession_write_closeの新しい概念として新しいセッションデータが保存される前に、ページ切り替えおいて接続されたことを示しています。
内容session_start.inc.php 単に:
<?php
session_start();
?>
使ってコードがあり、目で楽しみ舌で味わう極上の料理だけます。の問題も前を使い始めるなどのファイルです。
なんていうか私が悪いのでしょうか。が記載されていないのはなぜWampserver送信私のセッションデータのPHPファイルとは何ですか?
解決 5
私は最終的にこのバグを修正した長い時間後。
私はlocalhost WAMPでは、セッションデータはクッキーに保存されているので、セッションデータは、ページが読み込ま間で保存されず、ローカルホストに設定するクッキーのドメインがありません。
ソリューション:
「session.cookie_domainにより」「localhost」のためだけでなく、すべてのローカルドメイン名、のために空の文字列に設定する必要があります(ただし、ローカルIPアドレスの場合は空であってはならない):
<?php
ini_set('session.cookie_domain', (strpos($_SERVER['HTTP_HOST'],'.') !== false) ? $_SERVER['HTTP_HOST'] : '');
?>
のそれをここに掲載マルチンWiazowski に感謝します。
他のヒント
WAMPサーバーの2つの設定が設定されていないデフォルト $_SESSION
var.
クリアしました。ini 要は、以下の設定
C:\wamp\bin\apache\apache2.4.2\bin\php.ini
session.cookie_domain =
session.use_cookies = 1
session.save_path = "c:\wamp\tmp" ;ensure the \ is used not /
セッション試験-
load.php --負荷 $_SESSION
var.
<?PHP
session_start();
$_SESSION['SESS_MEMBER_ID'] = 'stored variable';
session_write_close();
header("location:print.php");
?>
print.php --print$_SESSION var.
<?PHP
session_start();
var_dump($_SESSION);
?>
スクリプトを実行し、ブラウザ var_dump()
をもたらす結果
へ c:\wamp\tmp
ファイルを含むセッションデータが表示されます。
まず第一に:。?インデックスlogedin
がログインしているユーザーを追跡するために奇妙なようだこれはちょうどSO上のタイプミス、または実際にコード-タイポ
セカンド(希望の動作に応じて)、ページのログインで保護さを作製するための別のアプローチを試してみてください。あなたのページはのようになるはずです。
<?php
include 'login.inc.php';
if(authorized()) {
// put some more script here, if needed
?>
// put some plain HTML here
<?php
}
?>
login.inc.php
がセッションを処理し、、クッキー。クライアントがすでにログインしている場合は特に、authorized
機能は、TRUEを返す必要があります。クライアントがログインしていない場合は、アクション$_SERVER['PHP_SELF']
と戻りFALSEでフォームを表示する必要があります。あなたはlogin_submit
などの提出入力を何かに名前を付ける場合は、検証login.inc.php
ハンドルを聞かせすることができます。
このように、あなたは、専用のログインページにユーザーを参照する必要はありませんし、ログイン後に、ユーザーが直接要求されたページを示しています。あなたは同様に、ログインによるクエリ文字列を永続化するために、このビットを微調整することができます。
を置き換えるようにしてください
if($_POST){...}
と
if( isset($_POST['username']) && isset($_POST['password']) ){...}
...デバッグ目的のために、少なくとも。これは、いくつかの異なる設定は、それが期待できないです非空で$ _POST配列を引き起こしている可能性があります。
また、あなたのコードはexit()
リダイレクト後header()
コールが欠落しているようです。 HTTPを送信するの場所のヘッダが自動的にスクリプトを停止しません。
私は/ローカルホスト上の開発のためのWAMPSERVERを使用して、この問題を抱えていました。私はラインでは
からsession.use_only_cookies
設定のいずれかでphp.ini
を変更する必要が
session.use_only_cookies = 1
と
session.use_only_cookies = 0
の説明の
予想通りデフォルトのクッキーベースのセッションを使用するには、働いていたが、私はクッキーレスソリューションが必要でした。テストの開始ページ:
<?php
// page1.php
ini_set('session.use_cookies', '0');
session_start();
$_SESSION['time'] = time();
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
セッションデータは、例えば、C:\wamp\tmp\sess_0rkdlonl5uia717rf03d4svs16
、WAMPSERVERの一時ディレクトリに作成され、正常に保存しました。上記のコードによって生成されたリンクは、(注記UIDは、セッションデータのファイル名と一致する)のようになります:
page2.php?PHPSESSID=0rkdlonl5uia717rf03d4svs16
しかし、先page2.phpは、セッションデータを取得しようとしながら、変数「時間」の未定義エラーを投げていた。
<?php
// page2.php
ini_set('session.use_cookies', '0');
session_start();
echo date('Y m d H:i:s', $_SESSION['time']);
echo '<br /><a href="page1.php?' . SID . '">page 1</a>';
?>
session.use_only_cookies
前にスクリプトのいずれかでsession_start();
のFALSEを設定することによります:
ini_set('session.use_only_cookies', '0');
またはphp.ini
でグローバルにそれを変更する:
; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combatting
; session hijacking when not specifying and managing your own session id. It is
; not the end all be all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 0
問題を解決します。
同じ問題に直面していましたが、それは
によって引き起こされていましたsession_regenerate_id(true);
だから私はちょうど私のコードからそれを削除します。
今WAMP 2.5にアップデートして、問題が解決された!