ホームページ  >  記事  >  バックエンド開発  >  PHPページ間で値を転送する6つの方法

PHPページ間で値を転送する6つの方法

PHP中文网
PHP中文网オリジナル
2017-03-30 13:32:594583ブラウズ

PHPページ間で値を渡す6つの方法:

1. PHP4以降で渡された値を取得する方法

一般に、ページ内で値を渡す最も一般的な方法は次のとおりです。 POST、GET、COOKIE があるので、以下ではこれらを中心に紹介します。 PHP4 以降では、$_POST、$_GET、その他の配列を使用して Web ページの値を取得します。 PHP3.0以下では、$HTTP_POST_VARSや$HTTP_GET_VARSなどの配列が使用されます。具体的なコードは次のとおりです

echo $_POST['dopost'];
?>

< form action="weste_net.php" method="post" name=&#39;form1&#39; id="form1">
< input type="text" name="dopost" value="hello weste.net!" />
< input type="submit" name="weste" value="提交" />
< /form>

2。 前述したように、$HTTP_POST_VARS、$HTTP_GET_VARS、$HTTP_COOKIE_VARS 配列を使用して読み取ることができます。古いバージョンの PHP では、$dopost などのメソッドを使用して、渡された値を直接取得することもできます。この方法は、Web ページの渡された値を取得する以下のメソッドの中で、実際には $ の使用方法に焦点を当てています。 dopost。Web ページによって渡された値を取得します。

3. PHP.ini ファイルの構成を変更します

もう 1 つの質問は、なぜ PHP3 と PHP4 以降に互換性があるのか​​ということです。実際、非常に重要な理由は、PHP4 以降、PHP.ini ファイルの register_globals がデフォルトで Off に設定されていることです。そのため、以前のように $dopost を使用して Web ページの値を直接取得する方法は使用できません。

register_globals の値を確認する簡単な方法

echo &#39;register_globals = &#39; . ini_get(&#39;register_globals&#39;);
?>

register_globals=Off の場合、 register_globals = または register_globals = 0 を表示します

register_globals=On の場合、 register_globals = 1 を表示します

送信されたフォームに次の内容が含まれている場合は、 register_globals を手動で On に変更します「dopost」という名前の変数がある場合は、$dopost を使用して PHP で変数を取得できます。ただし、仮想ホストを使用している場合、php.ini ファイルを変更するのは依然として困難です。ここで紹介する方法は 1 つだけです。

4. import_request_variables 関数を使用する

import_request_variables 関数は、register_globals を無効にし、いくつかのグローバル変数を使用したい場合に便利です。

構文:

bool import_request_variables(string $types[, string $prefix])

最初のパラメーターは、GET、POST、COOKIE 変数の最初の文字である g、p、または c にすることができ、その意味は非常に明確です。

2 番目のパラメーターは、その後の変数プレフィックスです。 import は自由に記述できます。

簡単な例:

import_request_variables("p","p_");
echo $p_dopost;
?>

HTML 部分についてはメソッド 1 を参照し、dopost 入力ボックス変数の値を取得します。

5. 抽出関数

PHP の extract() 関数を使用して、配列から現​​在のシンボル テーブルに変数をインポートします。配列内の各要素について、キー名が変数名として使用され、キー値が変数値として使用されます。 2 番目のパラメーターの種類は、変数がすでに存在し、配列内に同じ名前の要素が存在する場合に、extract() 関数がそのような競合をどのように処理するかを指定するために使用されます。

文法:

extract(array,extract_rules,prefix)

使用法:

if(!empty($_POST)) extract($_POST);
echo $dopost;
?>

この方法はとても簡単ですよね。とても実用的でもあります。

6. dedecms で使用するメソッド

dede では register_globals の値が Off の場合は、以下のプログラムを呼び出します。 On の場合は、それを直接使用できます。具体的なコードは以下のとおりで、common.inc.php ファイルに配置されます。

//检查和注册外部提交的变量
foreach($_REQUEST as $_k=>$_v)
{
if( strlen($_k)>0 && eregi(&#39;^(cfg_|GLOBALS)&#39;,$_k) && !isset($_COOKIE[$_k]) )
{
exit(&#39;Request var not allow!&#39;);
}
}
function _RunMagicQuotes(&$svar)
{
if(!get_magic_quotes_gpc())
{
if( is_array($svar) )
{
foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
}
else
{
$svar = addslashes($svar);
}
}
return $svar;
}
foreach(Array(&#39;_GET&#39;,&#39;_POST&#39;,&#39;_COOKIE&#39;) as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}

上記のコードを、後で Web ページから渡される値を取得する場合にのみ使用する必要があります。

上記は、PHP ページ間で値を転送する 6 つの方法の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。