Problem mit header-Weiterleitung

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

  • Problem mit header-Weiterleitung

    Hallo Forum,

    um URL-Manipulation vorzubeugen habe ich meine Scripte etwas erweitert und frage nun die angeforderte URL ($_SERVER['REQUEST_URI']) ab und vergleiche diese mit der, zur angeforderten ID passenden URL. Wenn die beiden URL's übereinstimmen, passt alles, wenn sie nicht übereinstimmen, wird die angeforderte URL so angepasst, dass sie zur ID passt.

    Kurzes Beispiel:

    angeforderte URL: www.domain.de/audi/330i/500.html
    korrekte URL: www.domain.de/bmw/330i/500.html

    In diesem Fall wurde zum Beispiel die URL manipuliert, indem der Hersteller BMW durch Audi ersetzt wurde. Nun ergibt meine Prüfung, dass der Hersteller des unter ID 500 abgespeicherten Autos nicht Audi sondern BMW ist und schickt folgenden header:
    PHP-Code:
          header("Location: ".$link_korrekter_pfad.""); 
    Das funktioniert soweit auch ganz gut, habe alles auf einer Testdomain geprüft, hat wunderbar funktioniert. Nun wollte ich es auf der Hauptdomain einbauen, da funktioniert es auf einmal nicht mehr, obwohl ich 1:1 die gleiche Datei verwende. Domains liegen beide auf dem gleichen Server (sollten also eigentlich die gleichen technischen Voraussetzungen haben). Trotzdem führt er auf meiner Hauptdomain den header nicht aus.

    Kann mir jemand sagen, an was das liegen könnte?
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    Inhalt der Variable, die du mit header() verwendest?
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Inhalt der Variablen ist folgender:

      /bmw/330i/500.html
      Das Genie überblickt das Chaos!

      Wer Rechtschreibfehler findet, darf sie behalten!

      Kommentar


      • #4
        Probier mal eine absolute URI..

        mfg

        Kommentar


        • #5
          Ganz grundsätzlich verlangt ein Redirect Header nach einer vollständigen URL inkl Protokoll
          Code:
          http://www.deineDomain.de/pfad/zum/file.php
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Falls das nicht hilft, wäre ne Testausgabe, und entsprechender Code natürlich sehr hilfreich...

            Kommentar


            • #7
              Und dran denken ne 301 (Moved permanently) Weiterleitung zu machen...

              header-Location alleine macht nur ne 302 (Moved Temporarily) und damit Google nicht die alte/falsche URL indziert solltes du ne sauberen 301 machen

              PHP-Code:
              header('Location: http://www.example.com'true301);
              exit(); 

              Das mit der vollständigen URL ist natürlich absolut richtig Du könntest dir die komplette URL zB so zusammen baun:
              PHP-Code:
              $valid_target 'http://'.$_SERVER['HTTP_HOST'].'/da_solls_hin.html'
              Zuletzt geändert von prego; 27.05.2008, 02:09.

              Kommentar


              • #8
                Wäre bei einer kaputt-manipulierten URL nicht ein 404 die richtige Antwort?
                Wir werden alle sterben

                Kommentar


                • #9
                  Das muß man selbst entscheiden - ich würde da auch die Übersicht anzeigen und nen 404 mitschicken. Es giebt nun mal keinen Audi 330i

                  Kommentar


                  • #10
                    Besten Dank für eure Unterstützung, leider lag es nicht an der unvollständigen URL, funktioniert nach wie vor nicht.

                    Wie kann das denn sein, dass die gleiche Datei auf dem gleichen Server unterschiedlich funktioniert?

                    Es werden vorher einige Datein includiert, die sich evtl. unterscheiden, kann ich irgendwie überprüfen, ob in den Dateien Zeichen bzw. Ausgaben sind, die den Header stören?

                    Komisch ist jedoch, dass mir nicht die Nachricht: Header already sent angezeigt wird.
                    Das Genie überblickt das Chaos!

                    Wer Rechtschreibfehler findet, darf sie behalten!

                    Kommentar


                    • #11
                      Was ich vielleicht auch noch erwähnen sollte: etwas weiter oben habe ich ebenfalls eine header-Weiterleitung, die zu Beginn prüft, ob überhaupt eine gültige ID vorliegt (besteht nur aus Ziffern, ist (derzeit) kleiner als 396).

                      Diese Weiterleitung funktioniert ordnungsgemäß. Fehlermeldung bekomme ich bei der zwieten Weiterleitung gar keine.
                      Das Genie überblickt das Chaos!

                      Wer Rechtschreibfehler findet, darf sie behalten!

                      Kommentar


                      • #12
                        Normal kann man seine Beiträge editieren...

                        Ist error_reporting voll aufgedreht?

                        Testausgaben gemacht (wie Tobiaz sagte) ?

                        mfg

                        Kommentar


                        • #13
                          Also, hab das error_reporting mal auf E_ALL gesetzt und erhalte folgende Meldungen:

                          Notice: Undefined variable: code in /homepages/pfad/zum/htdocs/website/inc/replace_modell.php on line 38

                          Warning: Cannot modify header information - headers already sent by (output started at /homepages/pfad/zum/htdocs/website/inc/sql_modelle.inc.php:19) in /homepages/pfad/zum/htdocs/website/modelle.php on line 64
                          Ich versteh aber nicht, warum der header bereits gesendet sein soll. Ich habe weder ein echo, noch sonst etwas auffälliges in den Dateien gefunden.
                          Das Genie überblickt das Chaos!

                          Wer Rechtschreibfehler findet, darf sie behalten!

                          Kommentar


                          • #14
                            Die Fehlermeldung ist auch eine Ausgabe !!


                            Also bringe erstmal den Code in Ordnung.
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Ja das ist mir schon klar, aber wie soll ich hier sonst eine Ausgabe posten? Wie gesagt, wenn ich das error_reporting ausstelle, dann bekomme ich keine Meldungen.
                              Das Genie überblickt das Chaos!

                              Wer Rechtschreibfehler findet, darf sie behalten!

                              Kommentar

                              Lädt...
                              X