tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1194
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Hi Mit-Tutorianer,

    habe da ein kleines aber dringendes Problem: Bei einem Projekt von mir soll das Login-System ab jetzt nur noch mit Cookies anstatt von der Session in der URL funktionieren. (eBay lässt grüßen)
    Dafür habe ich in der php.ini folgende Werte gesetzt:

    PHP-Code:
    session.use_cookies 1
      session
    .use_only_cookies 1
      session
    .use_trans_sid 0
             
             session
    .auto_start 0
             session
    .cookie_path = /
             
    session.cookie_domain 
    Am Script selbst habe ich nichts geändert....

    Problembeschreibung:
    • Ich fülle das Formular (auf intern.php) aus und schicke es ab.
    • Die Daten gehen an die Datei login.php per POST.
    • Dort werden sie überprüft und bei Erfolg wird der Besucher auf die Seite intern.php weitergeleitet
    • Nun ist $_SESSION["eingeloggt"] auf "1" gesetzt...der Besucher ist im internen Bereich
    • Im Firefox und im IE wird auch das Cookie mit der Session-ID gesetzt
    • Nun klicke ich auf eine andere Seite und *schwups* habe ich die Session verloren
    Die besagte andere Seite hat session_start() und alle anderen nötigen Sachen drin...sie hat ja früher mit der Session in der URL einwandfrei funktioniert.

    Meine Vermutung: Der Server hat keine Berechtigung sich das Cookie wieder zu holen...session.cookie_domain habe ich nicht gesetzt, da auf dem Server sehr viele Domains sind und wenn ich es leer lasse automatisch der Host im Cookie steht.

    Ist da ein grober Fehler erkennbar?
    Bin ich auf dem richtigen Weg?

    mfg
    sam
     

  2. #2
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Kann das vielleicht an session.cache_limiter liegen?
    Bin hier langsam richtig am verzweifeln...

    mfg
    sam
     

  3. #3
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    So, um diesen Monolog mal ein wenig weiterzuführen: Session wird erstellt, ich kann diese auch mit Daten füllen, aber beim nächsten Seitenaufruf bekommt der User wieder eine neue Session-ID und verliert dadurch natürlich alle Daten, obwohl er bereits ein Cookie mit einer gültigen Session-ID besitzt.

    Kann ich das irgendwie umgehen?
    Soll ich die internen Funktion von PHP deaktivieren und die Cookies selbst setzen?
    Wie kann ich dem Server sagen, welchem User welche Session-ID gehört, wenn ich diese aus dem Cookie lese?

    Hilfe!

    mfg
    sam
     

  4. #4
    Avatar von sparco
    sparco sparco ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Ort
    Kiev, Ukraine
    Beiträge
    90
    du musst so machen:
    PHP-Code:
    session_start();
    if (!isset(
    $_SESSION['...']))
    {
      
    $_SESSION['...'] = ...;
    }
    else
    {
      
    //normale seite

     

  5. #5
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Mach mal ein print_r($_COOKIE) und ein print_r($_SESSION) in deine Scripts, um den Fehler weiter einzugränzen. Dann siehst du, ob der Session-Cookie auf wirklich übergeben wird, und falls ja, was in deinem Session-Array steht.
     

  6. #6
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Das habe ich beides schon probiert mit folgendem Ergebnis:
    Auf der ersten Seite, die nach der login.php folgt, ist alles ok.
    Cookie ist gesetzt und die Session ist mit meinen Daten gefüllt.

    Nun klicke ich auf einen Link (in dem ich natürlich mittlerweile keine Session-ID mehr übergebe) und schon wird für den User eine neue Session gestartet und ein neues Cookie gesetzt...leider für eine völlig leere Session.

    Meine Vermutung ist weiterhin, dass der Server das Cookie nicht lesen kann und deshalb die Verbindung Besucher <-> Session verliert...warum, ist mir allerdings ein großes Rätsel

    mfg
    sam
     

  7. #7
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Das Problem wird eher sein, dass der Browser das Cookie nicht mitschickt. Das solltest du dann überprüfen.
     

  8. #8
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Zitat Zitat von Oliver Gringel
    Das Problem wird eher sein, dass der Browser das Cookie nicht mitschickt. Das solltest du dann überprüfen.
    Habe schon div. Browser probiert (IE,FF,Opera)...jedes Mal mit dem gleichen Ergebnis.
    Wie kann ich denn prüfen, ob mein Browser das Cookie mitschickt?

    mfg
    sam
     

  9. #9
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Zitat Zitat von Constantin Vellenzer
    Wie kann ich denn prüfen, ob mein Browser das Cookie mitschickt?
    Natürlich per $_COOKIE
    War wohl ein wenig zu früh für mich

    Habe eine Testseite gebastelt um zu sehen was da überhaupt abgeht.
    Nachdem mich die login.php per Meta-Refresh nach erfolgreichem Login auf Seite 1 weiterleitet sehe ich folgendes:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
      Session-Name: s
      Session-ID: 448bd871ef03f2f57b490457bda73613
      
      _SESSION:
      
      Array
      (
        [eingeloggt] => 1
        [id] => 5
      )
      
      _COOKIE:
      
      Array
      (
        [s] => 448bd871ef03f2f57b490457bda73613
      )
    Wie man sieht: Alles ist okay. Cookie wurde gesetzt, wieder übertragen und enthält auch die richtige Session-ID.

    Nun klicke ich auf einen Link, der mich auf Seite 2 führt.
    Dort wartet folgende Seite auf mich:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
      Session-Name: s
      Session-ID: 61f3c72b4af23d24f9552fd9af609909
      
      _SESSION:
      
      Array
      (
      )
      
      _COOKIE:
      
      Array
      (
        [s] => 448bd871ef03f2f57b490457bda73613
      )
    Wie man sieht....sieht man nichts
    Cookie hat noch die alte Session, wurde auch übertragen, aber der dumme Server startet eine neue Session...wieso?

    Ich glaube mittlerweile, dass das an der Konfiguration der PHP.INI liegt, da mein osCommerce gleiche Symptome aufweist...da ist der Warenkorb auch immer wieder leer, wenn ich weiter einkaufen will.
    Leider findet man zur Konfiguration der PHP.INI für Sessions mit Cookies im Netz relativ wenig.

    mfg
    sam
     

  10. #10
    Avatar von achimj
    achimj achimj ist offline Mitglied
    Registriert seit
    Oct 2003
    Ort
    Köln
    Beiträge
    18
    Nur so eine Idee, ich hatte mal ein ähnliches Problem:

    Hast Du ein SSI-include von php-Seiten?

    Edit: ähm, sorry, bl.. ausgedrückt, nochmal neu

    Hast Du eine index.html, die nur daraus besteht, dass die index.php included wird (über .htaccess-"SSI auch in html-Seiten ausführen"-Änderung)?
    Wird hierbei die index.html verlinkt, geht meist die session verloren und wird auf jeder Seite neu gesetzt.
    Setzt Du hingegen mod_rewrite ein, müsste es dann einwandfrei funktionieren.

    Wenn meine Idee völlig daneben liegt, gebt bitte Bescheid.


    Schöne Grüsse,
    Achim
    Geändert von achimj (04.01.05 um 14:25 Uhr)
     
    www.ajc.de

  11. #11
    Registriert seit
    Nov 2001
    Beiträge
    1.931
    Zitat Zitat von achimj
    Hast Du eine index.html, die nur daraus besteht, dass die index.php included wird
    Danke für den Versuch, aber so etwas kommt bei mir nicht zum Einsatz.

    Habe es gerade eben zum Laufen gebracht.
    Das Problem lag nicht im Script, wie bereits vermutet, sondern in der verflixten php.ini
    session.referer_check = 1 will nicht funktionieren.
    session.referer_check = 0 auch nicht.
    session.referer_check = geht
    Ich kann es mir nicht erklären, aber ich bin froh, dass es wieder alles rennt.

    Danke an alle hier für ihre Mühe!

    mfg
    sam
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 23.06.08, 21:09
  2. Session SID geht bei include verloren
    Von abakuz im Forum PHP
    Antworten: 7
    Letzter Beitrag: 14.09.06, 19:51
  3. Session in Frame geht verloren
    Von gwittmann im Forum PHP
    Antworten: 1
    Letzter Beitrag: 25.05.05, 11:53
  4. Antworten: 2
    Letzter Beitrag: 10.10.04, 09:00
  5. Cookie wird bei Session nicht richtig gesetzt
    Von Dick Starbuck im Forum PHP
    Antworten: 9
    Letzter Beitrag: 27.12.02, 11:07