header(); - Weiterleitung ohne Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • header(); - Weiterleitung ohne Funktion

    Guten Abend liebe php-Gemeinde,


    ich bin gerade dabei eine kleine Website mit Kontaktformular / Affenformular zu programmieren. Nach der erfolgreichen Eingabe sollen die Daten per Mail an mich übermittelt werden und es soll ein neue html-Seite aufgerufen werden. Also nichts besonders.

    Leider funktioniert die Weiterleitung über
    [COLOR=Red]….[/COLOR]
    [COLOR=Red]header("Location: http://Eigene_Homepage.de/danke.html");[/COLOR]
    [COLOR=Red]exit;[/COLOR]
    [COLOR=Red]…[/COLOR]
    nicht.

    In der URL-Zeile des Browsers steht nach dem betätigen des „Submit“ Buttons weiterhin:
    [COLOR=Red]http://www.Eigene_Homepage.de/contact.php[/COLOR]


    und nicht wie gewünscht:
    [COLOR=Red]http://www.Eigene_Homepage.de/danke.html[/COLOR]


    Des Weiteren ist der Bildschirm vollständig weiß. Die Mail wurde jedoch erfolgreich gesendet.

    Da ich seit fast 6h verzweifelt den Fehler suche, habe ich einfach mal folgenden Wiki Code (Quelle: Affenformular ? Wikipedia) versucht auszuführen. (Die Weiteleitung soll dabei auf google.de erfolgen.)


    ---- Anfang der php-Datei ---
    [COLOR=Red]<?php[/COLOR]
    [COLOR=Red]// Verarbeitung nur bei abgesendetem Formular starten[/COLOR]
    [COLOR=Red]if (!empty($_POST)) {[/COLOR]

    [COLOR=Red] $fehler = array();[/COLOR]

    [COLOR=Red] // Inhaltsprüfungen[/COLOR]
    [COLOR=Red] if(empty($_POST['textfeld'])) {[/COLOR]
    [COLOR=Red] $fehler['textfeld'] = 'Textfeld darf nicht leer sein';[/COLOR]
    [COLOR=Red] }[/COLOR]
    [COLOR=Red] // weitere Prüfungen hier einfügen[/COLOR]


    [COLOR=Red] if (empty($fehler)) {[/COLOR]
    [COLOR=Red] // Verarbeitung war erfolgreich[/COLOR]
    [COLOR=Red] // Weiterleiten beispielsweise zu einer Dankesseite[/COLOR]
    [COLOR=Red] header("Location: http://google.de/");[/COLOR]
    [COLOR=Red] exit;[/COLOR]

    [COLOR=Red] } else {[/COLOR]

    [COLOR=Red] // Ausgabe der gesammelten Fehlermeldungen[/COLOR]
    [COLOR=Red] echo "<ul class='errors'>\n";[/COLOR]
    [COLOR=Red] foreach ($fehler as $feldname => $meldung) {[/COLOR]
    [COLOR=Red] printf("<li>%s</li>\n", htmlspecialchars($meldung));[/COLOR]
    [COLOR=Red] }[/COLOR]
    [COLOR=Red] echo "</ul>\n";[/COLOR]
    [COLOR=Red] }[/COLOR]
    [COLOR=Red]}[/COLOR]
    [COLOR=Red]?>[/COLOR]

    [COLOR=Red]<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">[/COLOR]
    [COLOR=Red]<html>[/COLOR]

    [COLOR=Red]<head>[/COLOR]
    [COLOR=Red]<meta content="text/html; charset=utf-8" http-equiv="Content-Type">[/COLOR]
    [COLOR=Red]<title>Ohne_Titel_1</title>[/COLOR]
    [COLOR=Red]</head>[/COLOR]

    [COLOR=Red]<body>[/COLOR]

    [COLOR=Red]<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">[/COLOR]
    [COLOR=Red] <input type="text" name="textfeld"[/COLOR]
    [COLOR=Red] value="<?php echo isset($_POST['textfeld']) ? htmlspecialchars($_POST['textfeld']) : ''; ?>" />[/COLOR]
    [COLOR=Red] <input type="submit" name="submit" value="Absenden" />[/COLOR]
    [COLOR=Red]</form>[/COLOR]

    [COLOR=Red]</body>[/COLOR]

    [COLOR=Red]</html>[/COLOR]
    ---- Ende der php-Datei ---

    … und siehe da: Es besteht das gleiche Problem.

    Was ist hier los??? Ich bin bei 1und1 mit meinem Webspace und verwende die von 1und1 vorgegebene Php 5.4 Version.


    Warum leitet die Php-Datei nicht an die gewünscht Website weiter??? Ich würde mich riesig freuen, wenn mir jemand von euch helfen könnte.



    Dankeschön


    Patrick
    Zuletzt geändert von PatSch; 11.03.2014, 21:45.

  • #2
    Warum sehe ich kein Error Reporting?

    Setze mal folgendes an den Anfang der PHP Datei
    PHP-Code:
    <?php
    error_reporting
    (-1);
    ini_set('display_errors'TRUE);
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo combie,

      danke für die schnelle Antwort. Ich habe das Error Reporting in den Code eingefügt und bekam daraufhin folgende Fehlermeldung angezeigt:

      “Warning: Cannot modify header information - headers already sent by (output started at /homepages/35/d497452923/htdocs/contact.php:1) in /homepages/35/d497452923/htdocs/contact.php on line 93”

      Da weder vorhandene Leerzeichen, print oder echo Befehle das Problem sein konnten, habe ich weiter in diesem und anderen PHP-Foren nach der Fehlerlösung gesucht.

      Kurze Rede langer Sinn:

      Um eine funktionsfähige Weiterleitung zu generieren muss die php-Datei mittels Windows-Editor geöffnet und in der Codierung ANSI abspeichert werden.

      Also liegt das Problem an der Codierung. Darum habe ich im Php-Abschnitt der contact.php Datei mal folgendes probiert:
      [COLOR=Red]
      …[/COLOR]

      [COLOR=Red]header('Content-Type: charset=ANSI'); [/COLOR]
      [COLOR=Red]header ("Location: http://www.Eigene_Homepage.de/danke.html");[/COLOR]
      [COLOR=Red]exit;[/COLOR]
      [COLOR=Red]…[/COLOR]

      Und im html-Abschnitt der contact.php Datei

      [COLOR=Red]<head>[/COLOR]
      [COLOR=Red] <meta content="text/html; charset=ANSI" http-equiv="Content-Type" />[/COLOR]
      [COLOR=Red]…[/COLOR]

      Der erhoffte Erfolg bleibt jedoch aus. Daher meine letzte Frage:

      Gibt es eine Möglichkeit, die Codierung der Php-Datei gleich im Code in ANSI zu ändern oder muss ich jede PHP-Datei immer manuell per Editor umschreiben?

      Wäre euch für Tipps oder Antworten echt sehr dankbar.

      Pati
      Zuletzt geändert von PatSch; 12.03.2014, 10:29.

      Kommentar


      • #4
        Ansi?
        Wie und warum?

        Neee.....

        Es gehen alle Codierungen, wenn denn Server und Client sich einig sind.
        Der Browser sagt dem Server, was er kann. Und du solltest auf die Ansage angemessen reagieren.


        Vermutung:
        Aber das ist nicht dein Problem.
        Du hast deinen Editor vorher auf utf-8 mit BOM eingestellt gehabt.
        Und genau diese BOM hat dir den Streich gespielt.
        Also Haken bei BOM weg und gut ist.

        Die meisten/alle Browser können utf-8.
        Wir werden alle sterben

        Kommentar


        • #5
          Was würde man im Leben nur ohne Fachleute machen. Danke combie, es ist genau wie du es beschrieben hast. Die Codierung war für alle Php-Dateien in „utf-8 mit BOM“ eingestellt. Bei den zwei kleinen 2 Websites zuvor (ohne Php) gab es nie irgendwelche Probleme in der Richtung, von daher war die ganze Php-Geschichte diesmal Neuland für mich (paar Vorkenntnisse in der Makro-Programmierung, mehr nicht). Hoffe ich habe nicht genervt. Also nochmals für deine Hilfe, ich kann dieses Forum nur weiter empfehlen.

          Schönen Abend noch


          Tschüss


          Pati

          Kommentar

          Lädt...
          X