Ja das wäre doch was sagst bitte bescheid wenn du es hin bekommen hast ?
Ja das wäre doch was sagst bitte bescheid wenn du es hin bekommen hast ?
Dann hast du scheinbar nicht ganz aufgepasst.
Die Funktion bleibt genau so, wie sie ist. Man KANN aber als WEITEREN parameter true oder false angeben. Gibt mal den letzten parameter nicht an und verwendet die Funktion wie üblich, werden BEIDE Kontostände angesteuert. bei TRUE nur der Nicht-Bonuslose-Kontostand. Bei False nur der Bonuslose-Kontostand.
Es ist also ein 3-Way-Boolean-Wert, welcher seinen 3ten (standard)-Wert erhält, wenn er weggelassen wird.
True = Keine Bonuslose
False = Nur Bonuslose
UNDEFINED = Beide.
Ganz einfach ... Jetzt verstanden? Alte Spiele/Addons und co wären davon NICHT beeinflusst, da bei diesen dieser letzte Wert als UNDEFINED eingestuft werden würde. Was die Funktion nicht verändert gegenüber des VMS 1 ...
Jetzt verstanden?
VMS-R Downloads | VMS-R Supportbereich | E-Mail | Facebook: VMS-R | ICQ: 413-432-780 | MSN: vmsr@hotmail.de
Also wir haben die funtkion kontobuchung, die hat folgende Parameter. art,menge,uid . Und du möchtest einen weiteren einfügen. also dann art,menge,uid,loseart . Wusste nicht das in PHP das so einfach möglich ist einen Parameter einfach wegzulassen weil ich sowas noch nie gemacht hab. Halt das auch für ziemlich unsauber. Dafür gibt's Klassen wo Methoden überladen werden können.
Ähm.
Und was heißt hier "unsauber"? Das ist grundlegendes php-standard. O_oCode:function kontobuchung($art, $menge, $uid, $loseart = null) { if($loseart === true) { // nur normal-lose }elseif($loseart === false) { // nur bonus-lose }else{ // beide (standard) } }
Mit $loseart = null leg ich erstmal fest, dass der standard-wert, wenn der letzte parameter nicht angegeben wird, "Null" ist. Es handelt sich hierbei um KEIN boolean-wert.
Mit $loseart === true (dem 3fach-istgleich) verhinder ich, dass $loseart als boolean angesehen wird, wenn man 1 z. b. angibt.
Ebenso bei === false, wenn 0 angegeben wird. Es wird nur True oder False erlaubt.
Wird keines der beiden erkannt, standard.
Somit können alte addons die übliche Funktionsweise verwenen und neue addons den parameter hinzufügen. Darüber hinaus lassen sich so alte addons schnell und einfach damit erweitern.
Von wegen unsauber ...
Geändert von NeoGriever (09.08.2013 um 12:15 Uhr)
VMS-R Downloads | VMS-R Supportbereich | E-Mail | Facebook: VMS-R | ICQ: 413-432-780 | MSN: vmsr@hotmail.de
Hallo!
Ich stelle gerade fest das man beim Tresor Addon auch ohne Passwort auszahlen kann.
Gibt man das PW falsch ein steht richtig da das Passwort ist falsch.
Wenn man aber gar kein Passwort eingibt und auf auszahlen geht dann zahlt der Tresor aus und das it ein BUG!!
Hat da jemand einen Ansatz ich kann nix finden!
Problem gefunden es erfolgt KEINE 0 Eingabe Prüfung!!!
Datei ab Zeile 68 anpassen:
} else {
if ( empty ($_POST['tpw']) == TRUE ){
$msg .= "Keine Eingabe.";
} else {
if($userdaten['tresor_pw'] != $_POST['tpw']) {
$msg .= "Tresor Passwort Falsch.";
} else {
if (ereg("[^0-9]", $_POST['betrag'])) {
$msg .= "Bei Betrag nur Zahlen.";
} else {
if($userdaten['tresor'] >= $_POST['betrag']) {
$buchungsid = create_code(14);
kontobuchung_tresor('-',$_POST['betrag'],$_SESSION['uid']);
buchungsliste_tresor($buchungsid,'-'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid']);
kontobuchung('+',$_POST['betrag'],$_SESSION['uid']);
buchungsliste($buchungsid,'+'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid']);
$msg .= "Betrag Ausgezahlt.";
} else {
$msg .= "Tresorguthaben reicht nicht aus.";
}
}
}
}
}
}
bei keiner Eingabe erfolgt jetzt die Ausgabe "Keine Eingabe"! Hat diesen kritischen Bug den 10 Jahre niemand endeckt???
Peinlich Peinlich: Ohne den Eintrag Tresor_PW in den _kontodaten, ja da kann mann dann auch ohne PW auszahlen... Leider!
Schaden kann die Ergänzung des Codes OBEN aber trotzdem nicht.
Geändert von Alpha10 (25.01.2017 um 17:33 Uhr)