私はWebテクノロジーの初心者です。私の質問は非常に単純であることは知っていますが、その方法がわかりません。たとえば、次の関数があります。
function addNumbers($firstNumber, $secondNumber)
{
echo $firstNumber + $secondNumber;
}
そして私はフォームを持っています:
<form action="" method="post">
<p>1-st number: <input type="text" name="number1" /></p>
<p>2-nd number: <input type="text" name="number2" /></p>
<p><input type="submit"/></p>
テキストフィールドに変数を入力し、テキストフィールドに書き込んだ引数を使用してボタンを押すことで関数を呼び出すにはどうすればよいですか?たとえば、5-最初のテキストフィールド、10-2番目のテキストフィールドを記述し、ボタンをクリックすると、同じページに結果15が表示されます。 [〜#〜] editd [〜#〜]私はそうしようとしました:
$num1 = $POST['number1'];
$num2 = $POST['number2'];
addNumbers($num1, $num2);
しかし、それは機能しません。答えは常に0です。
あなたが持っている「機能」はサーバーサイドです。サーバーサイドコードが実行されます前と前のみデータがブラウザに返されます(通常はページとして表示されますが、 ajaxリクエスト の場合もあります)。
あなたが持っているフォームはクライアント側です。このフォームはブラウザによってレンダリングされ、サーバーに「接続」されていませんが、処理のためにサーバーにデータを送信するできます。
したがって、関数を実行するには、次のフローが発生する必要があります。
これがサンプルPHPスクリプトで、これをすべて実行します。
<?php
function addNumbers($firstNumber, $secondNumber) {
return $firstNumber + $secondNumber;
}
if (isset($_POST['number1']) && isset($_POST['number2'])) {
$result = addNumbers(intval($_POST['number1']), intval($_POST['number2']));
}
?>
<html>
<body>
<?php if (isset($result)) { ?>
<h1> Result: <?php echo $result ?></h1>
<?php } ?>
<form action="" method="post">
<p>1-st number: <input type="text" name="number1" /></p>
<p>2-nd number: <input type="text" name="number2" /></p>
<p><input type="submit"/></p>
</body>
</html>
注意:
<?php ... ?>
内のすべてが実行されますサーバーによって(この場合、echo
はこの実行からの唯一の出力を作成します)、PHPタグ(具体的にはHTMLコード)は、HTTP応答に直接出力されます。<h1>Result:...
HTMLコードがinsidea PHP if
ステートメントであることに気付くでしょう。これは、これが$result
がないため、最初のパスでは行は出力されません。action
には値がないため、フォームはブラウザがすでにオンになっているのと同じページ(URL)に送信されます。これを試して。
<?php
function addNumbers($firstNumber, $secondNumber)
{
if (isset($_POST['number1']) && isset($_POST['number2']))
{
$firstNumber = $_POST['number1'];
$secondNumber = $_POST['number2'];
$result = $firstNumber + $secondNumber;
echo $result;
}
}
?>
<form action="urphpfilename.php" method="post">
<p>1-st number: <input type="text" name="number1" /></p>
<p>2-nd number: <input type="text" name="number2" /></p>
<?php addNumbers($firstNumber, $secondNumber);?>
<p><?php echo $result; ?></p>
<p><input type="submit"/></p>
$_POST
変数から値を収集し、それらを関数に渡す必要があります。
if ($_POST) {
$number_1 = (int) $_POST['number1'];
$number_2 = (int) $_POST['number2'];
echo addNumbers($number_1, $number_2);
}
ただし、ユーザー入力を信頼するべきではないため、入力を検証およびサニタイズする必要があることに注意してください。
変数は$ _POST変数に含まれます。
関数に解析するには、次のようにする必要があります。
addNumbers($_POST['number1'],$_POST['number2']);
必ず入力を確認してください。ユーザーは入力に好きなものを追加できます。たとえば、is_numeric()関数を使用します
$number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0;
また、関数内にエコーしないでください。返してください。
function addNumbers($firstNumber, $secondNumber)
{
return $firstNumber + $secondNumber;
}
// check if $_POST is set
if (isset($_POST['number1']) && isset($_POST['number2']))
{
$number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0;
$number2 = is_numeric($_POST['number2']) ? $_POST['number2'] : 0;
echo addNumbers($_POST['number1'],$_POST['number2']);
}
アンダースコアがありません
$_POST['number1']
それで全部です。