次のような単純なphpテストページがあります
<?php
if(isset($_POST['hitme']))
{
echo "hello world";
}
?>
私はこのページにアクセスしていますhttp://www.abc.com/page.php?hitme=true
が、これは何もエコーしていません。これで何か問題がありますか?
次のような単純なphpテストページがあります
<?php
if(isset($_POST['hitme']))
{
echo "hello world";
}
?>
私はこのページにアクセスしていますhttp://www.abc.com/page.php?hitme=true
が、これは何もエコーしていません。これで何か問題がありますか?
クエリ文字列で値を渡したので $_GET['hitme']
、 ではなくを使用してください。を介して送信された値を保持しますが、クエリ文字列で渡された値は保持しません。$_POST
$_POST
<form action='post'>
if(isset($_GET['hitme'])) {...}
PHP のスーパーグローバル配列の違いについて読むことをお勧めします。
$_POST
HTTP POST リクエストの一部としてページにポストされる変数のみが含まれます。ブラウザーのアドレス バーにアドレスを入力している場合は、POST 要求ではなく GET 要求を発行しているため、変数は に設定されません$_POST
。POST リクエストを発行している場合でも、クエリ文字列で指定された変数は内でしか使用できない$_GET
ため、この例ではどちらの方法でも間違った配列を使用しています。
それが URL にある場合、たとえばhttp://example.com/index.php?hitme=true
にあります$_GET
。
ただし、 に入れたい場合は$_POST
、次のようにする必要があります (非常に基本的な例)。
<form method="post" action="page.php">
<input type="checkbox" name="hitme" value="true" />
<input type="submit" value="Post data!" />
</form>
このスクリプトにより、ユーザーは必要に応じてそれをチェックし、[Post data!] をクリックできます。
ただし、$_POST
ユーザーがボタンをクリックしない限り、表示されません。に関しては$_GET
、URL に含まれている限り存在します。
URL にある場合は$_GET
代わりに使用する必要があります$_POST
または、を使用できます$_REQUEST['hitme']
。これは両方をチェックし$_POST['hitme']
、$_GET['hitme']