質問

私は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にアップデートして、問題が解決された!

scroll top