php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.02.2011, 19:56  
Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Quellcode befindet sich auf einem aufstrebenden Ast
Standard Session verschwindet

Guten Abend,


ich stehe wieder an einem Punkt an dem ich selbst nicht mehr weiter weiß...

Es gibt eine Datei die in einem Bestellablauf aufgerufen wird (immer).
Dort wird folgendes gesetzt:

PHP-Code:
$ShopID=1;
$_SESSION['userShop']=$ShopID
Vorher wird per Include eine Head Datei eingelesen, worin Session_Start() vorkommt!

Direkt nachdem ich auf dieser Datei bin, tippe ich in der Adressleiste eine weitere Datei ein mit folgendem Inhalt:

PHP-Code:
<?php
session_start
();
$ID=$_SESSION['userShop'];


if(
$ID==1){
    
$URL="Seite1.php";
}else{
    
$URL="Seite2.php";
}
header ("Location: $URL");
?>
Nun sollte Seite1 auf gehen - richtig!

Das selbe wie oben gibt es natürlich mit ShopID=2 (wieder andere Datei).

Nun sollte Seite 2 auf gehen - es läuft nicht ... nicht mehr !
Obwohl ich an diesem Skript nichts verändert habe, läuft es einfach nicht mehr... was übersehe ich?
Quellcode ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.02.2011, 00:06  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Quellcode Beitrag anzeigen
Direkt nachdem ich auf dieser Datei bin, tippe ich in der Adressleiste eine weitere Datei ein mit folgendem Inhalt:
Bemühe dich bitte etwas mehr um eine fachlich halbwegs korrekte Ausdrucksweise.

„In der Adressleiste eine Datei eintippen“ ist bspw. eine ziemliche Nonsense-Formulierung.

Zitat:
Obwohl ich an diesem Skript nichts verändert habe, läuft es einfach nicht mehr... was übersehe ich?
Zuerst mal, dass „läuft nicht“ keine brauchbare Problembeschreibung ist.

Welches Verhalten erwartest du, was beobachtest du stattdessen?
Welche Schritte hast du bisher unternommen, um den Fehler genauer zu untersuchen? error_reporting vernünftig eingestellt; Testausgaben gemacht, um bspw. die korrekte Übergabe der Session-ID zu überprüfen, ...?

Und lies bitte im Handbuch nach, warum dein Location-Header fehlerhaft ist.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 24.02.2011, 06:05  
Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Quellcode befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Bemühe dich bitte etwas mehr um eine fachlich halbwegs korrekte Ausdrucksweise.

„In der Adressleiste eine Datei eintippen“ ist bspw. eine ziemliche Nonsense-Formulierung.


Zuerst mal, dass „läuft nicht“ keine brauchbare Problembeschreibung ist.

Welches Verhalten erwartest du, was beobachtest du stattdessen?
Welche Schritte hast du bisher unternommen, um den Fehler genauer zu untersuchen? error_reporting vernünftig eingestellt; Testausgaben gemacht, um bspw. die korrekte Übergabe der Session-ID zu überprüfen, ...?

Und lies bitte im Handbuch nach, warum dein Location-Header fehlerhaft ist.

Okay, wenn ich mir meine Beschreibung heute Morgen noch einmal ansehe, muss ich zugeben, das war ein wenig formulierungsschwach!

Ein neuer Versuch:

Ich habe insgesamt drei PHP Dateien:

1. hier wird eine durch den Befehl $_SESSION['userShop']=1; der Wert in userShop auf 1 gesetzt.

2. hier wird eine durch den Befehl $_SESSION['userShop']=2; der Wert in userShop auf 2 gesetzt.

3. hier soll der Wert ausgelesen werden, ich nutze aktuell diese Code Zeilen:
PHP-Code:
<?php
@session_start();
$ID=$_SESSION['userShop'];

echo
"Session: $ID";
?>

Der Wert verändert sich bei mir in Datei 3. nicht mehr!
Egal, ob ich vorher Datei 1 oder 2 im Browser (Firefox) aufrufe...

Was ist an Header Location nicht richtig?
Habe gerade danach gegoogelt... konnte nichts finden und es klappt auch, nur auf Grund der falschen ID (siehe ersten Post).


EDIT:

Lokal funktioniert auch alles - es kommt nur zu dem Problem, wenn ich es vom Webspace aus probiere.

Mir ist aufgefallen, dass mehrere unterschiedliche Sessions gleichzeitig laufen... Jedoch sollten diese nach beenden des Browsers doch verschwunden sein!?

Wer kann mir helfen?

Geändert von Quellcode (24.02.2011 um 06:54 Uhr).
Quellcode ist offline   Mit Zitat antworten
Alt 24.02.2011, 08:38  
Erfahrener Benutzer
 
Registriert seit: 01.01.2010
Beiträge: 202
PHP-Kenntnisse:
Anfänger
CoKeSiDe befindet sich auf einem aufstrebenden Ast
CoKeSiDe eine Nachricht über ICQ schicken
Standard

Warum Fehlerunterdrückung bei session_start() ?! Wird die Session überhaupt gestartet?

Was steht in $_SESSION['userShop'] beim aufruf? Wird dort was reingeschrieben? Bzw. ist sie überhaupt belegt, beim aufruf des Scriptes?
CoKeSiDe ist offline   Mit Zitat antworten
Alt 24.02.2011, 09:02  
Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Quellcode befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von CoKeSiDe Beitrag anzeigen
Warum Fehlerunterdrückung bei session_start() ?! Wird die Session überhaupt gestartet?

Was steht in $_SESSION['userShop'] beim aufruf? Wird dort was reingeschrieben? Bzw. ist sie überhaupt belegt, beim aufruf des Scriptes?
Die Fehlerunterdrückung war nur ein Versuch, sie ist natürlich nicht erforderlich.

Die Session wird gestartet, allerdings eine neue (neue ID).
Mein aktuellster Versuch war es noch session_name('Test'); vor jeden
session_start Aufruf zu setzten, damit die gleiche Session verwendet wird.

Die Werte von Datei 1 und 2 werden wohl überhaupt nicht beachtet (in Datei 3)

Wichtig zu erwähnen ist noch, dass ich die Dateien jeweils nicht per Link, sonder per Direkteingabe in der Adressleiste aufrufe.
Sollte aber eigtl. kein Problem sein, oder?


Vielleicht auch wichtig - warum das ganze überhaupt:

Es gibt mehrere online Shops - jedoch mit nur einem Account auf PayPal, wo Rechnungen bezahlt werden!

Wenn ein Kunde von einem Shop (zB Shop 1) aus zu Paypal geleitet wird und die Bezahlung durchgeführt hat, so gelangt er später immer auf Datei 3.

Von dort soll über die Session ermittelt werden, in welchem Shop (in diesem Fall Wert: 1) er den Kauf getätigt hat. Damit er dann auf diesen zurück geleitet wird.
Quellcode ist offline   Mit Zitat antworten
Alt 24.02.2011, 09:33  
Erfahrener Benutzer
 
Registriert seit: 01.01.2010
Beiträge: 202
PHP-Kenntnisse:
Anfänger
CoKeSiDe befindet sich auf einem aufstrebenden Ast
CoKeSiDe eine Nachricht über ICQ schicken
Standard

Zitat:
Wichtig zu erwähnen ist noch, dass ich die Dateien jeweils nicht per Link, sonder per Direkteingabe in der Adressleiste aufrufe.
Wenn der Cookie nicht gespeichert werden kann, weil du zum Beispiel keine Cookies annimmst, kann dies zu Problemen führen weil der GET Paramenter sid fehlt .

Vielleicht probierst du es ja mal so anzuhängen.

Geändert von CoKeSiDe (24.02.2011 um 09:43 Uhr).
CoKeSiDe ist offline   Mit Zitat antworten
Alt 24.02.2011, 09:45  
Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Quellcode befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von CoKeSiDe Beitrag anzeigen
Wenn der Cookie nicht gespeichert werden kann, weil du zum Beispiel keine Cookies annimmst, kann dies zu Problemen führen weil der GET Paramenter sid fehlt .

Vielleicht probierst du es ja mal so anzuhängen.

Das Problem ist ja, dass von Paypal aus dieser Wert nicht mit versendet wird.
Die anderen Stellen im Shop System wo ich Session benutze bereiten mir keine Sorgen.
Zum Beispiel gibt der Besucher auf einer Seite seine Adressdaten ein, diese werden per Session gespeichert und am Ende der Bestellung (ca. 3 Seiten weiter) erst wieder ausgelesen - das funktioniert!

Gibt es sonst Alternativen?
Quellcode ist offline   Mit Zitat antworten
Alt 24.02.2011, 11:58  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Hast du den Session Cookie mal überprüft?

In der php.ini kann dies konfiguriert werden. Ich würd wetten das sich die Konfiguration von deiner lokalen Unterscheidet.

phpinfo() sagt dir mehr.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 24.02.2011, 13:10  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zunächst einmal ist dein Location Header nicht korrekt, dort wird eine voll qualifizierte URI erwartet.
PHP-Code:
<?php
session_start
();
$ID=$_SESSION['userShop'];


if(
$ID==1){
    
$URL="Seite1.php";
}else{
    
$URL="Seite2.php";
}
// WICHTIG!!!
session_write_close();
// 
header ("Location: $URL");
?>
Vor der Weiterleitung (auf eine eigene Seite) musst du die aktuelle Session schliessen, anderenfalls ist die Sessiondatei im anderen Script bereits geöffnet und damit gesperrt.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 24.02.2011, 15:23  
Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Quellcode befindet sich auf einem aufstrebenden Ast
Standard

Habe ich ausprobiert, leider ohne Veränderung des Resultats.
Es kommt auch eine richtige URL an der Stelle, Seite1 bzw Seite2 steht nur als Beispiel.

Habe mir phpinfo() auf dem Server und lokal angesehen, konnte keine direkten Unterschiede bemerken, also nichts spezielles.
Bei welchen Punkten soll ich hier besonders nachsehen?

Einzigste Änderung war session.bug_compat_42 (lokal: on / server: off)
Quellcode ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session GC und Timeout nutcracker PHP Einsteiger 1 24.01.2011 19:32
[Erledigt] $_SESSION frage tomnar PHP Tipps 2010 24 09.11.2010 19:37
session variable verschwindet bei erneutem seitenaufruf david.a.p. PHP Tipps 2009 2 17.08.2009 16:07
SessionHandler - Sessions in einer Datenbank #Avedo Software-Design 11 04.05.2009 15:44
[Erledigt] Problem mit der übergabe einer Session ID Shinak PHP Tipps 2009 12 13.03.2009 14:30
Session nofear87 PHP Tipps 2008 8 05.11.2008 10:42
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Klassenobjekt in ner Session speichern?! Finkman PHP Tipps 2005-2 5 09.08.2005 00:38
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session verschwindet, was steht in $_session, codeigniter session auslesen, paypal session, beim wechsel zu cookie neue session, session codeigniter problem, session id bei jedem seitenaufruf anders codeigniter, session verschwindet bei seitenaufruf, php sessions verschwinden, codeigniter session_id problem, paypal session übergeben mit sid geht nicht, php nach paypal session leer, paypal session id mit übergeben, codeigniter session verschwindet, session nach header location leer, paypal session timeout, anleitung php session bestellung mehrere seiten, session verschwinden php, php.de session, php session_start veränert

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum