Richtige Weg, um redirect nach Formular Absenden
Vielleicht eine blöde Frage, aber was ist richtige Weg, um umleiten Benutzer zu den Erfolg-Seite nach Formular gespeichert wird in der Datenbank?
Ich weiß nicht, warum, aber wenn ich auf add action="done.php"
, als das Formular speichert keine Daten in meine Datenbank.
Habe ich versucht, hinzuzufügen header ("location:/done.php");
es funktionierte, aber als ich umgezogen Seite zu ursprünglichen server ( PHP 4 und MySQL 3.23.5 ) gibt es Fehler, wenn ich versuche zu senden, das Formular Warning: Cannot modify header information - headers already sent by ........
Hier ist mein php code :
if(isset($_POST['submit']))
{
$name=$_POST['name'];
$email = $_POST['email'];
$company = $_POST['company'];
$adress = $_POST['adress'];
$post = $_POST['post'];
$phone = $_POST['phone'];
$sql="INSERT INTO tekstile_users (id, name, email, company, adress, post, phone)
VALUES
('', '$name','$email','$company', '$adress', '$post', '$phone')";
if (mysql_query($sql,$con)) {
header ("location:/done.php");
}
else {
echo "Something is wrong";
}
}//end of submit button
Ich fix es konvertieren .php-Datei zu UTF-8 without BOM
.
Danke an alle für die Vorschläge!
Es ist nicht Injektion Schuld, weil wenn ich Sie entfernen -header ("location:/done.php"); alles ist in Ordnung
Ich habe nicht gemeint, dass dieses Problem wird verursacht, durch SQL-injection. Ich meine nur Sie haben eine riesige Sicherheitslücke in der app.
InformationsquelleAutor iKaspars | 2011-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "headers already sent" - Nachricht bedeutet, dass dein Skript bereits Ausgabe etwas. Gibt es irgendetwas, was auf der Webseite angezeigt, die über dieser Fehlermeldung? Überprüfen Sie alle whitespace vor den
<?php
tag. Überprüfen Sie auch alle include-Dateien für whitespace vor oder nach<?php ?>
tags.Location-header sollte ein Leerzeichen nach dem ":" und sollte eine absolute URI, die der folgenden ähnelt:
Die Festsetzung der header wird nicht behoben "headers already sent" - Fehler. Sie verpasste am Ende Teil der Fehlermeldung. Erhalten Sie "output started at..."? Wenn dem so ist, wird Ihnen sagen, welche Zeile in dem Skript bereits Ausgabe etwas.
Warning: Cannot modify header information - headers already sent by (output started at /home/virtual/site167/fst/var/www/html/tekstile/index.php:1) in /home/virtual/site167/fst/var/www/html/tekstile/index.php auf der Linie 27 . Und 27 Zeile ist header ("location:/done.php");
Schauen Sie sehr vorsichtig bei Zeile 1 index.php. Verursacht hat die PHP-Ausgabe etwas.
InformationsquelleAutor qbert220
"Headers already sent" bedeutet höchstwahrscheinlich, dass es einige Inhalte in Ihre .php-Datei, bevor Sie Ihren PHP-code. Dies könnte so einfach wie white-space, oder vielleicht Ihre PHP-code in HTML eingebettet. In jedem Fall stellen Sie sicher, dass nichts kommt, bevor dein PHP-code, und Sie sollten in Ordnung sein.
Als für die Richtigkeit dieser Methode umleiten, ich glaube, es ist eine allgemein akzeptierte Technik.
InformationsquelleAutor Ryan Kinal
andere beantwortet haben, mit Bezug auf Header bereits gesendet sind. Eine alternative ist, zu enthalten oder benötigen done.php wenn das update erfolgreich war. Vergessen Sie nicht die Ausfahrt nach dem include /require.
InformationsquelleAutor Scott
verwenden
ob_start();
am oberen Rand der Seite und nur nach
<?php
InformationsquelleAutor diEcho
headers already sent
bedeutet, dass etwas bereits an den browser gesendet.Ist die mysql-Angabe ein Fehler?
Beachten Sie auch, dass
$_POST
war eingeführt in PHP 4.1 also, wenn Sie einen sehr alten php-version, das könnte sein, dass es zu einem Fehler.Wenn es funktioniert auf Ihrem test-Maschine und funktioniert nicht auf der original-server, meine Vermutung wäre ein mysql-problem. Die Informationen Holen Sie sich in die Datenbank eingefügt?
Ja, information ist das einfügen in die Datenbank. Gibt es andere Möglichkeiten der Weiterleitung nach Erfolg ?
Schalten Sie die Umleitung, und Sie werden in der Lage sein zu sehen, die Fehlermeldung...
Wenn ich entfernen header("Location: done.php"); ich bekomme keine Fehler und keinen redirect, sondern die form ist das Einreichen und die Daten einfügen in die Datenbank
InformationsquelleAutor jeroen
Ich fix es konvertieren .php-Datei zu
UTF-8 without BOM
.Danke an alle für die Vorschläge!
InformationsquelleAutor iKaspars