tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
28
ZUGRIFFE
1346
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Im Quelltext steht nichts? Bei welchem Aufruf (direkt ohne Session, direkt mit gültiger Session, direkt mit abgelaufener Session)? Ohne oder mit abgelaufener musst du daran denken, dass er weiterleitet, eventuell auf eine leere Seite.
    Das "lustige" daran ist, dass in der Adresszeile der Name der "Login-Formular"-Seite drin stehen bleibt (index2.php). Und man kann sich keinen Quelltext anzeigen lassen, auch mehrmaliger Aufruf von Ansicht > Quelltext bringt da nichts...
    Weitergeleitet wird, wie du vielleicht im Source-Code gesehen hast, nach setzen der ganzen Session-Variablen. Und es befindet sich auf jeder Seite ganz am Anfang ein session_start();

    Das Hallo davor macht die Seite natürlich invalide. Vielleicht etwas im Markup, dass IE erst beim zweiten Durchlauf versteht? Teste nur das Markup in einer einfachen .htm
    Wenn ich nur die HTML-Elemente lasse, zeigt er die Seite bei gleichem Aufruf richtig an. So war es ja auch mit der originalen, wenn ich die login.php direkt aufgerufen habe (und natürlich die Userdaten schon fix eingegeben habe).

    Wie würdest du dir das erklären, wenn er etwas erst "beim 2. Mal" versteht?

    lg
     

  2. #17
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von Dörti.Hermi Beitrag anzeigen
    Wie würdest du dir das erklären, wenn er etwas erst "beim 2. Mal" versteht?
    So etwas hatte bisher immer mit der Session bei mir zu tun, welche durch Weiterleitung die Cookies nicht an den Browser ausliefern konnte. Daher meine Frage in welchem Zustand die Seite aufgerufen wurde. Das dort ein session_start() steht ist mir bewusst. Lässt du die Cookies bestehen und hast immer eine gültige Session-ID drin, oder löscht du diese jedes mal?

    Du solltest dir einmal die empfangenen Header ansehen. Geht bei deinem Fall per PHP, indem headers_list() in einer Datei gespeichert wird. Das sollte einigen Aufschluss geben.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  3. #18
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Ich setze einmal in der login.php bei erfolgreichem Login 4 Session-Variablen (= Cookies?) Unteranderem $_SESSION["user_id"], wo die User-Id aus der Datenbank gespeichert wird. Diese wird bei jedem Aufruf abgefragt, ob sie gesetzt ist, und falls nicht, ist ja niemand eingeloggt, und der wird auf die index-Seite zurückverwiesen. Erst dann beim Klick auf Logout (oder automatisch nach 15 Minuten) wird die logout.php aufgerufen, wo
    PHP-Code:
    session_start (); 
    session_unset (); 
    session_destroy (); 
    drin steht. Diese Befehle sind sonst nirgends vorhanden.

    Mit dem headers_list() hab ich 3 mal das gleiche herausbekommen. Hab
    PHP-Code:
    var_dump(headers_list()); 
    nach jedem session_start(); (also gleich zu Beginn) bei index2.php, login.php und intern.php eingefügt. 3 Mal das hier bekommen:

    Code :
    1
    2
    3
    4
    5
    6
    
    array(4) {
    [0]=> string(24) "X-Powered-By: PHP/5.2.10"
    [1]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT"
    [2]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
    [3]=> string(16) "Pragma: no-cache"
    }

    Was bedeutet das jetzt?

    lg
     

  4. #19
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von Dörti.Hermi Beitrag anzeigen
    Was bedeutet das jetzt?
    Du siehst dort keine Cookies (für die Session) und auch keine Location (für das Redirect). Das bedeutet du hattest schon eine am laufen oder es wird keine erstellt.
    (Zu Prüfen mit getallheaders())

    Sind das die Header-Daten am Ende vom Skript bzw. vor einem exit() ?
    Geändert von ZodiacXP (30.09.09 um 18:32 Uhr)
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  5. #20
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Also die Daten von vorher, die hat er alle bei var_dump(headers_list()) direkt nach session_start(); ausgegeben.

    Wenn ich nach session_start() auf der index-Seite (ohne eingeloggt zu sein) getallheaders() ausgebe, kommt folgendes:
    PHP-Code:
    array(10) { 
    [
    "Host"] =>  string(11"[..url...]"
    ["User-Agent"] =>  string(85"Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3"
    ["Accept"]=>  string(63"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    ["Accept-Language"]=>  string(35"de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"
    ["Accept-Encoding"]=>  string(12"gzip,deflate"
    ["Accept-Charset"]=>  string(30"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
    ["Keep-Alive"]=>  string(3"300"
    ["Connection"]=>  string(10"keep-alive"
    ["Cookie"]=>  string(42"PHPSESSID=5c8977dc4f94994928e34c0722bd56e8" ["Cache-Control"]=>  string(9"max-age=0" 

    Also hat er hier offensichtlich noch eine Session offen von früher offen oder?
     

  6. #21
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von Dörti.Hermi Beitrag anzeigen
    Also hat er hier offensichtlich noch eine Session offen von früher offen oder?
    Ganz genau. So kannst du prüfen ob eine Session-ID bei dir eingeht und dementsprechend reagieren (um das Skript vollständig zu testen). Irgendwo im Zusammenhang mit Sessions vermute ich den Fehler.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  7. #22
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Ach das wird ja mal wieder eine lustige Suche

    Zusammengefasst heißt das, dass er (höchstwahrscheinlich) deshalb falsch reagiert, weil noch ein altes Session-Cookie vorhanden ist, richtig? Wie und wann sollte ich denn alles was mit Session zu tun hat rücksetzen/löschen? Es müsste doch eigentlich reichen, wenn die logout.php aufgerufen wird oder?

    lg
     

  8. #23
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Klar. Diese löscht die Session und unter Umständen auch das Cookie. Hab das bei IE6 nie mir angesehen.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  9. #24
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Hallo wieder mal,

    hab jetzt folgendes beobachtet:
    Wenn ich den IE 6 öffne, und mich einlogge funktioniert alles wie gewünscht, da er direkt nach dem Start ja keine Session gestartet/gespeichert hat. Dann tritt wieder (allersdings genauso unregelmäßig wie vorher) das übliche Problem auf, das er die intern.php nicht aktualisiert, obwohl die Seite einfach immer nur per GET-Parameter beeinflusst wird. Keine Ahnung warum.

    Und was mir jetzt aufgefallen ist, sowohl im IE als auch im FF, dass nach der logout.php im Header die PHPSESSID noch immer die gleiche SessionID von vorher drin steht. Ist das normal bzw. könnte das das Problem sein?

    Lg Andi
     

  10. #25
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von Dörti.Hermi Beitrag anzeigen
    Und was mir jetzt aufgefallen ist, sowohl im IE als auch im FF, dass nach der logout.php im Header die PHPSESSID noch immer die gleiche SessionID von vorher drin steht.
    Zitat Zitat von http://de.php.net/manual/de/function.session-destroy.php
    Mit der Session zusammenhängende globale Variablen und das Session-Cookie werden nicht gelöscht.
    Daran liegt es nicht. Wäre es sehr viel das ganze von Grund auf neu zu erstellen?
    Dann fängt man erst mit der Session an etc. und baut darauf auf. Oder ist das Skript schon so weit abgespeckt?
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  11. #26
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Das Script ist vollkommen fertig, und nicht gerade wenig.
    Habs leider versäumt von Beginn an mit IE 6 zu testen. Ich hab's prinzipiell auch so gemacht, dass ich alles bzgl. Session usw. am Anfang geregelt habe. Hab mich auch an ein Tutorial von hier gehalten, praktisch 1:1 übernommen, nur Bezeichnungen usw. geändert...
     

  12. #27
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Das nahezu Unmögliche ist geschehen

    Das Problem war folgendes:
    Der Grund, warum die Seite nicht aktualisiert wurde, ist, dass der IE6 dieses meta Tag nicht verstanden hat:
    HTML-Code:
    <meta http-equiv="content-Type" content="text/html; charset=utf-8">
    Dann hab ich ausprobiert, ob der dieses versteht:
    HTML-Code:
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    und siehe da, es geht! Der FF zeigts in utf-8 an, der IE im ISO Format.
    Ich hab's jetzt mal vorläufig so gelöst:
    HTML-Code:
    <!--[if lte IE 6]><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><![endif]-->
    <meta http-equiv="content-Type" content="text/html; charset=utf-8">
    Zwar nicht gerade sauber, aber was solls.

    Das einzige Problem, das ich nun noch beheben muss, ist, dass alle Umlaute im IE nicht korrekt dargestellt werden. Wie löse ich das am besten?
    Gibt es php-Funktionen, die die Ausgabe berichtigen, oder soll ich die Umlaute vorm Abspeichern in der Datenbank durch &auml; etc. ersetzen? Oder wäre es besser überhaupt ins Iso-Format zu wechseln?

    Lg
     

  13. #28
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Browser irgendwie erkennen und vorher in PHP utf8_encode oder utf8_decode anwenden.

    Aber das IE6 UTF-8 nicht versteht hätte ich nie gedacht. Vielleicht gefällt ihm auch nicht das utf klein geschrieben ist oder das T bei Type groß.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  14. #29
    Avatar von Dörti.Hermi
    Dörti.Hermi Dörti.Hermi ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Ort
    Österreich
    Beiträge
    201
    Das mit groß/klein war's nicht. Verwende jetzt einfach für alle Browser das ISO-Format, hab's in der DB auch so eingestellt, und nun geht alles so wie's soll

    Lange und schwere Geburt war das
    Aber....das Baby is raus

    Danke für die zahlreichen, hilfreichen Beiträge, besonders von dir Zod

    Lg Andi
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 02.11.09, 20:41
  2. IE Problem mit header-location
    Von Hattrix im Forum PHP
    Antworten: 6
    Letzter Beitrag: 11.07.07, 15:02
  3. header("location... Problem
    Von Katzehuhn im Forum PHP
    Antworten: 7
    Letzter Beitrag: 19.06.05, 13:15
  4. Problem mit: Header("Location: main.php");
    Von NetPerformance im Forum PHP
    Antworten: 6
    Letzter Beitrag: 10.02.05, 21:33
  5. Antworten: 14
    Letzter Beitrag: 16.09.04, 02:36