1

「?」について全部知りたかった フォームのアクション値の。以下のコードでわかるように、フォームがあります(

「?」の値でデータベースに配置されるユーザー入力を送信するphpテンプレート)アクション属性の場合:

<form action="?" method="post">
<div>
<label for="joketext">Type your joke here:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40">
</textarea>
</div>
<div><input type="submit" value="Add"></div>
</form>

データベースに保存されているデータを表示する別のテンプレートもあります。以下のコードにあるように、このテンプレートには次のようなものがあります。

リンクをクリックすることで、ユーザーがデータベースにデータ(ジョーク)を追加できるようにするためのリンクのあるセクション:

<body>
<p><a href="?addjoke">Add your own joke</a></p>
<p>Here are all the jokes in the database:</p>
<?php foreach ($jokes as $joke): ?>
<blockquote>
<p><?php echo htmlspecialchars($joke, ENT_QUOTES, 'UTF-8');
?>
</p>
</blockquote>
<?php endforeach; ?>
</body>

私の最初の質問は、href属性の値を「?addjoke」に設定する理由です。「?」の仕事ってなに?「?addjoke」で?

もう1つの質問は、index.phpファイルに次のようなifステートメントがあります。

if (isset($_GET['addjoke']))
{
include 'form.html.php';
exit();
}

$_GET配列で「addjoke」変数のアイデアを得ることができません。つまり、$ _ GET配列が何をするのかを正確に知っていますが、できません

「addjoke」変数を使用するという考え方全体を理解してください。私はここで正確に「addjoke」が何をしているのかを意味しますか?

だから明らかに私は「?」を理解するのに多くの問題を抱えています URLの文字と私はあなたの助けが必要です:)私が知っているすべて

「?」この値は、現在の同じページを指す必要がある場合に使用されます。右?

他にも質問がありますが、その質問はまた別の機会にお願いします;)よろしくお願いします。

4

3 に答える 3

3

次のような URL がある場合:

http://www.domain.com/index?myParam1=value1&myParam2=value2

これは、www.domain.com のサーバーへの GET 要求であり、2 つのパラメーターを渡しています。

myParam1 = value1
myParam2 = value2

? の後のすべて はクエリ文字列で、サーバーに渡すクエリ パラメータとして扱われます。

したがって、PHP では、これらのパラメーターの値を次のように取得できます。$_GET['myParam1']

? それ自体がクエリ文字列の先頭を示します (これにはこれらのパラメーターが含まれ、各パラメーターは & で区切られます。


フォーム アクションは、フォームが投稿される URL です。指定すると?あなたが実際に言っているのは、現在の URL + "?" です。これは、フォームを現在の URL に ? を付けて送信することを意味します。最後に(実際にはこれは本当に必要ありません)

また、クエリ文字列パラメータは GET リクエストでのみ渡されることに注意してください。method=POSTフォーム フィールドと値を含むフォームを送信すると、リクエスト本文で送信されます。


したがって、コードでは、

if (isset($_GET['addjoke']))
{
    include 'form.html.php';
    exit();
}

この 2 行は、addjoke という名前のクエリ文字列パラメーターが渡された場合にのみ実行されます (例: ?addJoke=joke)。これは、URL に addjoke パラメータがある場合にのみフォームが含まれることを意味します。

于 2013-01-24T14:44:49.157 に答える
1

@cowls が言ったこと、特に?vsで何が起こっているのかを追加するだけ?addjokeです。ページ上のリンク (example.com/index.php としましょう) をクリックすると、example.com/index.php?addjoke にたどり着きます。

現在、PHP では、addjoke はクエリ文字列の一部です。これは、「設定」されていることを意味します$_GET。これが存在する理由if (isset($_GET['addjoke']))です。addjoke フォームは、?addjokeリンクに移動した場合にのみ含まれます。

ここで、フォーム アクションは"?"であるため、ユーザーがジョークを送信すると、通常のページ にすぐに戻りexample.com/index.php?、特定の addjoke コードは消えます。

それがいくつかの質問に答えることを願っています。

于 2013-01-24T14:55:47.143 に答える
1

URL の ? 記号は、HTTP GET 要求のリソースからパラメーターを分離するために使用されます。次の例を見てください。

http://www.example.com/resource/index.php?testvalue=123

この例では、ディレクトリ リソース内のスクリプト index.php が呼び出され、値 123 で testvalue という名前の要求パラメーターが設定されます。最初のパラメーターのみが疑問符 (?) を使用し、その他はアンパサンド (&) で追加されます。

あなたの例では、値なしで GET パラメータを設定しています。また、POST パラメーターと GET パラメーターを混在させるべきではありません。アクションに応じて、いずれかを使用することをお勧めします (検索などのデータ取得には GET、ユーザー入力には POST)。

さらに情報が必要な場合は、ウィキペディアでHTTP 動詞を検索し、 PHP で GET および POSTパラメーターを処理することをお勧めします。

于 2013-01-24T14:56:45.640 に答える