Frage

Lassen Sie uns sagen, ich habe eine Seite namens display.php und der Benutzer gerade display.php?page=3. Ich möchte dem Benutzer erlauben, eine Aktion zu tun, wie über eine POST-Anfrage stimmen und sie dann auf die Seite, sie waren zu bringen. Also, wenn ich eine POST-Anforderung an display.php?page=3 würden die Seite Informationen auch an das Skript zur Verfügung stehen?

War es hilfreich?

Lösung

Die einfache Antwort ist ‚Ja‘. Sie können für eine POST Form einer GET-style-URL als Vorlage URL verwenden. PHP wird sowohl die POST und GET haben Informationen zur Verfügung, um es in den üblichen Verfahren, wenn das Formular abgeschickt wird.

Dies ist nicht zu sagen, dass Sie sollte tut dies, aber es wird funktionieren.

Andere Tipps

In PHP können Sie Anfrage Variablen aus der speziellen globalen Arrays erhalten:

$_GET['page'] (for GET requests)
$_POST['page'] (for POST requests)
$_REQUEST['page'] (for either)

Es klingt wie Sie für „Redirect nach Post“ suchen, würde ich vorschlagen display.php und vote.php in separate Dateien zu trennen. Vote sieht ungefähr wie folgt aus:

<?php
//vote.php
$page_number = (int)$_REQUEST['page'];
vote_for_page($page_number); //your voting logic
header('Location: display.php?page=' . $page_number); //return to display.php

Beachten Sie, dass blind aufpoliert Formulardaten akzeptieren können, um Ihre Anwendung gefährlich sein.

Edit: Einige Leute betrachten es als schlechte Form _REQUEST $ zu verwenden, um beide Fälle zu behandeln. Die Gefahr ist, dass Sie möglicherweise einen Fehler signalisieren, wenn Sie eine GET erhalten, wenn Sie eine POST erwarten. Typischerweise wird für die Änderungen GET ist reserviert für die Anzeige und POST reserviert (create / update / delete-Operationen). Ob dies wirklich ein Problem hängt von Ihrer Anwendung.

Ja, der GET-Array immer mit den URL-Parametern gefüllt, unabhängig von der Anforderungsmethode. Sie können es mit einer einfachen Seite wie diese versuchen:

<form action="test.php?a=b" method="post">
    <input name="a"/>
    <input type="submit"/>
</form>
<pre>
POST:
<?php print_r($_POST); ?>
GET:
<?php print_r($_GET); ?>
</pre>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top