PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Habe Bug - brauche tester


Sarah19
16.05.2006, 21:10:25
Hi,
bei einer meiner Seiten hat sich ein Bug eingeschlichen. Das Problem ist, dass die Session manchmal!!! nicht übergeben wird. Ich weiss nur nicht wo und wann, denn mir passiert es nie!

Es handelt sich um einen Warenkorb und die Bestellungen einiger Käufer fallen leer aus. Es steht nicht, was sie gekauft haben.

Deshalb wollte ich hier mal Fragen, ob einige von euch mal etwas bestellen können( gebt einfach Vorkasse an und schreib bei anmekrung oder beim Namen etc Tester Selfphp Forum. Dann wissen wir, dass die Bestellung nicht ernst gemeint ist.) und mir sagen könnt, ob ihr einen Fehler hattet oder nicht, und wenn ja, wann er aufgetreten ist. Die email an services(at)bikefarmmv.de.

Genau sollte es sein, dass der Artikel mit einem mal nicht mehr im Warenkorb ist, der Preis aber weiter angezeigt wird.
Ich danke euch viel, vielmals.
Sarah.

Ahso die Seite ist bikefarmmv.de

conmunich
19.05.2006, 02:21:19
bei mir klappt alles. keine ahnung woran das liegen könnte. was für ein shopsystem ist das?

Sarah19
19.05.2006, 08:49:16
Deshalb ja. Bei mir klappt es auch, habe es jetzt schon auf über ein duzend verschiedenen PC'S versucht, es ging immer einwandfrei. Aber es kommen jeden Tag leere bestellungen an :( Aber erst seit 10 Tagen!

System ist Marke Sarah19 eigenbau.

Grüzi

KTB
19.05.2006, 09:35:57
Vielleicht hebelt da jemand dein System aus. Überprüfe doch mal ob es durch irgendeine Eingabe in der Adresszeile möglich ist ein leeres Formular abzuschicken oder der irgendwie beim Klick auf den zurück-Button des Browsers alles vergisst oder so.

Sarah19
19.05.2006, 10:12:55
HI,
die Bestellungen kommen von Kunden, die auch wirklich etwas kaufen wollen. Nur leider haben die keine Ahnung wenn etwas falsch geht und können mir nicht weiterhelfen, deshalb hoffte ich, dass ihr mir helfen könnt.
Zu deinem Tip, habe ich bereits versucht gehabt. Kann den Fehler nicht finden. Es wird nichts über die Adresszeile weitergegeben, deshalb kann man von aussen ja auch nichts ändern. Vor und zurück ist auch alles i.o.
Habe jetzt mal eben 10 Minuten gewartet, nachdem ich etwas bestellt habe, dann passiert genau das was sonst auch passiert und die Felder brleiben leer.
Das geschiet da der Kunde eine neue Session bekommt. Was dann ja eben dazu führt, dass der Warenkorb leer ist, da man die alte ID ja nicht mehr hat.
Hat jemand eine Ahnung wieso? Warum bekommt man ne neue Session?

Danke

Edit: Also ich habe dies jetzt noch mehrmal geprüft, nach ca. 5 minuten bekommt man eine neue Session. Was ich äusserst komisch finde.
Hier meine Config:
<?php
$db_server = "xx";
$db_name = "xx";
$db_user = "xx";
$db_passwort = "xx";
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen! config.php<br>Wenn Sie diese Fehlermeldung erhalten, schreiben sie bitte an gunpeters@web.de UND bikefarmmv@t-online.de");
$db_check = @MYSQL_SELECT_DB($db_name);

// dies ist um zu vermeiden, dass Spider von Sumas ne Session bekommen.
$spiders = array("Googlebot","WebCrawler","Mediapartners-Google","msnbot","FAST-WebCrawler","slurp","Yahoo","lycos_spider","lynx",);
$from_spider=FALSE;
foreach($spiders as $Val)
{
if (eregi($Val, $_SERVER["HTTP_USER_AGENT"]))
{
$from_spider=TRUE;
break;
}
}
if(!$from_spider)
@session_start();
if (isset($_SESSION["sid"])) {
} else {
$tmp = md5(microtime());
$_SESSION["sid"]= $tmp;
}
?>
Und der beginn jeder Datei bei mir:
<?php
include("../EN/config/config.php");

$sid=$_SESSION["sid"];

Die $sid variable wird eben dann neu definiert, wenn man zu lange nichts gemacht hat.
Hat jemand eine Ahnung wieso das passiert?

conmunich
20.05.2006, 05:16:23
also das eine session so schnell neu vergeben wird ist ungewöhnlich. die standard zeit beträgt im normalfall 1440 sekunden oder 24 minuten. verwendest du cookies für die session? wenn nicht, dann wäre dies sicherlich ne gute möglichkeit, die daten beim user direkt als keks abzulegen.

allerdings habe ich selbst noch nicht viel erfahrung mit cookies. vielleicht kann mir mal jemand erklären, ob das bestehende cookie beim erneuern der session ebenfalls geleert wird??

mfg! conmunich

Sarah19
20.05.2006, 09:36:37
Nein ich verwende keine cookies, kann man ja auch aus dem Codeschnippsel sehen.
Nur wenn ich jetzt cookies verwende, dann muss ich ja mein gesamtes system umstellen und es auf jeder Seite einbaun bzw die session weg nehmen. Oder irre ich mich da?

Gruß Sarah

xabbuh
20.05.2006, 21:28:48
Was mir aufgefallen ist: Wenn ich Cookies deaktiviere, kann ich generell keine Produkte in den Warenkorb packen. Vielleicht hilft dir das weiter.

conmunich
20.05.2006, 22:58:27
Also Mozilla zeigt mir definitiv 4 Cookies an, die gesetzt werden, wenn ich deine Seite öffne. Davon sind 2 direkt von deiner Domain bikefarmmv.de und einer jeweils von top50-motorrad.de und xyz-freelogs.com.

Die Cookies deiner Domain heissen:

PHPSESSID - darin ist die PHP Session ID abgelegt - ist gültig, solange die session aktiv ist
t50m1 - darin sind infos über einen bestimmten content - ist genau 30 minuten lang gültig

Evtl. haben einige deiner Kunden Cookies deaktiviert. Das kann, wenn ich die Aussage von xabbuh genauer betrachte, natürlich der Auslöser sein.

In diesem Fall wäre es easy, die Leute darauf aufmerksam zu machen, in dem man per PHP überprüft, ob Cookies (im Browser) gespeichert werden dürfen.

Ich hoffe das hilft? mfg! conmunich

Sarah19
21.05.2006, 00:03:04
Hi,
danke für eure Hilfe,
Werde dann mal versuchen damit etwas anzufangen.

Eine kleine Frage habe ich aber noch, wird sicherlich für euch nicht schwer sein zu beantworten.
wieso erzeuge ich miot dem folgenden Code einen Cookie?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Start the session</title>
</head>

<body>

<?php
session_start();
//test1.php
if (isset($_SESSION["sid"])) {
} else {
$tmp = md5(microtime());
$_SESSION["sid"]= $tmp;
}


echo '<br><a href="seite2.php">Weiter</a>';

?>

</body>
</html>

Danke euch

conmunich
21.05.2006, 01:09:54
Um die Session ID clientseitig zu speichern, wird standardmässig ein Cookie erzeugt und zusätzlich die Session ins temporäre Verzeichnis geschrieben. Ich dachte nur, du nutzt Cookies zusätzlich für andere Daten aus dem Shop. Aber ein Cookie mit PHPSESSID wird automatisch angelegt.

mfg! conmunich

Giz
22.05.2006, 09:56:38
Habe eine Bestellung abgesandt :

Keine Cookies akzeptiert, Nach Artikelauswahl kommt \"Leerer Warenkorb\", Wenn ich die Browser zürück Funktion verwende und dann bei einem Artikel auf Warenkorb klicke, dann gibt es einen Warenkorb. Wenn ich die Funktion ZURÜCK auf der Seite nehme, dann ist der Warenkorb wieder leer. Jetzt habe ich die Browser ZURÜCK genutzt.


Es scheint geklappt zu haben?!

Giz
22.05.2006, 10:04:46
Ich nochmal....

Also bei mir werden auch keine Cookies, nicht mal Session_Cookies gespeichert.

Aufgefallen ist mir, dass die PHPSESSID= in der Adresszeile immer angegeben wird (vermutlich in Deinem PHP-Code so geregelt, d.h. Sessions funktionieren auch ohne Cookies).

AUSNAHME : Wenn ich etwas in den Warenkorb lege, dann wird dem nichts übermittelt. Demzufolge ist der Warenkorb LEER und beim "zurück" link geht dann möglicherweise etwas verloren?!

Aber wir sendet man eine Bestellung bei leeren Warenkorb ab?

meikel
22.05.2006, 14:45:36
Nein ich verwende keine cookies, kann man ja auch aus dem Codeschnippsel sehen.
Dein Script funktioniert aber nur dann, wenn der Client den Session Keks annimmt. Tut er das nicht, ist der Warenkorb leer.

Du übergibst zwar die Session_id als hidden Tag, aber warenkorb.php hat offenbar ein Problem damit, die Session OHNE Cookie wieder aufzunehmen.

Sarah19
23.05.2006, 10:07:47
Hi,
ich danke euch vielmals. Werde mich nach meinen Prüfungen darum kümmern.

Meikel, kann gut sein, dass dort etwas nicht richtig läuft. Hatte zuerst bestellen nur mit Bestellformular, dann habe ich den Warenkorb gebastelt. Kann also sein, dass ich das dort nicht richtig zusammengeplastert habe.

Aber komisch finde ich, dass mein Problem mit einem mal erst aufgetreten ist. Die webseite steht so seit 14 Monaten, ohne leere Bestelleungen und mit einem mal kamen da duzende an. Seit zwei Tagen geht es wieder.
Also ich glaube ja, dass mein Provider da was an den Servereinstellungen gebastelt hatte. Denn wenn ein Problem mit einem mal kommt, dann verschwindet es ja nicht nach 2 Tagen wieder so einfach.

Egal, ich danke euch für eure Mühen. Werde mich mal darum kümmern und mich dann hier wieder melden, wenn ich glaube es gelöst zu haben.

Danke
Sarah

EDIT: Habe doch nochmal was nachgeschaut. Test Seite (http://www.bikefarmmv.de/test/session_start.php) dort habe ich nur die Session gemacht, nicht anderes. Code schreibe ich gleich unten hin. Was komisch ist: die Session, die angezeigt wird ist eine andere als die im Cookie. Wie kommt das?
Ausserdem, wenn ihr für 6 min nichts macht, und dann auf weiter klickt, ist die Session im Browser leer. Habt ihr eine erklärung woran das liegen kann, denn das versteh ich beim besten willen nicht.

<?
//session_start.php

session_start();
if (isset($_SESSION["sid"])) {
} else {
$tmp = md5(microtime());
$_SESSION["sid"]= $tmp;
}
echo '<br><a href="seite2.php">Weiter</a>';


//seite2.php

session_start();
echo $_SESSION['sid'];
echo '<br><a href="session_start.php">Zur&uuml;ck zum Start</a>';
echo ' <a href="seite3.php">Weiter</a>';


//seite3.php

session_start();
echo $_SESSION['sid'];
echo '<br><a href="session_start.php">Zur&uuml;ck zum Start</a>';
echo ' <a href="seite2.php">Seite2</a>';
?>

KTB
24.05.2006, 08:49:05
Dass die Variable leer ist, liegt daran, dass es eine andere Session ist und dieser "neuen" hast du keine sid zugewiesen. Das machst du nur auf der session_start.php