Ankündigung

Einklappen
Keine Ankündigung bisher.

Update - Sperre funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Update - Sperre funktioniert nicht

    Das Update wird trotz Sperre weiterhin vorgenommen wenn timestamp > '".(time()-86400)."'") <= 1) und überhaupt nicht mehr wenn timestamp > '".(time()-86400)."'") < 1).

    Normalerweise sollte das abschicken des Formulars 1 mal am Tag möglich sein und das Update dann dem entsprechend nur 1 mal am Tag.
    Wäre schön, wenn jemand eine Idee hätte, wie ich das Problem lösen kann.


    PHP-Code:
    <?php
        session_start
    ();
        if(isset(
    $_SESSION["login"])) { // Wenn eingeloggt..
            
    include("header.php");
            include(
    "db.php");
            include(
    "functions.inc.php");
            
    refresh($_SESSION["login"]); // refresht
            
    if(anzahl("mitglieder WHERE id = '".$_SESSION["login"]."' AND timestamp > '".(time()-86400)."'") < 1) {
                if(isset(
    $_REQUEST["submit"])) { 
                               
    $update mysql_query("UPDATE mitglieder Set konto = konto + 2, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 1");
                        
    $update mysql_query("UPDATE mitglieder Set konto = konto + 4, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 2");
                        
    $update mysql_query("UPDATE mitglieder Set konto = konto + 6, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 3");
                        
    $update mysql_query("UPDATE mitglieder Set konto = konto + 8, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 4");
                        
    $update mysql_query("UPDATE mitglieder Set konto = konto + 10, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 5");
            }
            }
            
    $abfrage "SELECT * FROM mitglieder WHERE id = '".$_SESSION["login"]."' LIMIT 0,1";
            
    $ergebnis mysql_query($abfrage);
            while(
    $row mysql_fetch_object($ergebnis))
            { 
    // Formular ->0
        
    ?>
                <font style="font-size: 8pt;">
    <p align="center">                
    Klicke auf den Button um dir das Guthaben gutzuschreiben.<br><br>
    <img border="0" src="Grafiken/trennlinie.png" width="400" height="20">
    <form action=aktualisieren.php method=post>
    <table width=90%><font style=\"font-size: 8pt;\">
                        <tr>
                                <input type="hidden" name="name" value="<?= $row->name ?>">
                        </tr>


                    </table>
    <p align="center"><input type="submit" value="abspeichern" name="submit"></font><br><br>
                </form><br /><br />
        <?php
            
    }
            include(
    "footer.php");
            }
    ?>
    Funktions

    PHP-Code:
    <?php
        
    function exist($abfrage) { // Funktion um Eintrag auf Existenz zu prüfen!
            
    $ergebnis3 mysql_query("SELECT id FROM ".$abfrage);
            if (
    mysql_fetch_object($ergebnis3)) {
                return 
    true;
            } else {
                return 
    false;
            }
        }
        function 
    anzahl($abfragez) { // Gibt Anzahl zurück
            
    $ergebnis mysql_query("SELECT COUNT(*) AS anzahl FROM ".$abfragez);
            
    $row mysql_fetch_array($ergebnis);
            return 
    $row['anzahl']; 
        }
        function 
    refresh($user) { // Refresht refresh. Wichtig bei Wer-ist-eingeloggt!
            
    $update mysql_query("UPDATE mitglieder Set refresh = '".time()."' WHERE id = '".$user."'"); 
        }
        function 
    endung($filename) { // Gibt endung der Datei zurück z.B. .gif
            
    $end explode(".",$filename);
            return 
    ".".$end[(count($end)-1)];
        }
        function 
    post($string) { // Macht den String sicher und macht \n in <br>
            
    $string strip_tags($string);
            return 
    str_replace("\n""<br>",$string);;
        }
        function 
    postback($string) { // <br> in \n für textarea
            
    return str_replace("<br>""\n",$string);;
        }
        function 
    zahl($zahl) { // Zahlenschutz wegen Seitenfunktion
            
    $zahl round($zahl,0);
            
    $zahl str_replace("-"""$zahl);
            return 
    $zahl;
        }
    ?>


  • #2
    Irgendwie will in letzter Zeit jeder seine Sachen einmalig oder einmal am Tag machen... und auf "es funktioniert nicht so ganz" kann man auch nur "dann tu was dagegen" antworten. Sorry aber dein Post hier kannst du dir so auch sparen

    Kommentar


    • #3
      danke... das war jetzt eine sehr konstruktive antwort...

      Ich könnte das Problem ja auch beheben wenn eine Fehlermeldung kommen würde! Tut es aber nicht! Stattdessen wird jedes mal die Tabelle aktualisiert beim abschicken des Formulars

      Kommentar


      • #4
        Genau diese Aussage wurde erwartet.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          entfernt

          Kommentar


          • #6
            Ich hab das schon ein paarmal gesehen:
            refresh($_SESSION["login"]);
            Was bedeutet das?

            In der Zeile darunter rufst du eine Funktion anzahl() auf. Was macht die?


            PHP-Code:
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              PHP-Code:
              if(anzahl("tabelle WHERE id = '".$_SESSION["login"]."' AND timestamp > '".(time()-84600)."'") <= 1) { 
              Und warum kleiner gleich 1 ? Wenn die Funktion das tut was wir alle nur vermuten können, dann müßte es doch wohl < 1 heißen.

              @Wolla: Wahrsch. wird hier der timeout verlängert.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Stattdessen wird jedes mal die Tabelle aktualisiert beim abschicken des Formulars
                Mit der Aussage lässt sich schonmal mehr anfangen als mit "es funktioniert nicht so ganz"

                So und was bitte steckt hinter der Funktion anzahl? Überhaupt solltest du mal genauer deine Problemstelle beschreiben. Offensichtlich liegt es an dem if in dem auch anzahl() steht, das solltest du mal auseinander nehmen

                Kommentar


                • #9
                  das problem mit der Zeile ist, dass ich im anderen Code die Zeilen zähle der Tabelle und in diesem nur wissen möchte, ob der timestamp größer ist als der heutige Tag minus einem ganzen Tag. Und die <= soll die Anzahl der möglichen Absendungen des Formulars begrenzen.

                  Da ich aber PHP Neuling bin weiß ich nicht ob ich das gleiche Prinzip auch bei Spalteneinträgen anwenden kann.

                  Das komische ist, das ganze hatte erst funktioniert und dann am nächsten Tag nicht mehr.

                  Kommentar


                  • #10
                    soll die Anzahl der möglichen Absendungen des Formulars begrenzen.
                    Aber wenn die Funktion 1 liefert (bei funktionierendem System dürfte sie nicht einmal 2 liefern können) ist das Update doch schon verboten.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      na ja... aber es hat funktioniert... und es funktioniert ja auch immernoch.
                      Das Formular wird leider immer wieder abgeschickt und immer wieder wird die Spalte addiert.

                      In der PN Begrenzung als Spamschutz habe ich folgenden Code.
                      Er sagt, dass nur 3 PNs in 2 Minuten abgeschickt werden dürfen.

                      PHP-Code:
                              if(anzahl("pns WHERE absender = '".$_SESSION["login"]."' AND timestamp > '".(time()-120)."'") <= 3) { 

                      Kommentar


                      • #12
                        User XYZ UND Datum kleiner als einen Tag zurückliegend. Ein Eintrag hier meint: Es wurde heute schon ein Upload durchgeführt. Und da Du mit Table UPDATE arbeitest wird diese Information überschrieben, nicht ergänzt, der Zeitstempel also erneuert.

                        Was sollen überhaupt die 5 UPDATES auf die selbe Tabelle mit denselben Datensätzen. Das geht doch alles in einem UPDATE
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          es sollen aber verschiedene Zahlen addiert werden, je nachdem welchen Status der jenige hat...

                          das gleiche timestamp prinzip funktioniert doch auch bei der PN funktion... wieso klappt er denn dann nicht in dieser?

                          Kommentar


                          • #14
                            Tut er doch. Versuch die Antwort zu verstehen.

                            Und:
                            Code:
                            UPDATE tabelle Set konto = konto + 2, .. AND zahl = 1
                            UPDATE tabelle Set konto = konto + 4, .. AND zahl = 2
                            ...
                            UPDATE tabelle Set konto = konto + 10, .. AND zahl = 5
                            Hier ist doch eindeutig ein Muster zu erkennen.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              ich steh gerade irgendwie auf dem Schlauch...

                              Also : es soll eigentlich geprüft werden, ob der timestamp auch länger als einen Tag zurück liegt (deswegen wird mit dem updated auch immer der timestamp überschrieben) und es soll geschaut werden, dass die Spalte KONTO auch nur 1 mal updated wird (deswegen <= 1).

                              Kommentar

                              Lädt...
                              X