2017-08-22 11 views
-3

HTMLボタンをクリックしてHTMLラベルのテキストを変更するときにPHP関数を実行しようとしていますが、コードが機能しません。以下はPHPでHTMLラベルのテキストを変更できません。

私のコードです:

誰かが私が間違っているのを教えていただけますか? ありがとうございました。

 <form> 
     <input type="number" name="score"><br> 
     <input type="submit" name="Submit" class="btn btn-primary" action="calcScore"> 
    </form> 


    function calcScore() 
{ 
    $playerThrow = $_GET[$score]; 
    return $playerThrow; 
} 


<label class="scorePlate"><?php echo calcScore(player1) ?></label> 
+1

あなたはそのためにはJavaScriptが必要です。 –

+1

@JayBlanchard - いいえ、そうではありません。 – Quentin

+0

player1は何ですか?それが文字列として扱われなければならない場合は、引用符が必要です – ThisGuyHasTwoThumbs

答えて

2
  1. あなたが関数にplayer1定数に合格したが、あなたは(暗黙的に除いて)それを宣言していないもあなたがそれを使用しています。それを削除し、それは無意味です。
  2. フィールド名はスコアです。 $score変数の値ではありません(これも定義されていません)。変数名ではなく文字列リテラルを使用します。あなたは、あなたがそれを作成するときに
  3. それを呼び出すときは、値がPHPを避けるために(存在しているかどうかをテストする必要があるとして、機能のために同じ名前を使用する必要が<?php ?>ブロック
  4. の内側にあなたの関数を定義する必要が
  5. XSSセキュリティホールを作成しないようにユーザー入力をHTMLとしてエンコードする必要があります。
  6. 入力要素にはアクション属性がありません。それを削除し、それは無意味です。 (フォームアトリビュートを持っているので、フォームの通常のアクションよりもサブミットアトリビュートが優先されますが、ここでそれを行うのは意味がありません)。

このような:この別に

 <form> 
     <input type="number" name="score"><br> 
     <input type="submit" name="Submit" class="btn btn-primary"> 
    </form> 

<?php 
    function calcScore() { 
     if (isset($_GET["score"])) { 
      $playerThrow = $_GET["score"]; 
     } else { 
      $playerThrow = "default"; 
     } 
    return $playerThrow; 
    } 
?> 

<label class="scorePlate"><?php echo htmlspecialchars(calcScore()) ?></label> 

:ラベルの点は、フォームコントロール(入力、選択等)の目的を説明することです。このためには絶対に意味がありません。より適切な要素を選択し、スコアフィールドを記述するラベル要素を追加する必要があります。

+0

私はちょうどラベルに表示されているテキストを取得したいと思います。要素タイプを変更します。私はあなたのコードをコピーしましたが、それはまだ私のためにレンダリングされていません。 – user7554035

+1

@ user7554035 - 実用的なテストケースを作成し、そこからコードをコピーしてこの答えに貼り付けました。それはあなたのために働いていない場合は、問題はあなたが適切なPHP環境を設定していないことを示唆している。 [この問題の答えは、そのトラブルシューティング方法について説明しています(https://stackoverflow.com/questions/5121495/php-code-is-not-being-executed-instead-code-shows-on-the-page)。また、 '<?php phpinfo();のみで構成されるテストスクリプトを作成する必要があります。 ?> 'それをテストするので、ユーザーの入力に依存するコードで混乱することはありません。 – Quentin

-1

これを行うための正しい方法がある -

<?php 
$var = $_POST['score']; 
?> 
<html> 
<form method="post"> 
    <input type="number" name="score" /><br> 
    <input type="submit" name="Submit" class="btn btn-primary" /> 
    </form> 
<label class="scorePlate"><?php echo $var ?></label> 
</html> 
+0

これは、答えの違いよりもスポットのゲームのようなものです。あなたは何を変えましたか?なぜそれが問題を解決すべきですか? – Quentin

+0

**危険**:このコードは[XSSに脆弱です](https://www.owasp.org/index.php/XSS)HTMLドキュメントに挿入する前に、ユーザー入力がエスケープする必要があります。 – Quentin

+0

@Quentin私は入力していました...そしてそれを掲示した後、答えがありました... –

関連する問題