Heim  >  Fragen und Antworten  >  Hauptteil

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>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粉060528326P粉060528326409 Tage vor485

Antworte allen(1)Ich werde antworten

  • P粉055726146

    P粉0557261462023-09-06 13:54:44

    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

    Antwort
    0
  • StornierenAntwort