Wo ist das Problem? Dieses einfache HTML/PHP-Formular funktioniert gut, wenn es lokal getestet wird, schlägt jedoch auf dem Live-Server fehl
P粉060528326
P粉060528326 2023-09-05 17:03:39
0
1
526
<p>Ich möchte meiner bestehenden Website ein Formular zum Senden einer Nachricht hinzufügen. Ich habe dieses Tutorial gefunden: </p> <p>PHP-Kontaktformular</p> <p>Ich habe den Code aus dem Tutorial überprüft, gelernt, wie er funktioniert, und ihn dann programmiert. Ich habe es zum Laufen gebracht und alles auf meinem PC getestet und es funktioniert perfekt. </p> <p>Ich stelle es dann als Teil einer bestehenden Website auf den Server. aber scheiterte. Durch Klicken auf die Schaltfläche „Senden“ wird der Bildschirm gelöscht und das Formular verschwindet. Keine Fehlermeldung. Gar nichts. </p> <p>Sowohl XAMPP als auch der eigentliche Server laufen mit PHP Version 8.1.12. </p> <p>Es schlägt in dieser PHP-Codezeile fehl: header('Location: contact.php', true, 303);</p> <p>Ich habe viel Zeit damit verbracht, dieses Problem zu debuggen, mehr über PHP zu lernen, die Ratschläge von Stack Overflow zu befolgen und die PHP-Dokumentation zur Funktion header() zu lesen. Ich habe auch zwei LinkedIn Learning PHP-Kurse besucht. Aber ich kann nicht herausfinden, wo das Problem liegt. </p> <p>Ich habe das Problem dann auf diesen einfachen Code reduziert und es mit nur einem Formular, das eine Senden-Schaltfläche enthält, so einfach wie möglich gemacht. Es hat das gleiche Problem wie das vollständige Formular. </p> <p>Das ist mein Testcode: </p> <pre class="brush:php;toolbar:false;"><!doctype html> <html lang="en"> <Kopf> <!-- Erforderliche Meta-Tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, strict-to-fit=no"> <title>Kontakt</title> </head> <?php session_start(); $request_method = strtoupper($_SERVER['REQUEST_METHOD']); if ($request_method === 'GET'){ ?><form action="for_stack_overflow.php" method="post"> <button type="submit">Send Message</button> </form> <?php } elseif ($request_method === 'POST'){ header('Standort: for_stack_overflow.php', true, 303); Ausfahrt; } ?></html></pre> <p>Dieser einfache HTML/PHP-Code hat das gleiche Problem wie mein vollständiges Formular: Nach dem Klicken auf die Schaltfläche „Senden“ wird der Bildschirm gelöscht und es bleibt nur eine Schaltfläche „Formular“ übrig. Das Formular funktioniert nicht. </p> <p>Ich habe absichtlich alle Einrückungen entfernt, weil ich erfahren habe, dass ein häufiges Problem darin besteht, dass unsichtbare Leerzeichen dazu führen, dass die PHP-Funktion header() fehlschlägt.</p> <p>Dieses Programm (und mein vollständiges Formular) jeweils: </p> <ol> <li>Funktioniert perfekt, wenn ich es lokal auf meinem PC teste;</li> <li>Es schlägt fehl, wenn mein Website-Hosting-Konto auf einem echten Server ausgeführt wird. </li> </ol> <p>Ich habe mein Bestes gegeben, um dieses Problem zu lösen. </p> <p>Was ist schief gelaufen? Was könnte möglicherweise falsch laufen? Gibt es etwas, das ich nicht verstehe? </p>
P粉060528326
P粉060528326

Antworte allen(1)
P粉055726146

header()session_start()调用移到HTML输出之前。

<?php session_start();
...
?>
<!doctype html>
...

参考:https://www.php.net/manual/en/function.header.php

参考:https://www.php.net/manual/en/function.session-start.php

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage