0

ユーザーが私のサイトの特定のページにアクセスすると、以下のスクリプトが 1 回実行されます。これは完全に機能しますが、一度実行した後、何らかの理由でセッションがクリアされ、「0」に設定されます。

セッション名は「user_zip」で、セッションを何らかの形でクリアしているコードは次のとおりです。

$user_zip_query = "SELECT * FROM dev_cities WHERE city_zip = '".$_SESSION['user_zip']."'";
$user_zip = mysql_query($user_zip_query);
$userziprow = mysql_fetch_assoc($user_zip);
$state = $userziprow['city_state'];
$county = $userziprow['city_county'];
$city = $userziprow['city_name'];

何がこれを引き起こしているのでしょうか?

セッションは、このコードで含まれているクラス ファイルで開始されます...

 public function __construct() {

        include_once("includes/userconfig.php");                  // include database constants        

        if ($this->checkDatabase()) {                   // check for database connection

            session_start();                            // create session
4

2 に答える 2

1

セッションを使用するために必要なことは

1セッションを開始する

session_start()関数はタグの前に表示される必要があります   。

2次のようなセッション変数の保存

    $_SESSION['bla']=blabla;

3セッションの破棄

     一部のセッションデータを削除するには、unset()またはsession_destroy()関数を使用できます。

良い読み物

  1. セッション処理
  2. PHPセキュリティガイド:セッション

ノート

  1. ext/mysqlプレフィックスmysql_で指定されたすべての関数を提供するPHP拡張機能全体は、PHP v5.5.0で正式に非推奨になり、将来削除される予定です。したがって、PDOまたはMySQLi

よく読んで

  1. mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。
于 2012-12-31T06:37:09.520 に答える
1

あなたのコードには、セッションをキャンセルしている引用符で囲まれているセッション内の引用符があり、これを次のように変更します。

$uzip = $_SESSION['user_zip'];
//highly recommend use add SQL injecton prevention here how ever
$user_zip_query = mysql_query("SELECT * FROM dev_cities WHERE city_zip = '$uzip'") or die(mysql_error());

$row = mysql_fetch_assoc($user_zip_query);
$state = $row['city_state'];
$county = $row['city_county'];
$city = $row['city_name'];
于 2012-12-31T06:29:01.737 に答える