it-swarm.com.de

Wie erstelle ich ein PHP) Formular, das sich selbst übermittelt?

Wie erstelle ich ein sich selbst sendendes Formular, d. H. Ein Formular, das die Ergebnisse an sich selbst sendet, anstatt an ein anderes Formular zu senden?

46
user544079

Der richtige Weg wäre, $_SERVER["PHP_SELF"] Zu verwenden (in Verbindung mit htmlspecialchars, um mögliche Exploits zu vermeiden). Sie können auch einfach den leeren action= - Teil überspringen, der nicht für W3C gültig ist, aber derzeit in den meisten (allen?) Browsern funktioniert. Standardmäßig wird der Teil an self gesendet, wenn er leer ist.

Hier ist ein Beispielformular, das einen Namen und eine E-Mail-Adresse annimmt und dann die Werte anzeigt, die Sie beim Senden eingegeben haben:

<?php if (!empty($_POST)): ?>
    Welcome, <?php echo htmlspecialchars($_POST["name"]); ?>!<br>
    Your email is <?php echo htmlspecialchars($_POST["email"]); ?>.<br>
<?php else: ?>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
        Name: <input type="text" name="name"><br>
        Email: <input type="text" name="email"><br>
        <input type="submit">
    </form>
<?php endif; ?>
76
Phphelp

Das wird nur funktionieren, wenn register_globals ist aktiviert, und es sollte niemals aktiviert sein (es sei denn, Sie definieren diese Variable natürlich an einer anderen Stelle).

Setzen Sie das form-Attribut des action auf ?...

<form method="post" action="?">
   ...
</form>

Sie können es auch leer lassen (""), aber ältere WebKit-Versionen hatten einen Fehler .

5
alex

Versuche dies

<form method="post" id="reg" name="reg" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"

Funktioniert gut :)

4
Robot Boy

Ihre Senden-Schaltfläche hat keinen Namen. Fügen Sie Ihrer Senden-Schaltfläche name = "submit" hinzu.

Wenn Sie den Quellcode des Formulars im Browser anzeigen, sehen Sie, wie es sich selbst übermittelt - das Aktionsattribut des Formulars enthält den Namen des aktuellen Skripts. Wenn das Formular also übermittelt wird, übermittelt es sich selbst. Edit um der Eitelkeit willen!

3
David Fells
  1. veränderung
    <input type="submit" value="Submit" />
    zu
    <input type="submit" value="Submit" name='submit'/>

  2. veränderung
    <form method="post" action="<?php echo $PHP_SELF;?>">
    zu
    <form method="post" action="">

  3. Der Code wird nur dann in if ausgeführt, wenn er gesendet wird.
  4. Es wird immer das Formular (HTML-Code) angezeigt.
  5. was genau ist deine Frage?