Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: plopp Schnippsel Auszahlung Überprüfung

  1. #1
    napfkuchen
    Gast

    plopp Schnippsel Auszahlung Überprüfung

    In der Anleitung steht mann muss die /lib Functions.lib

    Bearbeiten und nach
    PHP-Code:
        function db_query($sql_tag)  {
      
    $sql_return        mysql_query($sql_tag);
      return 
    $sql_return
    Suchen dieses ist bei mir nicht vorhanden x.X

    Hat jemand ein einfacheres Script?


    Ich suche eins wo wenn ein user eine auszahlung tätigt ich die erst im ADminforce sehe und die dann freigebe

  2. #2
    Die Funktion ist im VMS 1.2 um einiges länger (SQL-Injections und so).

    => du darfst nur nach
    PHP-Code:
    function db_query($sql_tag)  { 
    suchen

    Aber mir ist es gänzlich unverständlich, wazu man das bearbeiten soll?! Erklär mir das bitte mal!


  3. #3
    napfkuchen
    Gast
    Also, ich will

    Das wenn ein User sicb bei mir was auszahlen läßt das ich das erst im adminforce sehe und dann durch lassen kann



    Mit dem Schnippsel von ihm soll das ja so sein x) (Ich hoffe es hält was es verspricht)

  4. #4
    Zitat Zitat von napfkuchen Beitrag anzeigen
    Mit dem Schnippsel von ihm soll das ja so sein x) (Ich hoffe es hält was es verspricht)
    Aber wozu soll man da die Funktion ändern?


  5. #5
    napfkuchen
    Gast
    Zitat Zitat von Sebmaster Beitrag anzeigen
    Aber wozu soll man da die Funktion ändern?
    Steht so in der anleitung


    kennste ne andere lösung?

  6. #6
    Erfahrener Benutzer Avatar von eRaaaa
    Registriert seit
    06.06.2007
    Beiträge
    702
    was sollst du denn da einfügen? wahrscheinlich sollst du nicht die query funktion verändern, sondern eine neue funktion einfügen?!....also kannste das einfach ans ende klatschen ! (natürlich vor ?> )

    ;D

  7. #7
    napfkuchen
    Gast
    Zitat Zitat von eRaaaa Beitrag anzeigen
    was sollst du denn da einfügen? wahrscheinlich sollst du nicht die query funktion verändern, sondern eine neue funktion einfügen?!....also kannste das einfach ans ende klatschen ! (natürlich vor ?> )

    ;D

    Mit diesem Codeschnipsel wird das Guthaben der Seite geschützt
    Etwas zum Hintergrund, warum dieses Schnipsel entstand: Mein Hoster hat ein Limit eingesetzt, welches die Datenbankabfragen in der Stunde begrenzt. Ich wurde über diese neue Einstellung nicht informiert, so das vollkommen überraschend massenweise Fehler auftraten. Die Datenbank "machte dicht" und nichts ging mehr.
    Dann meldete ein User, dass bei der Auszahlung ein Fehler auftritt, der es ermöglicht, das Konto des Seitenbetreibers abzuräumen ....
    Kontrolle ergab, das bei der Auszahlung die Schnittstelle zu Klamm, Cashcrawler etc. bedient wird und danach diese Auszahlung auf dem Userkonto verbucht wird. Wenn die Datenbank nun keine Abfragen mehr annimmt, wird über die Schnittstelle ausgezahlt, aber diese Auszahlung in der Datenbank der Seite nicht festgehalten.
    Ein User bekam das auch sehr schnell mit und zahlte eine grosse Summe auf die Seite ein. Zum Glück hatte ich ja eine Info bekommen und habe dadurch verhindern können, dass dieser User mit dieser grösseren Summe noch mehr ergaunern konnte.

    Nun habe ich eine Kontrolle eingebaut, welche evtl. Fehlermeldungen bei der Arbeit mit der Datenbank auswertet und entsprechend reagiert. In den letzten Tagen hat mir dieser Schnipsel schon eine Menge Stress erspart. Denn auch wenn der User, der davon betroffen ist, bereit ist zurückzuzahlen, ist es doch eine Unannehmlichkeit, die oft mit Stress verbunden ist.

    Hier nun die Anleitung:
    Als erstes müssen wir dafür sorgen, dass das Auszahlungsscript überhaupt merkt, das etwas bei der Arbeit mit der Datenbank schief läuft. Das VMS1 ist leider so aufgebaut, das keinerlei Fehlermeldungen an das aufrufende Script durchgegeben wird.
    Sämtliche Datenbankabfragen werden in der functions.lib abgearbeitet. Diese befindet sich im Verzeichnis /lib. In der functions.lib ist eine Funktion db_query. Orginal sieht sie wie folgt aus:

    PHP-Code:
    function db_query($sql_tag)  {
    $sql_return    mysql_query($sql_tag);
    return 
    $sql_return;

    Um evtl. Fehlermeldungen durchzureichen, muss diese Funktion so aussehen:

    PHP-Code:
    function db_query($sql_tag)  {
     global 
    $sql_open;
     
    $sql_return    mysql_query($sql_tag);
     
    $fehler mysql_errno($sql_open);
     if(
    $fehler){
        
    $sql_return $fehler;    
     }
    return 
    $sql_return;

    Es wird nun geprüft, ob bei der Abarbeitung ein Fehler aufgetreten ist. Wenn ja, wird diese Meldung anstatt der normalen Ergebnismenge zurückgegeben.

    Der nächste Punkt ist die auszahlen.php selbst. Diese liegt im Verzeichnis /content/konto
    Ich das Orginalstück des Scriptes, der geändert werden muss:

    PHP-Code:
            if ($_POST['trans_menge'] <= $kontodaten['kontostand']) {
                if (
    $schnittstelle['anfragen_user'] == or $s_verbrauch $schnittstelle['anfragen_user']) {
                    
    $buchungs_id create_code(14);
                    @require_once (
    "lib/schittstellen/".$schnittstelle['schnittstelle'].".php");
                    @
    auszahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],$schnittstelle['auszahltext'],'');
                    if (
    $schnittstelle['anfragen_user'] != 0db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','".$_SESSION['uid']."')");
                        if (
    $error) {
                        
    $auszahlmeldung $trans_ausgabe;
                        } else {
                        
    kontobuchung ('-',$_POST['trans_menge'],$_SESSION['uid']);
                        
    buchungsliste ($buchungs_id,'-'.$_POST['trans_menge'],$schnittstelle['auszahltext'],$_SESSION['uid']);
                        
    $auszahlmeldung 'Es wurden '.$_POST['trans_menge'].' '.$waehrung.' ausgezahlt';
                        }
                } else {
                
    $auszahlmeldung 'Deine Schnittstellenanfragen sind verbraucht!!!';
                }
            } else {
            
    $auszahlmeldung 'Soviel Guthaben hast Du nicht!!!';
            } 
    Und so sieht dieses Teil nun bei mir aus:

    PHP-Code:
            if ($_POST['trans_menge'] <= $kontodaten['kontostand']) {
                if (
    $schnittstelle['anfragen_user'] == 0||(($schnittstelle['anfragen_user'] != 0) && (@$s_verbrauch $schnittstelle['anfragen_user']))) {
                    
    $buchungs_id create_code(14);
                    @require_once (
    "lib/schittstellen/".$schnittstelle['schnittstelle'].".php");
                    @
    auszahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],$schnittstelle['auszahltext'],'');
                    if (
    $schnittstelle['anfragen_user'] != 0db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','".$_SESSION['uid']."')");
                        if (
    $error) {
                            
    $auszahlmeldung $trans_ausgabe;
                        } else {
                        
    $fehler db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = `kontostand` - ".$trans_menge." WHERE uid=".$_SESSION['uid']."");
                        
    $return=mysql_affected_rows($sql_open);
                        
                        @
    mail("deinemail@addy.de","Userauszahlung ".$_SESSION['uid']." ".$_POST['trans_menge'],"Betroffene Datensaetze: ".$return." Fehler: ".$fehler." User: ".$_SESSION['uid']." Buchungsid: ".$buchungs_id." Menge: ".$_POST['trans_menge'], 'FROM: '.$seitenname.' <'.$betreibermail.'>');    
                        if(
    $fehler>1){
                            
    //rueckbuchung
                            
    @einzahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],"Rückbuchung - miles4you.de",'');
                            
    $auszahlmeldung "Bei der Auszahlung ist ein Fehler aufgetreten!";            
                            
                        }else{
                            
    buchungsliste ($buchungs_id,'-'.$_POST['trans_menge'],$schnittstelle['auszahltext'],$_SESSION['uid']);
                            
    $auszahlmeldung 'Es wurden '.$_POST['trans_menge'].' '.$waehrung.' ausgezahlt';
                        }
                                        
                        }
                } else {
                
    $auszahlmeldung 'Deine Schnittstellenanfragen sind verbraucht!';
                }
            } else {
            
    $auszahlmeldung 'Soviel Guthaben hast Du nicht!';
            } 
    Wie funktioniert das nun?
    Nachdem das Guthaben über die Schnittstelle ausgezahlt wurde, wird die Buchung auf dem Kundenkonto des Users durchgeführt. Nach dieser Buchung wird geprüft, ob ein Fehler aufgetreten ist. Das der Fehlercode (falls einer auftritt) übergeben wird, haben wir vorhin in der functions.lib eingebaut.
    Nach der Abarbeitung wird die Anzahl der betroffenen Datensätze und ein evtl. Fehlercode von mysql ausgewertet.
    Bei einer ordnungsgemässen Abarbeitung wird bei dieser Update-Anweisung die Zahl "1" zurückgegeben. Das bedeutet, das eine Zeile bei der Abarbeitung betroffen war. In dem Fall ist alles in Ordnung, es wird ein Eintrag in der Buchungsliste geschrieben, eine Meldung ausgegeben und fertig.
    Wenn eine Zahl grösser 1 zurückgegeben wird, ist ein Fehler aufgetreten. In dem Fall wird das Guthaben, das nun schon über die Schnittstelle ausgezahlt wurde, zurückgebucht. Beim User wird eine Fehlermeldung ausgegeben und das Script ist zu Ende.

    Der Befehl mysql_affected_rows fragt auch die Anzahl der betroffenen Datensätze ab, allerdings hat mir dieser Wert zur Identifizierung von sql-fehlern nicht ausgereicht Für denjenigen, der sich mit sql etwas auskennt, ist es schon recht hilfreich, den genauen Fehlercode zu haben. Wem diese Information zuviel ist, kann sie auch in der Mailanweisung rausnehmen.

    Falls du nur bei einem Fehler eine Mail erhalten möchtest, musst du die Mailanweisung eine Zeile tiefer, nach "if($fehler>1){" setzen.


    So eine Mail bekomme ich nun, wenn die Abarbeitung richtig gelaufen ist:
    Betroffene Datensaetze: 1 Fehler: 1 User: 12345 Buchungsid: mAUBf955biKEdt Menge: 2929

    und so ein Fehler:
    Betroffene Datensaetze: -1 Fehler: 1226 User: 12347 Buchungsid: MABxGvmk4bBT4T Menge: 3249

    Und das auf dem Konto bei Cashcrawler.de:
    25.03 22:39 Auszahlung - miles4you.de 12347 -3249
    25.03 22:39 Rückbuchung - miles4you.de 12347 3249

    Und mit dieser Rückbuchung ist mein Guthaben gerettet

    Bei Fragen und Problemen helf ich gern weiter
    plopp

    *edit by dude32

  8. #8
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Nun, 1. ist dieser Codeschnippsel nur fürs VMS Version 1.1 gedacht, daher kann es natürlich Schwierigkeiten beim Einbau geben.
    2. Halte ich den Schnippsel nicht mehr für sehr sinnvoll, da er ja aus dem Grund entstand:
    Mein Hoster hat ein Limit eingesetzt, welches die Datenbankabfragen in der Stunde begrenzt.
    Ich würde dir oder jedem Anderen davon betroffenen raten, den Hoster zu wechseln

    Geht es dir nur um die Kontrolle der Auszahlungen,
    gibt es hier irgendwo einen Codeschnippsel, der die Auszahlungen der letzten X Tage im Adminforce anzeigt,
    und es gibt Addons, welche entweder
    einzelne User zur Auszahlung freischalten/sperren können oder aber
    dass die User Auszahlungen erst beantragen müssen, was aber nicht sehr userfreundlich ist, da sie so ja immer warten müssen, bis du die Auszahlungen genehmigst.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  9. #9
    napfkuchen
    Gast
    Zitat Zitat von jpwfour Beitrag anzeigen
    Nun, 1. ist dieser Codeschnippsel nur fürs VMS Version 1.1 gedacht, daher kann es natürlich Schwierigkeiten beim Einbau geben.
    2. Halte ich den Schnippsel nicht mehr für sehr sinnvoll, da er ja aus dem Grund entstand:
    Ich würde dir oder jedem Anderen davon betroffenen raten, den Hoster zu wechseln

    Geht es dir nur um die Kontrolle der Auszahlungen,
    gibt es hier irgendwo einen Codeschnippsel, der die Auszahlungen der letzten X Tage im Adminforce anzeigt,
    und es gibt Addons, welche entweder
    einzelne User zur Auszahlung freischalten/sperren können oder aber
    dass die User Auszahlungen erst beantragen müssen, was aber nicht sehr userfreundlich ist, da sie so ja immer warten müssen, bis du die Auszahlungen genehmigst.
    Es geht umd die Auszahlung freischalten/sperren das die User warten müssen bis ich sie Auszahle, schaue ja täglich nach!!

    Nur es gibt User die haben meistens 30 Mio 0 Banner gelickt 0 Bettel Link 0 Eingezahlt deswegen will ich das haben

  10. #10
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    Zitat Zitat von napfkuchen Beitrag anzeigen
    Es geht umd die Auszahlung freischalten/sperren das die User warten müssen bis ich sie Auszahle, schaue ja täglich nach!!

    Nur es gibt User die haben meistens 30 Mio 0 Banner gelickt 0 Bettel Link 0 Eingezahlt deswegen will ich das haben
    Vielleicht solltest du dann lieber erstmal schauen warum das so ist...
    Ich nutze den Firefox nur um Opera Google Chrome runterzuladen

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Ip überprüfung
    Von FLash im Forum [HD] Codeschnippsel
    Antworten: 2
    Letzter Beitrag: 13.05.2011, 00:24
  2. Überprüfung meiner Seite
    Von denniskkk im Forum [HD] Programmieren
    Antworten: 1
    Letzter Beitrag: 19.11.2009, 17:57
  3. Antworten: 4
    Letzter Beitrag: 08.04.2009, 14:51
  4. Antworten: 2
    Letzter Beitrag: 27.02.2008, 18:14
  5. Auszahlungskontrolle von plopp
    Von shoju im Forum Support zu Addons & Erweiterungen
    Antworten: 0
    Letzter Beitrag: 10.07.2007, 14:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •