Ergebnis 1 bis 10 von 12

Thema: Dynamischer Tagesgutschein ala Klammino

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370
    Ok, einfach ist es nicht, habe aber einen Ansatz der mir reichen würde, wenn den realisierbar, zumal dieser Ansatz auch anderwertig nutzbar wäre, z.b. für die FakeKontrolle.

    Ich lege einen Cron an, dieser läuft dann 2mal täglich, Zeiten lassen sich ja einstellen damit es wie Zufall erscheint.

    Das entscheidende ist, was der Cron machen soll.

    Der Cron müsste entweder in der Lage sein eine Datei zu erstellen/löschen oder aber den Inhalt einer Datei komplett zu ändern.

    Ok, Denkansatz 2, die Lösung, der Cron macht nur in der DB eine 0 oder 1, Gutschein also aktiv oder nicht aktiv, eigentlich simpel, das kann jeder von uns selbst umsetzten und da nicht alle das gleiche haben sollen lassen wir den Code für sowas mal weg an dieser Stelle.


    Also soweit könnte es doch recht einfach werden. Leider nur nicht mehr sinvoll für den Faketest, hier wäre das automatische ändern/erstellen/löschen notwendig.

    MfG

  2. #2
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Zitat Zitat von Masterphil Beitrag anzeigen
    ...

    Ich lege einen Cron an, dieser läuft dann 2mal täglich, Zeiten lassen sich ja einstellen damit es wie Zufall erscheint.
    ...
    Oder ein Cron der 1x täglich läuft, bspw. 0 Uhr, und die Zeitspanne für den Tag bestimmt und in der DB speichert.

    Also was mit
    Code:
    time()+rand()
    Solche "Einzelwerte" lassen sich gut in vms_seitenkonfig speichern, die wird eh bei jedem Aufruf ausgelesen. Im Gutscheinaddon dann halt noch iwo ein
    Code:
    if time() <>= gespeicherter wert
    , sofern der Code für den Gutschein benutzt wird, den man ja evtl. "Hardcoded" festlegt (sowas wie: "Tagesgutschein").
    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)

  3. #3
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370
    So, ich hole das Thema schonmal wieder hoch da ich es nun definitiv für Autolose umsetzten will.

    Habe nochmal überlegt, gehen wir davon aus es ist bereits ein Addon eingebaut

    Dieses ist wiefolgt aufgebaut:
    gid,empf,lose,sender,zeit,wahrscheinlichkeit,benut zbar,gname,eingel


    Nun gehen wir ganz einfach vor, nur einmal den Cron ausführen, dieser speichert die zufällige Zeit (zeit) ab und den Wert (lose), beides nach Zufall, die Zeit muss dabei Tagsüber sein und natürlich für den aktuellen Tag sein.

    Code für GS muss natürlich auch generiert und gespeichert werden (gid)

    Der Rest ist wie im eigenen Adonn umzusetzten bzw. wegzulassen

    Auser der Sender, dieser nämlich ist der Indikator, also if Sender = TGS

    Ausführungen des Codes für den TGS im GutscheinAddon.

    Sicherung und Ausgabe, eine Datei in dieser wird die gespeicherte Zeit geprüft und sobald 3 stunden davor (Beispiel) erreicht sind wird der Code angezeigt vom Sender TGS (Weitere Absicherung für andere GS)


    So, bis hierhin denke ich haut theoretisch alles vom Prinzip her hin, oder was meint ihr ? Habe nochmal einiges krübeln müssen aber so in etwa muss es auch Klammino umgesetzt haben.


    Also, denkt ihr das dies könte was werden so ?


    Schönen abend euch noch.

    MfG

  4. #4
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Grundsätzlich gut, müsste man halt sicher sein, dass nicht ein User (der sich bspw. "TGS" nennt), iwie den Wert, den du als Indikator für das Feld Sender benutzen willst, auch erzeugen kann.
    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)

  5. #5
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370
    Zitat Zitat von jpwfour Beitrag anzeigen
    Grundsätzlich gut, müsste man halt sicher sein, dass nicht ein User (der sich bspw. "TGS" nennt), iwie den Wert, den du als Indikator für das Feld Sender benutzen willst, auch erzeugen kann.
    Ok, da hast du natürlich Recht, habe nochmal in die DB-Struktur geschaut und das Feld Sender ist sowieso int, also nehmen wir einfach die Zahl 1 welche ja kein einziger User als ID hat. Somit ist dieses Problem auch schonmal gelöst.

    MfG

  6. #6
    Moderator
    Registriert seit
    07.07.2006
    Beiträge
    1.370
    Bin nun etwas weiter mit dem ganzen hier, habe das Gutschein Addon von Skandal besorgt welches Mindest AP schon drinhat.

    Damit lassen sich manuel schon ohne Probs Tagesgutscheine machen, man muss halt nur online gehen dafür um ihn zu erstellen.

    Nun also direkt weiter zur Automatierung, das erste Problem habe ich auch gelöst, wie mit CronjobAnbietern verschiedene AusfrufZeiten machen, einfach merhere Jobs einrichten sodass auf den Monat verteil sagen wir 5-10 Jobs laufen natürlich jeden Tag nur einer und dann halt jeweils zu einer definierten Zeit. In jeder Job erhält eine eigene Datei zum Aufrufen mit festem Wert, Zeit wird per Befehl aus dem GS Addon genommen, auch alle anderen wichtigen Werte.

    Die Theorie steht somit, die manuellen Tests waren erfolgreich mit dem Addon von Skandal, wenn die Automatiserung halbwegs funzt schreibe ich nochmal hier, es sei denn jemand hat eine einfachere/bessere Idee.

    MfG

  7. #7
    Neuer Benutzer
    Registriert seit
    08.10.2015
    Beiträge
    1
    Das ist der orginal Cron zum tageszufallgutschein von klammino... liebe grüße Anika Admin von klammino

    PHP-Code:
    <?

    @require_once ('../functions.lib.php');

    db_connect();

    function gutcode () {
          return (strtoupper (create_code (16)));
    }

    mt_srand((double)microtime()*1000000);

     $stunde = date("G"); 
     
     $config = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_seitenkonfig"));
     
     // Startuhrzeit ermitteln -> Cronaufruf 1x zwischen max und min Startstunde
     if($stunde > ($config['gutschein_ende']+$config['gutschein_dauer']) or $stunde < $config['gutschein_start']) {
     
         $gutschein_stunde =  round(mt_rand($config['gutschein_start'],$config['gutschein_ende']));
         
         db_query("UPDATE ".$db_prefix."_seitenkonfig SET gutschein_code = '', gutschein_code_start = ".$gutschein_stunde." ");
     }
     
     // wenn Startstunde erreicht -> Gutschein erstellen
     if($stunde == $config['gutschein_code_start']) {
         
         $gutschein_wert = round(mt_rand($config['gutschein_min'],$config['gutschein_max']));
         $min_tagespunkte = round($gutschein_wert * $config['gutschein_ap_proz'] / 100);
         $code = gutcode ();
         
         db_query("UPDATE ".$db_prefix."_seitenkonfig SET gutschein_code = '".$code."' ");
         db_query("INSERT INTO `".$db_prefix."_gutscheine` (`code`,`uid`,`time`,`gueltigkeit`,`fuer`,`menge`,`uebrig`,`prouser`,`betrag`,`loseart`,`min_tagespkt`) VALUES ('".$code."','0','".time()."','".(time()+($config['gutschein_dauer']*3600))."','all','200', '200', '1', '".$gutschein_wert."', 'bonus', '".$min_tagespunkte."')");
     }

    db_query("UPDATE ".$db_prefix."_semicron SET laufzeit=".time().", sollzeit=".time()." WHERE datei='lib/crons/tageszufallsgutschein.php'");

    db_close();
    ?>

    functions.lib.php
    PHP-Code:
    // Zufallscode generieren

    function create_code($code_laenge) {

        
    srand((double)microtime()*1000000);

        
    $created_code '';

        
    $zeichen="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

        for (
    $i=0;$i<$code_laenge;$i++) {

            
    $n=rand() % strlen($zeichen);

            
    $created_code .=substr($zeichen$n1);

        }

        return 
    $created_code;



    admin pageconfig
    PHP-Code:
    db_query("UPDATE ".$db_prefix."_seitenkonfig SET wartung='"..... 
    // da kommt das mit rein
    PHP-Code:
    gutschein_start '".$_POST['gutschein_start']."'gutschein_ende '".$_POST['gutschein_ende']."'gutschein_dauer '".$_POST['gutschein_dauer']."'gutschein_min '".$_POST['gutschein_min']."'gutschein_max '".$_POST['gutschein_max']."'gutschein_ap_proz '".$_POST['gutschein_ap_proz']."'gutschein_code '".$_POST['gutschein_code']."'gutschein_code_start '".$_POST['gutschein_code_start']."' 
    // das wo Ihr wollt in der Datei
    PHP-Code:
    <tr bgcolor="#c0c0c0">
    <td align="left" colspan="2"><b>Einstellungen "Tageszufallsgutschein"</b></i></td>
    </td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>frühester Start</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_start" value="<?=$interface['gutschein_start'];?>"> Stunde (Ganzahlen)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>spätester Start</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_ende" value="<?=$interface['gutschein_ende'];?>"> Stunde (Ganzahlen)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>Gültigkeitsdauer</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_dauer" value="<?=$interface['gutschein_dauer'];?>"> Stunden (Punkt statt Komma)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>min. Wert</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_min" value="<?=$interface['gutschein_min'];?>"> Bonuslose (Punkt statt Komma)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>max. Wert</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_max" value="<?=$interface['gutschein_max'];?>"> Bonuslose (Punkt statt Komma)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>Prozent vom Wert als Tagespkt</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_ap_proz" value="<?=$interface['gutschein_ap_proz'];?>"> Prozent (Punkt statt Komma)</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>aktueller Gutscheincode</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_code" value="<?=$interface['gutschein_code'];?>"> automatisch generiert</td>
    </tr>
    <tr bgcolor="#f0f0f0">
    <td align="left"><b>aktueller Gutschein-Start</b></td>
    <td align="left">&nbsp;<input type="Text" name="gutschein_code_start" value="<?=$interface['gutschein_code_start'];?>"> automatisch generiert</td>
    </tr>
    eine datei erstellen in content/konto/tagesgutschein.php
    // da kommt rein
    PHP-Code:
    <?

    userstatus(); // <--- kommt auf eure vms version an kann auch raus

    if($pageconfig['gutschein_code'] != "") {
        $gutschein = mysql_fetch_array(db_query("SELECT gueltigkeit,code,betrag,min_tagespkt FROM ".$db_prefix."_gutscheine WHERE code = '".$pageconfig['gutschein_code']."' LIMIT 1"));
    }

    $zinspunkte = mysql_fetch_array(db_query("SELECT zinspunkte_heute FROM ".$db_prefix."_kontodaten WHERE uid='".$_SESSION['uid']."' LIMIT 1"));

    ?>
    <?head("Tagesgutschein");?>
    Hier findest du jeden Tag einen Zufallsgutschein.<br />
    Der Gutschein startet irgendwann <b>zwischen <?=$pageconfig['gutschein_start'];?> Uhr und <?=$pageconfig['gutschein_ende'];?> Uhr</b>
    mit einer <b>G&uuml;ltigkeitsdauer von <?=number_format($pageconfig['gutschein_dauer'],0,",",".");?> Stunden</b>.<br />
    Um den Gutschein einl&ouml;sen zu k&ouml;nnen, brauchst du eine bestimmte Mindestanzahl an Zinspunkten.<br />
    <center><b>Deine heutigen Zinspunkte</b>: <?=number_format($zinspunkte["zinspunkte_heute"],2,",",".");?></center>
    <?foot();?>

    <?head("");?>

    <?
    if($pageconfig['gutschein_code'] == "") {
        echo "Heute gab es noch keinen Gutschein. Schau doch sp&auml;ter nochmal vorbei.<br><br>";
    } elseif ($gutschein["gueltigkeit"] < time()) {
        echo "Du hast den heutigen Gutschein leider verpasst. Schau doch morgen wieder vorbei, vielleicht hast du dann mehr Gl&uuml;ck!<br><br>";
    } else {
        echo '
            <table align="center" border="0" width="90%" cellpadding="2" cellspacing="2">
                <tr>
                    <td width="55%">Heutiger Zufallsgutschein<br><br></td>
                    <td><b>'.$gutschein["code"].'</b><br><br></td>
                </tr>
                <tr>
                    <td width="55%">Wert<br><br></td>
                    <td><b>'.number_format($gutschein["betrag"],2,",",".").' Bonuslose</b><br><br></td>
                </tr>
                <tr>
                    <td width="55%">mind. Zinspunkte<br>(siehe oben)</td>
                    <td><b>'.number_format($gutschein["min_tagespkt"],0,",",".").' Punkte</b><br><br></td>
                </tr>
            </table>';
    }?>

    <?foot();?>

    // link ins menü für die user setzen
    PHP-Code:
    <li><a href="?content=/konto/tagesgutschein">&raquo;&nbsp;Tagesgutschein</a></li

Ähnliche Themen

  1. Problem mit dynamischer Klickralley
    Von ben174 im Forum Support zum VMSone
    Antworten: 2
    Letzter Beitrag: 12.05.2008, 13:00
  2. Problem mit Dynamischer Klickrally
    Von premium im Forum Support zum VMSone
    Antworten: 1
    Letzter Beitrag: 07.06.2007, 16:22
  3. problem mit dynamischer ref-rally
    Von dude32 im Forum Support zu Addons & Erweiterungen
    Antworten: 4
    Letzter Beitrag: 24.02.2007, 17:32

Berechtigungen

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