PHP セッション変数
アプリケーションを実行するときは、アプリケーションを開いて変更を加えてから閉じます。セッションによく似ています。コンピューターはあなたが誰であるかを知っています。ユーザーがアプリケーションをいつ開始し、いつ終了するかを認識します。しかし、インターネットには問題があります。サーバーはユーザーが誰で何をしているのかを知りません。これは、HTTP アドレスが状態を維持しないためです。
PHP セッションは、後で使用できるようにユーザー情報 (ユーザー名、購入したアイテムなど) をサーバーに保存することで、この問題を解決します。ただし、セッション情報は一時的なものであり、ユーザーがサイトを離れると削除されます。情報を永続的に保存する必要がある場合は、データをデータベースに保存できます。
セッションは、訪問者ごとに一意の ID (UID) を作成し、この UID に基づいて変数を保存することで機能します。 UID は Cookie に保存されるか、URL を通じて渡されます。
1. 会話を開始します
情報をセッションに保存する前に、まずセッションを開く必要があります。 PHP には、セッションを開始または継続するための session_start() 関数が用意されています。定義:
1 bool session_start( void )
呼び出しは次のとおりです:
<?php session_start();?> <html> <body></body> </html>
注:
(1) session_start() 関数は 100db36a723c770d327fc0aef2ce13b1 タグの前に配置する必要があります。つまり、この関数は出力の前に呼び出す必要があります。プログラムを作成するときに、誤って余分なスペースや復帰が入力されることがよくあります。この場合、エラーが報告されます。これには特別な注意を払う必要があります。 (騙されました)
(2) セッションの作成が成功したかどうかに関係なく、session_start() 関数は TRUE を返すため、例外処理を使用しても機能しません。
(3) 設定命令 session.auto_start を有効にして、この関数を実行する必要がないようにすることもできますが、この場合、各 php ページが実行されるときにセッションが開始または継続されます。
2. セッションの保存または読み取り
セッション変数を保存および読み取る正しい方法は、PHP の S ESSION 変数を使用することです。 SESSION変数。 _SESSION は PHP によって提供されるグローバル パラメータであり、セッションの保存と読み取りに特に使用されます。 (連想配列のキー名は通常の変数の命名規則と一致していることに注意してください)
セッションを保存するときに、セッションを直接割り当てることができます。
$_SESSION['シーズン'] = '秋'
上記は、キー名「season」、値「autumn」を持つセッション要素を設定します。読み取るときは、通常の配列要素を呼び出すのと同じです。
次の 2 つのコードは、セッション要素を保存および読み取る方法を示しています。
これは session1.php ファイルです:
<?php /** * Created by PhpStorm. * User: yuxiu * Date: // * Time: : */ if(isset($_POST['submit'])){ session_start(); //开始建立一个会话 $_SESSION['season'] = $_POST['season']; //存储会话数据 header("Location: session.php"); //应特别注意header()里的格式问题 } ?> <b>存储会话</b> <hr/> 选择需要设置的数据: <form name="form" method="post" action="" id="form" > <select name="season" id="season_select" > <option value="春天">春天</option> <option value="夏天">夏天</option> <option value="秋天">秋天</option> <option value="冬天">冬天</option> </select> <br/> <br/> <br/> <input type="submit" name="submit" value="submit"/> </form>
これは session2.php ファイルです:
<?php /** * Created by PhpStorm. * User: yuxiu * Date: // * Time: : */ session_start(); //建立或者继续一个会话 $season = $_SESSION['season']; //读取会话数据 echo "<b>读取会话</b><br/><br/>"; switch ($season) { case '春天'; echo '现在是绿意盎然的春天!'; break; case '夏天'; echo '现在是热情四溢的夏天!'; break; case '秋天'; echo '现在是丰收果实的秋天!'; break; case '冬天'; echo '现在是白雪皑皑的冬天!'; break; default ; echo '对不起,会话中没有数据 或者 不存在该对话 !'; } ?>
session1.php では、最初に session_start() を使用してセッションを作成し、次に配列割り当てを使用して送信された季節データを保存し、最後に header() 関数を使用して先頭に直接ジャンプします。 session2.php ファイルでは、セッションを継続し、セッション配列を使用してセッション情報を呼び出すために session_start() 関数も必要です。
3. セッションを破棄します
セッションが使用されなくなった場合は、手動でセッションを破棄する必要がありますが、PHP にはセッションを自動的に破棄する機能がありますが、これによりプログラムの効率が低下します。 unset() 関数または session_destroy() 関数を使用できます。
<?php unset($_SESSION['season']); ?>
または:
<?php session_destroy(); //注意,使用这个函数将重置session数组,即失去所有的已经储存的session数据 ?>