Letzter Kunde im Bestellvorgang zusehen

Hallo Leute,

ich habe die 4.2er Version, bin eigentlich zufrieden damit.
Manchmal rufen mich Kunden an, die sagen, dass sie Daten von einem anderen Kunde in den Feldern sehen. Meistens ist das der Kunde der zuvor bestellt hat.

Kennt jemand den Fehler? Kann mir jemand nen Tipp geben? Ich bin programmier-kompetent :wink:

Vielen Dank,
Chrims

Updaten.

Guck mal in die letzten Update Notes oder in das securtiy irgenwas. Da steht glaube ich etwas zu dem Thema.

CYA

Hallo,

hier findet man die Security Bulletins:

Bin mir aber wirklich nicht sicher, ob einer davon mit dem Beschriebenen zu tun hat. Wenn das nochmal auftaucht: Kannst Du bitte alle möglichen Informationen (genaue Schritte zum Reproduzieren, Browser, Betriebssystem usw.) vom Kunden einholen? Am besten schickst Du diese Informationen an die in den Security Bulletins angegebene E-Mail-Adresse. Bitte keine nÀheren Informationen im Forum veröffentlichen, da immer Shops kompromittiert werden könnten.

Danke und Gruß

Ich habe das GefĂŒhl, dass es etwas mit den OXLOGS zu tun hat.

Nachdem ich die Tabelle geleert hatte, war der Fehler bei meinem Kunden weg
 es waren auch schon 96000 EintrÀge drin
 ich vermute, dass der oxid-session-code, der bei den Kunden als Cookie abgespeichert wird, nicht zweifelsfrei und einmalig erstellt wird, warum was ich net.

wenn ich nen sessioncode beim programmieren erstellen lasse, dann grundsÀtzlich so:

time()+sha1(rand());

der kommt dann echt nur einmal vor :wink:

Weiß denn jemand wo der Session-Code generiert wird?

Ich habe rausgefunden, dass es tatsÀchlich an einer doppelt vergebenen oxid bzw oxuserid lag.

Hab mir folgendes programmiert, hoffe es hilft.
Das Script lĂ€uft stĂŒndlich als Cronjob im Hintergrund.

Es werden die User sozusagen durch eine eigene ID ausgeklammert, bleiben aber im System bestehen.
Vielleicht schafft es auch Abhilfe fĂŒr den “Doppelte-Bestellung-Kundendatenlöschungs-Bug” :wink:


<?
/********* MYSQL-DATA **************/
$server = "localhost";
$benutzername = "";
$passwort = "";
$tabelle = "";

/******** MYSQL-CONNECTION *********/
$connection = mysql_connect ("$server","$benutzername","$passwort");mysql_select_db("$tabelle");



$count_new_userid = 0;

$abfrage = "SELECT oxid FROM oxuser WHERE oxid NOT LIKE 'old%'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
$randnumber = "old".$count_new_userid."".time()."".rand(100,999)."";
$old_userid = $row->oxid;


$aendern = "UPDATE oxnewssubscribed Set oxuserid='$randnumber' WHERE oxuserid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxobject2group Set oxobjectid='$randnumber' WHERE oxobjectid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxorder Set oxuserid='$randnumber' WHERE oxuserid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxremark Set oxparentid='$randnumber' WHERE oxparentid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxuserpayments Set oxuserid='$randnumber' WHERE oxuserid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxuserbaskets Set oxuserid='$randnumber' WHERE oxuserid = '$old_userid'";
$update = mysql_query($aendern);

$aendern = "UPDATE oxuser Set oxid='$randnumber' WHERE oxid = '$old_userid'";
$update = mysql_query($aendern);

$count_new_userid++;
   }

echo "$count EintrÀge geÀndert";
?>