このようなセッションを使用してURLの別のページに変数を渡しますが、別の変数を同じURLに連結して次のページで正常に取得できないようです
ページ1
session_start();
$event_id = $_SESSION['event_id'];
echo $event_id;
$url = "http://localhost/main.php?email=" . $email_address . $event_id;
ページ2
if (isset($_GET['event_id'])) {
$event_id = $_GET['event_id'];}
echo $event_id;
echo $event_id
は2ページでUndefined variable
を表示しますが、event_id
で$url
のみを使用する場合
$url = "http://localhost/main.php?event_id=" . $event_id;
それはうまくいきますが、URLで両方の変数を使用して、ページ2がそれらを取得できるようにする必要があります。
アンパサンド&
を使用して、変数を結合します。
$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
// ^ start of vars ^next var
これはあなたがやろうとしていることですが、セキュリティとエンコーディングの問題を引き起こすので、やらないでください。
$url = "http://localhost/main.php?email=" . $email_address . "&eventid=" . $event_id;
クエリ文字列内のすべての変数は、適切に送信されるようにurlencodeする必要があります。 URLは非常に漏れやすいため、URLでユーザーの個人情報を渡さないでください。 URLはログファイル、閲覧履歴、参照ヘッダーなどになります。リストはどんどん続きます。
適切なURLエンコーディングについては、 urlencode()
または http_build_query()
を使用して実現できます。次のいずれかが機能します。
$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);
または
$vars = array('email' => $email_address, 'event_id' => $event_id);
$querystring = http_build_query($vars);
$url = "http://localhost/main.php?" . $querystring;
さらに、$event_id
がセッション内にある場合、別のページからアクセスするために実際に渡す必要はありません。 session_start()
を呼び出すだけで使用可能になります。
最初の変数宣言は?
で始まる必要があり、追加の変数宣言は&
で連結する必要があります
非常に簡単ですが、別の人は、URLバーを介してセッション変数を渡してはいけないと言いました1.ヘッダーファイルに入れたときにヘッダーからウェブサイト全体にセッションが渡されるため、必要はありません2.セキュリティリスク
最初のページコード
$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);
URLバーから変数を取得するときの2ページ目は次のとおりです。
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['eventid']) && !empty($_GET['eventid'])){ ////do whatever here }
作成したセッションを適切に使用する場合は、上記のコードを無視して、2番目のページでセッション変数を呼び出します。たとえば、最初のページでセッションを作成すると、たとえば次のようになります。
$_SESSION['WEB_SES'] = $email_address . "^" . $event_id;
上記のコードですでにセッション変数に値を割り当てていることは明らかであり、サンプルweb_sesを使用したいだけでセッション名を呼び出すことができます。2番目のページで必要なのは、セッションを開始し、セッションがあり、変数をチェックして、それらで何でもします、例:
session_start();
if (isset($_SESSION['WEB_SES'])){
$Array = explode("^", $_SESSION['WEB_SES']);
$email = $Array[0];
$event_id = $Array[1]
echo "$email";
echo "$event_id";
}
セッションについて良いことを前に言ったように、ロードするすべてのページで呼び出されるヘッダーファイルにこのタイプのコードを入れると、Webサイト全体で実行できるので、いつでもどこでも変数を簡単に使用できます。お役に立てれば :)
<a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a>
複数の変数をあるページから別のページに渡す
isset($_GET['event_id']
をチェックしていますが、ハイパーリンクにget変数を設定していないため、email
を追加しています。
http://localhost/main.php?email=" . $email_address . $event_id
そして、リンクに別のGET変数を追加します
$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
"
引用符を使用している場合、文字列の連結に使用しませんでした
これには&を使用します。 &を使用すると、必要な数の変数を配置できます。
$url = "http://localhost/main.php?event_id=".$event_id."&email=".$email;
php.netから
警告スーパーグローバル$_GET
および$_REQUEST
はすでにデコードされています。 $_GET
または$_REQUEST
の要素でurldecode()
を使用すると、予期しない危険な結果が生じる可能性があります。
リンク: http://php.net/manual/en/function.urldecode.php
注意してください。