2

警告:重複ではありません。この問題は見つかりません。

localhost でウェブサイトをテストおよび構築しています。ログインページに次のコードがあり、ユーザー ID Cookie がある場合にユーザーをプロファイルページに送信し、IP は Cookie が言うべきものと同じです。

if($_COOKIE["IPcookie"] == $_SERVER['REMOTE_ADDR']) {
    $cookieresult = mysqli_query($connection, 'SELECT COUNT(`ID`) AS count FROM users WHERE username="$_COOKIE["usercookie"]" AND `active`="1"');
    if($cookieresult == 0) {
        $loginquery = mysqli_query($connection, "SELECT * FROM users WHERE username=" .$_COOKIE['usercookie']);
        $row5 = mysqli_fetch_assoc($loginquery);
        $dbIDlogin = $row5['ID']; 
        $_SESSION['userID'] = $dbIDlogin;
        header('Location: /userprofile.php');
    }

ただし、これらの Cookie を使用してユーザー プロファイルにアクセスすると$_SESSION['userID']NULL. なぜ「時々」が$_SESSION行くのか理解できないようですNULL。私はそれにパターンを見つけることができないようです。1 人のユーザーにログインし、プロファイル ページのすべてのリンクをクリックして、Web サイトのさまざまな領域に移動し、loginuser.php(上記のファイル) に戻ります。あるユーザーでは機能しますが、別のユーザーでは機能しません。それは完全にランダムのようで、私を混乱させます。ユーザー間で変更される理由は考えられません。これを引き続きテストして、パターンを見つけられるかどうかを確認しますが、すでに数時間入れているため、完全にランダムに見えます.

私の問題は、次のいずれでも解決されないようです。

localhost で WAMPserver 2.0 を使用すると、ページのロード間で PHP SESSION データが失われる - php.ini を確認したところ、これらのコード行が含まれていました (別の tmp ファイルではありますが)。$_SESSION 変数をテストする選択された回答のサンプルコードは魅力のように機能します。私のコードはそうではありません。

PHP セッションが保存されていない Mysession_save_path()は書き込み可能です。

ページ間で PHP セッションが保存 されない PHP セッション データが保存され ない サーバーではなく、localhost にいます。

session_start();session_start();最初にあるページでのみ参照されるテンプレートを除いて、すべてのページにあります(session_start();テンプレートにある場合、セッションがすでに開始されている方法に関するエラーが発生するため)。

更新:パターンがあるかもしれません。文字を含むユーザー名を持つユーザーの情報は保存されません。これらのユーザーはすべて、ユーザー名が「1」や「9」ではなく「ダミー」や「eport」などの単語であるため、長いユーザー名を持っています。1 と 9 では機能しますが、dummy と eport では機能しません。これらはすべて常に数字である ID によって識別されるため、これは意味がありませんが、これはパターンのように見えます。

更新 (userprofile.php からの関連コード):

<?php

$userID = $_SESSION['userID'];
var_dump($_SESSION['userID']);


//get.
$totalquery = mysqli_query($connection, "SELECT * FROM users WHERE ID='$userID'");
$arrayquery = mysqli_fetch_assoc($totalquery);
$username = $arrayquery['username'];

//Firstname
$firstname = $arrayquery['firstname'];
echo 'Welcome ' .  $firstname;
//Lastname

?>
4

3 に答える 3

0

誰かが将来それを必要とするか、興味を持っていた場合、これがコードの答えです。元のコードのすべてが何をしていたのかはわかりませんが、振り返ってみると、おそらくもっと SQL 構文を勉強する必要があります。助けてくれてありがとう、マイク。

if(isset($_COOKIE["usercookie"])) {
    if(isset($_COOKIE["IPcookie"])) {
        echo('Cookie detected, processing, wait a second.');
        if($_COOKIE["IPcookie"] == $_SERVER['REMOTE_ADDR']) {
            $cookieusername = $_COOKIE["usercookie"];
            $cookieresult = mysqli_query($connection, "SELECT * FROM users WHERE username='$cookieusername' AND active=1");

            if(!$cookieresult or mysqli_num_rows($cookieresult) == 0) {
                echo('We really don\'t believe your cookie is real, sorry.');           
            }
            else {
                $loginquery = mysqli_query($connection, "SELECT * FROM users WHERE username='$cookieusername'");
                $row5 = mysqli_fetch_assoc($loginquery);
                $dbIDlogin = $row5['ID']; 
                $_SESSION['userID'] = $dbIDlogin;
                session_write_close();
                header('Location: /userprofile.php');
            }   
        }   
        else {
            echo('We don\'t currently believe your cookie is real, sorry.');

        }
    }
    else {
        echo('We don\'t believe your cookie is real, sorry.');

    }
}
于 2013-08-13T01:10:25.477 に答える
0

if文に入るかどうかをチェックします。そうでない場合は、php.ini の「output_buffering」が「ON」に設定されているかどうかを確認してください。

于 2013-08-13T01:32:29.793 に答える