3

データベースからデータを取得するには、別のページにログインの詳細が必要です。基本的に、ログインしているユーザーの詳細を含む編集可能なフォームを表示する必要がありますsession_register()。login.phpページにユーザー名を保存しようとしました。しかし、何らかの理由$_SESSION[]で、edit.phpページで使用しているユーザー名を表示できません。関数の後でこれも行っていsession_start()ます。

私はphpを初めて使用するので、セッションを誤解したかどうかわかりません。または、ログインの詳細を渡す他の方法はありますか?

前もって感謝します

私のコード:

**Login.php**
      <?php
       $userName = $_POST['username'];
      $password = $_POST['password'];
      //Connect to the database
      //query the database
        if($rows==1)
       {
      session_start();
       $_SESSION['user']=$userName;
     header("location:edit_user.php");
     }
      else
      {
     echo 'Data Does Not Match <br /> Re-Enter UserName and Password';
     }
     ?>

**In edit.php**
    <?php
    session_start();
    if(!isset($_SESSION['user']))
   {
    header("location:login_form.php");
   }
   else
   {
    echo $_SESSION['user'];
    }
    ?>
4

4 に答える 4

3

まず、session_start()スクリプトを使用するスクリプトの最初に配置するようにしてください。呼び出す前にブラウザに出力することはできません。これには、開始タグsession_start()の前にスペースまたは新しい行が含まれます。<?php

それで:

<?php
session_start();
...

次に、リダイレクト後にスクリプトを終了するようにしてください。次に例を示します。

header("location:edit_user.php");
exit();

これにより、リダイレクトが実行された後にコードが実行されないことが保証されるため、セッションが設定解除されたり、セッション変数が誤って変更されたりすることはありません。

于 2012-08-17T13:41:01.977 に答える
1

今後の参考のために、質問をするときにコードの一部を投稿してください。より具体的なケースでは、誰もがあなたに答えを与えるのに役立ちます。

<?php
session_start();

if(!isset($_SESSION['Foo']))
{
    $_SESSION['Foo'] = "Bar";
}
?>

ソース: http: //php.net/manual/en/features.sessions.php

于 2012-08-16T17:08:38.083 に答える
1

session_register()非推奨の関数です。$_SESSION["bar"] = "foo"何かを保存するために使用するだけです。

于 2012-08-16T17:00:48.113 に答える
0

このようにデータベースからデータを取得できます

//start connection
$connect = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD);
if(!$connect){
    die("Database connection Error".mysql_error());
}

//select database
$db = mysql_select_db(DB_NAME);
if(!$db){
    die("Database selection Error".mysql_error());
}

//get data
$login = mysql_query("SELECT * FROM TABLENAME where user_id={$_SESSION['user_id']}");
$login_data = mysql_fetch_array($login);

これで、$ login_data配列には、テキストフィールド値を形成するためにポイントできるユーザーの詳細が含まれます。

$ _session ['user_id'] = $ login_data ['user_id']値を先に割り当てる必要があります。この値は、セッション全体を通じて$_SESSIONグローバル変数に残ります。

于 2012-08-16T17:41:04.057 に答える