PHP-Formular – beim Absenden auf derselben Seite bleiben

Lesezeit: 6 Minuten

PHP Formular beim Absenden auf derselben Seite bleiben
mewebs

Ich habe ein PHP-Formular, das sich in einer Datei befindet contact.html.

Das Formular wird aus einer Datei verarbeitet processForm.php.

Wenn ein Benutzer das Formular ausfüllt und auf „Senden“ klickt,
processForm.php sendet die E-Mail und leitet den Benutzer an – processForm.php
mit einer Nachricht auf dieser Seite “Erfolg! Ihre Nachricht wurde gesendet.”

Ich weiß nicht viel über PHP, aber ich weiß, dass die Aktion, die dies erfordert, folgende ist:

// Die with a success message
die("<span class="success">Success! Your message has been sent.</span>");

Wie kann ich die Nachricht im Form-Div behalten, ohne auf die umzuleiten
processForm.php Seite?

Ich kann das ganze posten processForm.php wenn nötig, aber es ist lang.

  • ajax oder auf derselben Seite posten. Ich ziehe es vor, auf der gleichen Seite zu posten.

    – Nick Maroulis

    27. Juni 13 um 3:08 Uhr

  • header('contact.html?result=success');

    – BlitZ

    27. Juni 13 um 3:09 Uhr

  • phptutorialforbeginners.com/2013/01/…

    – unterstreichen

    27. Juni 13 um 3:10 Uhr

  • Ähnliche Frage (mit ein paar Änderungen) wie unten: [php, form using the same page after submittion][1] [1]: stackoverflow.com/questions/15130493/…

    – Bassem

    27. Juni 13 um 3:12 Uhr

  • Wo füge ich den Header ein, in der contact.html oder der processForm.php?

    – mewebs

    27. Juni 13 um 5:09 Uhr

1643912047 686 PHP Formular beim Absenden auf derselben Seite bleiben
Tom Groot

Um beim Senden auf der gleichen Seite zu bleiben, können Sie die Aktion leer lassen (action="") in das Formular-Tag einfügen oder ganz weglassen.

Erstellen Sie für die Nachricht eine Variable ($message = "Success! You entered: ".$input;") und wiederholen Sie dann die Variable an der Stelle auf der Seite, an der die Nachricht erscheinen soll <?php echo $message; ?>.

So was:

<?php
$message = "";
if(isset($_POST['SubmitButton'])){ //check if form was submitted
  $input = $_POST['inputText']; //get input text
  $message = "Success! You entered: ".$input;
}    
?>

<html>
<body>    
<form action="" method="post">
<?php echo $message; ?>
  <input type="text" name="inputText"/>
  <input type="submit" name="SubmitButton"/>
</form>    
</body>
</html>

  • Hast du deinen Code überprüft? 1) Bei der ersten Ausführung, vor der Übermittlung, erhalten Sie (natürlich!) „Undefinierte variable Nachricht“ 2) Dann wird bei jeder Übermittlung ein neues Formular geladen, das die Nachricht anzeigt, und sie werden alle im Verlauf des Browsers aufgebaut! Warum überprüft ihr eure Codes nicht, bevor ihr sie postet???

    – Apostolos

    16. Juni 17 um 7:59 Uhr


  • @Apostolos, wie würde ich dieses Beispiel richtig verwenden? was müsste geändert werden?

    – Ljux

    14. Juni 18 um 12:52 Uhr

  • Ich kann mich nicht erinnern. Ich arbeite seit etwa einem Jahr nicht mehr mit PHP und habe im Moment keinen Apache-Server zum Testen zur Verfügung. Verzeihung. Aber soweit ich mich erinnere, habe ich es geschafft, mit “include” auf derselben Seite (dh der PHP-Datei) zu bleiben …

    – Apostolos

    15. Juni 18 um 10:04 Uhr

  • Hinzufügen if(isset($message)){...} um herum echo $message; um sicherzustellen, dass „Notice: Undefined variable message“ nicht mehr angezeigt wird.

    – Tom Groot

    27. Juni 18 um 20:31 Uhr


  • Was ist mit der Verwendung # stattdessen? Vor-und Nachteile?

    – Peter Mortensen

    25. November 19 um 19:56 Uhr

1643912047 824 PHP Formular beim Absenden auf derselben Seite bleiben
ChaseC

Der beste Weg, um auf derselben Seite zu bleiben, ist, auf derselben Seite zu posten:

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">

  • Zu beachten ist, dass diese Methode die HTML-Validierungsprüfung bei nicht besteht W3-Validatorwie es sagt “Ungültiger Wert für Attributaktion im Elementformular: Darf nicht leer sein.” Obwohl es definitiv funktioniert, wird der HTML-Code so gedruckt, was den Fehler verursacht: <form name="frmContactUs" action="" method="post">

    – Kendall

    7. Juli 15 um 15:03 Uhr


  • Ein Codebeispiel dafür gibt es unter html-form-guide.com/php-form/php-form-action-self.html

    – Mawg sagt, Monica wieder einzusetzen

    12. Februar 16 um 16:17 Uhr

  • Das versteht sich natürlich und ändert auch nichts, da es mit action=””, das oben schon erwähnt wurde, genauso ist.

    – Apostolos

    16. Juni 17 um 08:21 Uhr

  • Achtung, Sie sollten htmlspecialchars($_SERVER[‘PHP_SELF’]). Andernfalls wird es xss-Angriffen ausgesetzt sein, wenn jemand JS in eine URL einfügt.

    – Mosset Jérémie

    25. Januar 19 um 13:17 Uhr

  • Dies bewirkt genau dasselbe wie das Leerlassen, jedoch mit zusätzlichen XSS-Sicherheitsrisiken. Schlechte Idee.

    – Mike32

    28. Mai ’19 um 16:21 Uhr

PHP Formular beim Absenden auf derselben Seite bleiben
Ashrith Sheshan

Es gibt zwei Möglichkeiten, dies zu tun:

  1. Senden Sie das Formular an dieselbe Seite: Behandeln Sie das übermittelte Formular mit einem PHP-Skript. (Dies kann durch Einstellen des Formulars erfolgen action zur aktuellen Seiten-URL.)

    if(isset($_POST['submit'])) {
        // Enter the code you want to execute after the form has been submitted
        // Display Success or Failure message (if any)
      } else {
        // Display the Form and the Submit Button
    }
    
  2. Verwendung von AJAX-Formularübermittlung was für einen Anfänger etwas schwieriger ist als Methode 1.

  • Ja, das funktioniert zumindest teilweise. Sie bleiben nicht auf derselben Seite — da das Ergebnis auf einer neuen Seite angezeigt wird — aber es ist viel besser, da Sie verfügen über um zur ersten Seite zurückzukehren, wodurch vermieden wird, dass sich Kopien derselben PHP im Verlauf des Browsers ansammeln.

    – Apostolos

    16. Juni 17 um 08:05 Uhr


  • @Apostolos – Wenn die action (innerhalb des <form> -Tag wird auf die URL der aktuellen Seite gesetzt (oder einfach #) dann wird die gleiche Seite neu geladen. (Kein neues Fenster.)

    – Ashleedawg

    1. Dezember 18 um 12:44 Uhr

PHP Formular beim Absenden auf derselben Seite bleiben
Surendra Kumar Ahir

Du kannst den … benutzen # Aktion in einer Formularaktion:

<?php
    if(isset($_POST['SubmitButton'])){ // Check if form was submitted

        $input = $_POST['inputText']; // Get input text
        $message = "Success! You entered: " . $input;
    }
?>

<html>
    <body>
        <form action="#" method="post">
            <?php echo $message; ?>
            <input type="text" name="inputText"/>
            <input type="submit" name="SubmitButton"/>
        </form>
    </body>
</html>

Freund. Verwenden Sie diese Methode, es wird keine “Undefinierte Variablenmeldung” angezeigt und es wird gut funktionieren.

<?php
    if(isset($_POST['SubmitButton'])){
        $price = $_POST["price"];
        $qty = $_POST["qty"];
        $message = $price*$qty;
    }

        ?>

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="#" method="post">
            <input type="number" name="price"> <br>
            <input type="number" name="qty"><br>
            <input type="submit" name="SubmitButton">
        </form>
        <?php echo "The Answer is" .$message; ?>

    </body>
    </html>

PHP Formular beim Absenden auf derselben Seite bleiben
Kamil

Sie müssen einen ähnlichen Code wie diesen verwenden:

echo "<div id='divwithform'>";

if(isset($_POST['submit']))  // if form was submitted (if you came here with form data)
{
    echo "Success";
}
else                // if form was not submitted (if you came here without form data)
{
    echo "<form> ... </form>";
} 

echo "</div>";

Codieren Sie mit if so ist es typisch für viele Seiten, jedoch sehr vereinfacht.

Normalerweise müssen Sie einige Daten im ersten “if” validieren (überprüfen, ob Formularfelder nicht leer waren usw.).

Bitte besuche www.thenewboston.org oder phpacademy.org. Es gibt sehr gute PHP-Video-Tutorials, einschließlich Formularen.

Sie können das folgende Beispiel für die sehen Formularaktion auf derselben Seite

<form action="" method="post">
<table border="1px">
    <tr><td>Name: <input type="text" name="user_name" ></td></tr>
    <tr><td align="right"> <input type="submit" value="submit" name="btn"> 
</td></tr>
</table>
</form>

<?php
  if(isset($_POST['btn'])){
     $name=$_POST['user_name'];
     echo 'Welcome '. $name; 
   }
 ?>

.

758510cookie-checkPHP-Formular – beim Absenden auf derselben Seite bleiben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy