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
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.
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
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â
<?
/********* 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";
?>