php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-08-2010, 14:38
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Unhappy Probleme mit SESSION

Hallo zusammen!

Habe ein kleines Online-Bestellsystem für Gastro-Lieferdienste programmiert und alles funktioniert soweit auf meinem localhost. Auf dem Webserver von strato funktioniert auch alles soweit bis auf folgendes:

Die Artikel samt Kundendaten werden in $_SESSION['order'] und $_SESSION['customer'] gespeichert. Klickt der Kunde auf "Bestellen" und wählt als Zahlungsart "sofortüberweisung.de" wird der Kunde mit Übergabe der Variablen auf die Seiten von "sofortüberweisung.de" umgeleitet. Nach erfolgreicher Transaktion gelangt der Kunde wieder auf ../shop.php mit entsprechenden Parameter zur Überprüfung - dann soll eigentlich die Bestellung gesendet werden - ABER die SESSION ist gelöscht!

Auch durch die folgende Änderungen an der PHP-Konfiguration ändert nichts:

PHP-Code:
    ini_set("session.use_cookies","1");    
    
ini_set("session.use_trans_sid","0");
    
ini_set("session.cookie_lifetime","0");
    
ini_set("session.use_only_cookies","On");
    
ini_set("session.gc_probability","1"); 
    
ini_set("session.gc_divisor","1000");
    
ini_set("session.gc_maxlifetime",3600);
    
ini_set("session.name","PHPSESSID");
    
ini_set("session.auto_start","0"); 
Was mache ich falsch oder muss ich noch beachten, damit das ganze auch bei Strato funktioniert?

Über kleine Hilfen würde ich mich riesig freuen!

MfG

Marcel
Mit Zitat antworten
  #2 (permalink)  
Alt 11-08-2010, 15:23
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wie kommst du auf die Idee dass Zahlen durch Anführungszeichen aufgewertet, oder schöner werden?
Da muss ich dich enttäuschen: Dem ist nicht so!


Wechselt die Session ID ?
Vermutlich ja!

error_reporting() aktiviert?
Vermutlich nein!
Tue das.

Mit der Live Headers Erweiterung des FF kannst du die übergebenen Header analysieren.
Tue das.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 11-08-2010, 15:26
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

startest du die Session auch mit session_start()? Evtl. ist auf deinem lokalen System session.auto_start aktiviert? Bleibt die Session denn erhalten, wenn der Benutzer auf deiner Seite bleibt? Geht sie verloren, wenn du zu einer beliebigen anderen Seite wechselst und dann wieder zurückkehrst? Ist bei Strato ein Wert für session.referer_check gesetzt (phpinfo())? Mehr Infos wären nicht schlecht.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #4 (permalink)  
Alt 11-08-2010, 15:36
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antwort!

Habe die Anführungszeichen weggelassen und error_reporting hinzugefügt, gibt mir aber kein error aus:
PHP-Code:
        error_reporting(E_ALL);
        
ini_set("session.use_cookies",0);    
        
ini_set("session.use_trans_sid",0);
        
ini_set("session.cookie_lifetime",0);
        
ini_set("session.use_only_cookies",0);
        
ini_set("session.gc_probability",1); 
        
ini_set("session.gc_divisor",1000);
        
ini_set("session.gc_maxlifetime",3600);
        
ini_set("session.name","PHPSESSID");
        
ini_set("session.auto_start",0); 
session_start() ist im header. Hier die phpinfo():

Session Support enabled Registered save handlers files user sqlite Registered serializer handlers php php_binary
DirectiveLocal ValueMaster Value session.auto_startOffOff session.bug_compat_42OffOff session.bug_compat_warnOnOn session.cache_expire180180 session.cache_limiternocachenocache session.cookie_domainno valueno value session.cookie_httponlyOffOff session.cookie_lifetime00 session.cookie_path// session.cookie_secureOffOff session.entropy_fileno valueno value session.entropy_length00 session.gc_divisor10001000 session.gc_maxlifetime36001440 session.gc_probability11 session.hash_bits_per_character55 session.hash_function00 session.namePHPSESSIDPHPSESSID session.referer_checkno valueno value session.save_handlerfilesfiles session.save_path/tmp2;/var/tmp session.serialize_handlerphpphp session.use_cookiesOnOn session.use_only_cookiesOnOff session.use_trans_sid01
Demnach ist bei STRATO kein Wert bei session.referer_check angegeben.

Welche Infos benötigt Ihr zusätzlich?

Danke!

hmm

Geändert von AmicaNoctis (11-08-2010 um 15:42 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11-08-2010, 15:41
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von SnowMan Beitrag anzeigen
Welche Infos benötigt Ihr zusätzlich?
Wie wäre es damit?:

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Bleibt die Session denn erhalten, wenn der Benutzer auf deiner Seite bleibt? Geht sie verloren, wenn du zu einer beliebigen anderen Seite wechselst und dann wieder zurückkehrst?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 11-08-2010, 15:44
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Die Session bleibt erhalten laut Live HTTP Headers...
Mit Zitat antworten
  #7 (permalink)  
Alt 11-08-2010, 15:45
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

So soll es beginnen!
PHP-Code:
<?php
error_reporting
(-1);    
ini_set('display_errors'TRUE);
(zumindest während des Debuggens, danach kannst du es wieder abschalten.)


Zitat:
session_start() ist im header.
Was soll das bedeuten?
Warum hältst du den zugehörigen Code geheim?


Zitat:
Die Session bleibt erhalten laut Live HTTP Headers...
Dann löscht du selber irgendwo die Daten, oder Strato baut Bockmist, was ich aber nicht glaube.
__________________
Wir werden alle sterben

Geändert von combie (11-08-2010 um 15:48 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 11-08-2010, 15:49
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Ich muss mich korrigieren - die Session bleibt nicht erhalten, werde den die Anweisungen von combie kurz einbauen...
Mit Zitat antworten
  #9 (permalink)  
Alt 11-08-2010, 15:53
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
So soll es beginnen!
PHP-Code:
<?php
error_reporting
(-1);    
ini_set('display_errors'TRUE);
(zumindest während des Debuggens, danach kannst du es wieder abschalten.)



Was soll das bedeuten?
Warum hältst du den zugehörigen Code geheim?



Dann löscht du selber irgendwo die Daten, oder Strato baut Bockmist, was ich aber nicht glaube.



----------------------
Hier der Code im Header:

PHP-Code:
<?php
    
    
//if (! isset($_SESSION)){
        
error_reporting(-1);
        
ini_set('display_errors',TRUE);
        
ini_set("session.use_cookies",0);    
        
ini_set("session.use_trans_sid",0);
        
ini_set("session.cookie_lifetime",0);
        
ini_set("session.use_only_cookies",0);
        
ini_set("session.gc_probability",1); 
        
ini_set("session.gc_divisor",1000);
        
ini_set("session.gc_maxlifetime",3600);
        
ini_set("session.name","PHPSESSID");
        
ini_set("session.auto_start",0);

        
session_save_path('/tmp');
    
//    ini_set("register_globals","On");
    //    ini_set("session.save_path",\);    
    //    ini_set("session.cookie_domain","www.milano-express.de");
        
session_start();
    
//}

    
if (! isset($catsel)){
        
$catsel="";
    }
?>
Mit Zitat antworten
  #10 (permalink)  
Alt 11-08-2010, 15:59
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Und, was bringts?
Machst du auch wirklich in JEDER aufgerufenen Datei das gleiche?

Lass doch mal die ganze Sessionkonfiguration weg!
Die Strato default Einstellungen sind für den Anfang durchaus brauchbar.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #11 (permalink)  
Alt 11-08-2010, 16:00
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
So soll es beginnen!
PHP-Code:
<?php
error_reporting
(-1);    
ini_set('display_errors'TRUE);
(zumindest während des Debuggens, danach kannst du es wieder abschalten.)



Was soll das bedeuten?
Warum hältst du den zugehörigen Code geheim?



Dann löscht du selber irgendwo die Daten, oder Strato baut Bockmist, was ich aber nicht glaube.

Mir werden keine Fehler angezeigt, SESSION wird geändert, aber erst nach der Umleitung von sofortueberweisung.de nach /shop.php... Hier noch mal der Code im Header:

PHP-Code:
<?php
    
    
if (! isset($_SESSION)){
        
error_reporting(-1);
        
ini_set('display_errors',TRUE);
        
ini_set("session.use_cookies",0);    
        
ini_set("session.use_trans_sid",0);
        
ini_set("session.cookie_lifetime",0);
        
ini_set("session.use_only_cookies",0);
        
ini_set("session.gc_probability",1); 
        
ini_set("session.gc_divisor",1000);
        
ini_set("session.gc_maxlifetime",3600);
        
ini_set("session.name","PHPSESSID");
        
ini_set("session.auto_start",0);

        
session_save_path('/tmp');
    
//    ini_set("register_globals","On");
    //    ini_set("session.save_path",\);    
    //    ini_set("session.cookie_domain","www.milano-express.de");
        
session_start();
    }

    if (! isset(
$catsel)){
        
$catsel="";
    }
?>
Mit Zitat antworten
  #12 (permalink)  
Alt 11-08-2010, 16:03
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Und, was bringts?
Machst du auch wirklich in JEDER aufgerufenen Datei das gleiche?

Lass doch mal die ganze Sessionkonfiguration weg!
Die Strato default Einstellungen sind für den Anfang durchaus brauchbar.
Ok, ich lass mal die Sessionkonfigurationen weg, in jeder Datei habe session_start() im Header. Ich überprüfe aber nochmal zur Sicherheit.
Die Sessionkonfig. hatte ich erst eingefügt, nachdem das schon nicht funktionierte - auf localhost funzt es ja...?
Mit Zitat antworten
  #13 (permalink)  
Alt 11-08-2010, 16:12
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
in jeder Datei habe session_start() im Header.
Und nochmal: Was ist ein Header?
Ich kenne im diesem Zusammenhang nur:
1. HTTP Header
2. HTML Head
Also, welchen meinst du?

Und wenn deine Datei nur ein kleiner Teil eines großen Ganzen ist, dann teste doch erstmal mit eigenständigen Dateien in einem eigenständigen Testordner.

Ich habe täglich mit bei Strato gehosteten Websites zu tun, und ich kann dir schwören, dass das fehlerfrei funktioniert. (meistens)

Hier mal ein kleines (eigenständiges) Testprogramm:

PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);

class 
Counter
{
  protected 
$count=0;
  public function 
__wakeup()
  {
    ++
$this->count;
  }
  public function 
get()
  {
    return 
$this->count
  }
  public function  
__toString()
  {
    return (string)
$this->count
  }
}


session_start();

// Cache verhinderer
output_add_rewrite_var('random',mt_rand());

if(empty(
$_SESSION['Counter']))  $_SESSION['Counter'] = new Counter;



echo 
"Seitenbesuche:  {$_SESSION['Counter']}";
?>
<hr>
<a href="">Reload</a>
__________________
Wir werden alle sterben

Geändert von combie (11-08-2010 um 16:17 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 11-08-2010, 16:17
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Geh auf deine Seite, notiere die Session-ID, geh weiter auf sofortüberweisung, lass dich von dort zurückleiten auf deine Seite, notiere erneut die Session-ID.

Ich gehe jede Wette ein, dass die beiden Session-IDs auf deinem Zettel nicht gleich sind. Es wird also nach der Weiterleitung eine neue Session gestartet. Das geschieht i.d.R. aus einem der folgenden Gründe:
- Die alte SID wurde übertragen, aber auf dem Server existieren dazu keine Daten mehr (Session abgelaufen, TempFile gelöscht). Dagegen hilft eine längere Session-Laufzeit oder ein persistenter Speicher (DB).
- Die alte SID wurde nicht übertragen, der Server muss eine neue Session starten. Prüfe, ob das Session-Cookie in deinem Browser den Ausflug zu sofortüberweisung überlebt, setze ggf. die Gültigkeitsdauer hoch. Überlebt das Cookie, finde heraus warum dein Browser es nicht wieder mitschickt beim nächsten Request an deine Seite. Gilt das Cookie bspw. für Example Web Page und die Weiterleitung führt zu example.net ohne www?
Mit Zitat antworten
  #15 (permalink)  
Alt 11-08-2010, 16:32
SnowMan
 Registrierter Benutzer
Links : Onlinestatus : SnowMan ist offline
Registriert seit: Aug 2010
Beiträge: 11
SnowMan befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Geh auf deine Seite, notiere die Session-ID, geh weiter auf sofortüberweisung, lass dich von dort zurückleiten auf deine Seite, notiere erneut die Session-ID.

Ich gehe jede Wette ein, dass die beiden Session-IDs auf deinem Zettel nicht gleich sind. Es wird also nach der Weiterleitung eine neue Session gestartet. Das geschieht i.d.R. aus einem der folgenden Gründe:
- Die alte SID wurde übertragen, aber auf dem Server existieren dazu keine Daten mehr (Session abgelaufen, TempFile gelöscht). Dagegen hilft eine längere Session-Laufzeit oder ein persistenter Speicher (DB).
- Die alte SID wurde nicht übertragen, der Server muss eine neue Session starten. Prüfe, ob das Session-Cookie in deinem Browser den Ausflug zu sofortüberweisung überlebt, setze ggf. die Gültigkeitsdauer hoch. Überlebt das Cookie, finde heraus warum dein Browser es nicht wieder mitschickt beim nächsten Request an deine Seite. Gilt das Cookie bspw. für Example Web Page und die Weiterleitung führt zu example.net ohne www?

Die SESSION ist in der Tat dann nach Weiterleitung nicht mehr die gleiche.
Wenn ich manuell auf sofortüberweisung wechsle und ohne Transaktion wieder zurückkehre, ist die SESSION identisch. Es muss wohl mit der erfolgreichen Transaktion mit sofortüberweisung zu tun haben, denn bei Erfolg leitet sü auf den eingetragenen "Erfolgslink" um und dann wird eine neue SESSION generiert. Muss ich da noch irgendwas im Erfolgslink angeben, damit er keine neue Session generiert?
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
ini_set, php, session, sofortüberweisung


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
probleme mit ner session dani_o PHP Developer Forum 1 19-11-2007 07:52
probleme mit der session websdream PHP Developer Forum 1 28-01-2007 15:24
Probleme mit session Michi1g PHP Developer Forum 14 24-06-2006 12:20
Probleme mit Session PHPbeginner PHP Developer Forum 12 21-06-2005 11:12
probleme mit session larix PHP Developer Forum 5 20-11-2002 09:37

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.