1. ホーム
  2. php

[解決済み】PHP 変数を次のページに渡す

2022-04-08 06:25:28

質問

とても簡単そうなのですが、良い方法が見つかりません。

最初のページで変数を作成するとします。

$myVariable = "Some text";

そして、そのページに対するフォームのアクションは "Page2.php"です。ではPage2.phpで、どうすればその変数にアクセスできるのでしょうか?セッションでできることは知っていますが、単純な文字列を渡すには多すぎると思いますし、私は単純な文字列(ファイル名)を渡すだけでいいのです。

どうすれば実現できるのでしょうか?

ありがとうございます。

解決方法は?

HTML/HTTPはステートレスです。言い換えれば、あなたが前のページで行ったこと/見たことは、現在のページとは全く関係がありません。 ただし セッション、クッキー、GET/POST変数のようなものを使用する場合。セッションとクッキーは非常に使いやすく、セッションはクッキーよりも圧倒的に安全です。より安全ですが、完全に安全というわけではありません。

セッションです。

//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'];

セッションとクッキーの大きな違いは、変数の値が、セッションを使用している場合はサーバーに、クッキーを使用している場合はクライアントに保存されることです。セッション間でデータを持続させたい場合を除き、セッションの代わりにクッキーを使用する良い理由は思いつきませんが、その場合でも、DBに保存し、ユーザー名またはIDに基づいてそれを取得する方が良いかもしれません。

GETとPOST

リンク先で変数を追加すると、次のページに進みます。

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

これにより、GET変数が作成されます。

もう一つの方法は、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 は、postで行う場合。どちらも同じように安全ではありませんが、GETの方がハックしやすいのです。

新しいリクエストは、セッションデータを除けば、まったく新しいスクリプトのインスタンスであるという事実は、私が初めてPHPでコーディングを始めたときに、私を捕らえました。しかし、一度それに慣れると、とてもシンプルになります。