質問

PHPを学び始めたばかりです。送信ボタンが押された後、またはアンカータグでさえエコーステートメントを開始する方法を教えてください。

これまでのコードはこれまで

form name="myform" method="get" actions="madlib01.php"

 Name: <input type="text" name="name" /> <br />


     <input type="submit" name="submit" />

フォーム

<?php

$Name = $_GET['name'];

$hello .= "Hello $Name";

echo $hello  //I would prefer the echo to happen after the submit button is hit

?>
役に立ちましたか?

解決

フォームタグの正しい属性は<!> quot; action <!> quotではなく、<!> quot; action <!> quot;です。

フォームが送信されると、新しいリクエストがサーバーに送信されます(この場合、GETを使用します)。

すべてを1ページで行うには:

form.php:

<form action="form.php" method="GET">
<input type="text" name="name"/>
<input type="submit">
</form>

<?PHP
if (! empty($_GET['name'])){
   echo 'Hello, ' . $_GET['name'];
}
?>

他のヒント

まず、PHPが isset または< a href = "http://www.php.net/array_key_exists" rel = "nofollow noreferrer"> array_key_exists

if(isset($_GET['name']) && !empty($_GET['name'])) {
    $Name = $_GET['name'];
    echo "Hello $Name";
}

または:

if(array_key_exists('name', $_GET) && !empty($_GET['name'])) {
    $Name = $_GET['name'];
    echo "Hello $Name";
} else {
    //example: default to something if nothing has been passed
    echo "Hello Guest";
}

また、同じページに送信する場合は、フォームタグからaction属性を完全に省略することができます。

<form method="GET">
  

echo $ hello

HTMLインジェクションの脆弱性があります。ユーザーが次の宛先に送信した場合:

http://www.example.com/madlib01.php?name=<script>stealYourCookies()</script>

問題があります。

はい、これは私の最初のPHPスクリプトです。それはセキュリティをオプションにしません。これはすべてのチュートリアルが犯す間違いです。最初から悪い練習を教え、正確さ(および正確さのサブセットであるセキュリティ)をオプションの追加として扱います。

結果として、そこにあるほとんどのPHPコードには穴がいっぱいです。しかし、あなたのものである必要はありません!純粋なテキスト文字列を周囲のHTMLコンテキストに配置するたびに、適切にエスケープします。

echo htmlspecialchars($hello);

<!>#8216; htmlspecialchars <!>#8217;より短い名前で関数を定義する傾向があります。私は怠け者なので、私のためにそれをする。

<?php
    function h($text) {
        echo(htmlspecialchars($text, ENT_QUOTES));
    }
    $name= '';
    if (isset($_REQUEST['name']))
        $name= trim($_REQUEST['name']);
?>

...

<?php if ($name!=='') { ?>
    <p> Hello, <?php h($name); ?>! </p>
<?php } ?>

<form method="get" action="madlib01.php">
    <p>
        <label for="namefield">Name:</label>
        <input id="namefield" type="text" name="name" />
    </p>
    <p>
        <input type="submit" />
    </p>
</form>

今、あなたの名前がMister <!> lt; script <!> gt;であると言うと、ページはJavaScriptを実行しようとする代わりに、山かっこなどすべてをそのまま迎えます。これは正しい出力であるため、安全です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top