$ _GETに基づいてHTMLを編集する

<?php
$g = $_GET['e'];
$t = "Title!";
$h = "";
$p = "";

function errorput($et,$eh,$ep) {
    $t = $et;
    $h = '

'.$eh.'

';
    $p = '
'.$ep.''; } if ($g == "nodata") { errorput("Missing Something...", "Blank Field", "You left a box or few empty."); } elseif ($g == "nopass") { errorput("Password Incorrect!", "Encrypted Hash Unmatched", "Your password is probably wrong."); } else { errorput($t, "I have no idea.", "There was an error, but we don't know why."); } ?> <!DOCTYPE HTML> <html> <head> <title><?php echo $t ?></title> <head> <body> <?php echo $h; echo $p; ?> </body> </html>

したがって、GET経由で受け取ったものに基づいてhtmlを出力します。 それはなぜ機能しないのですか?

0

2 答え

$ tなどはグローバルスコープにはありません。それらを返す。

<?php
$g = $_GET['e'];
$t = "Title!";
$h = "";
$p = "";

function errorput($et, $eh, $ep)
{
    $t = $et;
    $h = '

' . $eh . '

';
    $p = '
' . $ep . ''; return array( $t, $h, $p ); } if ($g == "nodata") { $errors = errorput("Missing Something...", "Blank Field", "You left a box or few empty."); } elseif ($g == "nopass") { $errors = errorput("Password Incorrect!", "Encrypted Hash Unmatched", "Your password is probably wrong."); } else { $errors = errorput($t, "I have no idea.", "There was an error, but we don't know why."); } ?> <!DOCTYPE HTML> <html> <head> <title><?php echo $errors[0]; ?></title> <head> <body> <?php echo $errors[1] . $errors[2]; ?> </body> </html>
2
追加された

関数内で関数の外にある変数を使用しようとしていますが、それはあなたが思っているように機能しません。

Please read up on variable scope: http://php.net/manual/en/language.variables.scope.php

あなたの機能を以下のように変更した場合:

一番上で、これはあなたがそれを望む方法で動作しますが、それは間違っています。

0
追加された
リンクありがとうございました。関数内に global $ t、$ h、$ p を置くだけでした。
追加された 著者 avinashbot,
それを避けることができるならば、関数内でグローバルを使わないほうがよいでしょう。 Genesisは配列を返すよう提案します。
追加された 著者 horatio,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com