0

Windows Server 2008 で php を使用し、MS SQL SERVER へのデータ接続を使用し始めました。過去に、Apacheとmysqlでそれを行いました。しかし、今は変更したため、セッション変数が機能しなくなりました。サーバー上のセッション ファイルには、セッション変数が 1 つだけ格納されています。複数のファイルに複数のセッション変数がありますが。保存される唯一の行は次のとおりです。

if (!isset($_SESSION["language"])){$_SESSION["language"] = 
substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);}

私のファイルで:

language|s:2:"nl";

アプリケーションにログインすると、次のセッション変数が保存されます。

$result = sqlsrv_query($conn,$sql,$params,$options);
$numrows = sqlsrv_num_rows($result);
$row = sqlsrv_fetch_array($result);
if ($numrows > 0) {
    $_SESSION['loggedin']= TRUE;
    $_SESSION['username']= $row['username'];
    $_SESSION['name']= $row['firstname'].' '.$row['lastname'];
    $_SESSION['language']= $row['language'];
    //if ($row['admin'] == 1){$_SESSION['admin']= TRUE;}
    //if ($row['all_orders'] == 1){$_SESSION['allorders']= TRUE;}
    //if ($row['validate'] == 1){$_SESSION['validate'] = TRUE;}
    echo 'Welcome '.strtoupper(trim($_SESSION['name']));    }
else {
    echo 'Login niet correct '.$username.' '.$password; };

しかし、ファイルにはこれらのセッション変数が見つかりません。それらはどこにも保存されていないため、他のページで呼び出すことはできません。誰でも思いついた。

4

1 に答える 1

1
session_start();//session_start — Start new or resume existing session 
$result = sqlsrv_query($conn,$sql,$params,$options);
$numrows = sqlsrv_num_rows($result);
$row = sqlsrv_fetch_array($result);
if ($numrows > 0) {
    $_SESSION['loggedin']= TRUE;
    $_SESSION['username']= $row['username'];
    $_SESSION['name']= $row['firstname'].' '.$row['lastname'];
    $_SESSION['language']= $row['language'];
    //if ($row['admin'] == 1){$_SESSION['admin']= TRUE;}
    //if ($row['all_orders'] == 1){$_SESSION['allorders']= TRUE;}
    //if ($row['validate'] == 1){$_SESSION['validate'] = TRUE;}
    echo 'Welcome '.strtoupper(trim($_SESSION['name']));    }
else {
    echo 'Login niet correct '.$username.' '.$password; };

if ($numrows > 0){ return TRUE;} を取得している場合は、session_start(); が原因である必要があります。セッション値を保存できません。

于 2013-06-27T09:06:07.680 に答える