回答:
HTML / HTTPはステートレスです。つまり、前のページで行った/見たことは、現在のページとはまったく関係がありません。セッション、Cookie、GET / POST変数などを使用する場合を除きます。セッションとCookieは非常に使いやすく、セッションはCookieよりはるかに安全です。より安全ですが、完全に安全ではありません。
セッション:
//On page 1
$_SESSION['varname'] = $var_value;
//On page 2
$var_value = $_SESSION['varname'];
配列session_start();
にアクセスする$_SESSION
前、および出力がブラウザーに送信される前に、これらの両方のページでステートメントを実行することを忘れないでください。
クッキー:
//One page 1
$_COOKIE['varname'] = $var_value;
//On page 2
$var_value = $_COOKIE['varname'];
セッションとCookieの大きな違いは、変数の値は、セッションを使用している場合はサーバーに保存され、Cookieを使用している場合はクライアントに保存されることです。セッション間でデータを保持したい場合を除いて、セッションの代わりにCookieを使用する十分な理由は考えられませんが、それでも、DBにデータを保存し、ユーザー名またはIDに基づいて取得する方が良いでしょう。
GETおよびPOST
次のページへのリンクに変数を追加できます。
<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>
これにより、GET変数が作成されます。
もう1つの方法は、2ページ目に送信するフォームに非表示フィールドを含めることです。
<form method="get" action="page2.php">
<input type="hidden" name="varname" value="var_value">
<input type="submit">
</form>
そして2ページ目:
//Using GET
$var_value = $_GET['varname'];
//Using POST
$var_value = $_POST['varname'];
//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];
post
ポスト経由で実行する場合は、フォームのメソッドをに変更するだけです。GETの方がハッキングしやすいですが、どちらも安全ではありません。
私が最初にPHPでコーディングを始めたとき、セッションデータを除いて、新しいリクエストはすべて、スクリプトのまったく新しいインスタンスであるという事実に気づきました。慣れれば、とても簡単です。
上記の回答をありがとう。ここに私がそれをした方法があります、それがフォローしている人々を助けることを願っています。あるページから別のページに登録番号を渡そうとしているので、regNameとregValueです。
最初のページを作成し、set_reg.phpという名前を付けます。
<?php
session_start();
$_SESSION['regName'] = $regValue;
?>
<form method="get" action="get_reg.php">
<input type="text" name="regName" value="">
<input type="submit">
</form>
2番目のページを作成し、get_reg.phpという名前を付けます。
<?php
session_start();
$regValue = $_GET['regName'];
echo "Your registration is: ".$regValue.".";
?>
<p><a href="set_reg.php">Back to set_reg.php</a>
上記の回答ほど包括的ではありませんが、私の目的では、これはさまざまな要素間の関係を単純な方法で示しています。
これをフォームの非表示フィールドとして埋め込むか、フォームアクションURLに追加できます。
echo '<input type="hidden" name="myVariable" value="'.
htmlentities($myVariable).'">';
または
echo '<form method="POST" action="Page2.php?myVariable='.
urlencode($myVariable).'">";
これは、データを渡すときのhtmlentitiesとurlencodeの使用も示しています。
データをクライアント側に渡す必要がない場合は、セッションの方が適切な場合があります。各ページの先頭でsession_start()を呼び出すだけで、データを取得して$ _SESSION配列に設定できます。
あなたの値は実際にはファイル名であると述べているので、セキュリティの影響を認識する必要があります。ファイル名がクライアント側から届いた場合は、ユーザーが値を改ざんしたと想定します。有効性を確認してください!ユーザーが重要なシステムファイルまたは管理下のファイルへのパスを渡すとどうなりますか?スクリプトを使用して、存在するファイルまたは存在しないファイルのサーバーを「調査」できますか?
明らかにここで始めたばかりなので、これは$ _GET、$ _ POST、または$ _COOKIEに到着するすべてのデータに当てはまることを思い出してください-最悪の敵がそれらの配列の内容を細工し、それに応じてコーディングしてください!
PHPで値を渡す方法は3つあります。
これらの3つのメソッドは異なる目的で使用されます。たとえば、次のページで値を受け取りたい場合は、次のように 'post'($ _POST)メソッドを使用できます。
$a=$_POST['field-name'];
複数のページで変数の値が必要な場合、セッション変数を次のように使用できます。
$a=$_SESSION['field-name];
この構文を使用してSESSION変数を作成する前に、まずこのタグをphpページの先頭に追加する必要があります
session_start();
GETメソッドは、通常、ユーザーからの入力を受け取るために使用した同じページにデータを印刷するために使用されます。構文は次のとおりです。
$a=$_GET['field-name'];
Getメソッドを使用すると、URLバーにデータを表示できるため、POSTメソッドは一般にGETよりも安全に消費されます。データがパスワードなどの機密データである場合、データが不正になる可能性があります。
このコードを試してください
非表示フィールドを使用して、php varibaleを別のページに渡すことができます
page1.php
<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
<input type="hidden" name="text" value="<?php echo $myVariable; ?>">
<button type="submit">Submit</button>
</form>
この変数に別のページにアクセスできるように、php変数を非表示フィールド値に渡します
page2.php
<?php
$text=$_POST['text'];
echo $text;
?>
セッションが唯一の良い方法であり、GET / POSTを使用することもできますが、それは潜在的に安全ではありません。
セッションでのデータの受け渡しクライアント側にデータを渡す必要がない場合は、セッションの方が適切な場合があります。各ページの先頭でsession_start()を呼び出すだけで、データを取得して$ _SESSION配列に設定できます。
セキュリティ値は実際にはファイル名であると述べているため、セキュリティの影響を認識する必要があります。ファイル名がクライアント側から届いた場合は、ユーザーが値を改ざんしたと想定します。有効性を確認してください!ユーザーが重要なシステムファイルまたは管理下のファイルへのパスを渡すとどうなりますか?スクリプトを使用して、存在するファイルまたは存在しないファイルのサーバーを「調査」できますか?
明らかにここで始めたばかりなので、これは$ _GET、$ _ POST、または$ _COOKIEに到着するすべてのデータに当てはまることを思い出してください。最悪の敵がこれらの配列の内容を巧みに作成し、それに応じてコーディングしてください!