anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 28 Mär, 2024 17:00

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: Fr 26 Mai, 2006 16:42 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Als Antwort auf Kevz veröffentlichung seiner Antitransferbugmethode meine schon länger tadellos funktionierende Methode, um den Transferbug deutlich zu verringern!

Wie funktioniert er?
Es wird ein BackUp der Userdaten gemacht. Kurz vor dem speichern werden diese mit den geänderten verglichen, und alle Werte die keinen anderen Wert haben werden nicht in die Datenbank geschrieben!

Verhindert er den Transferbug zu 100%?
Nein!!

Benötige ich etwas zusätzliches?
Ja! Unbedingt ein BackUp!
Mehr nicht =)

Anleitung?
Hier:
Ersetze die gesammte Funktion "saveuser" mit dieser hier (normal: common.php):
$this->bbcode_second_pass_code('', 'function saveuser() {
global $session,$userbackup,$dbqueriesthishit,$REQUEST_URI;
if ($session['loggedin'] && $session['user']['acctid']!="") {
$session['user']['output'] = $session['output'];
$session['user']['allowednavs'] = serialize($session['allowednavs']);
$session['user']['bufflist'] = serialize($session['bufflist']);

$sql = 'UPDATE `accounts` SET ';
reset($session['user']);

while(list($key,$val) = each($session['user'])) {
if(!isset($userbackup[$key]) || $val != $userbackup[$key]) {
if (is_array($val))
$val = serialize($val);

$val = addslashes($val);
$sql.='`'.$key.'` = "'.$val.'", ';
}
}

$sql = substr($sql,0,strlen($sql)-2);
$sql.= ' WHERE `acctid` = '.$session['user']['acctid'];
db_query($sql);
}
}')

Suche (common.php, login.php):

$this->bbcode_second_pass_code('', '$session[user]=db_fetch_assoc($result);')

Füge danach ein:

$this->bbcode_second_pass_code('', '$userbackup = $session['code'];
unset($userbackup['output'],$userbackup['allowednavs']); // This field changes every hit =)')


Der Transferbug wird nicht (vollständig) verhindert!
PS: InnoDB wird nicht gebraucht ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 27 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum