Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrfaches Voten verhindern

Einklappen

Neue Werbung 2019

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

  • Mehrfaches Voten verhindern

    Habe ein ein Problem mit der Kontrollabfrage (Pkt4). Ich möchte verhindern, dass der gleiche User mehrfach für den gleiche Film Voted.
    Die Schleife funktioniert irgendwie nicht so wie ich es gerne möchte.

    Hier mein Problemfall:

    1. //Datenbankverbindung herstellen
    include("inc_dbconnect.php");

    //Post Daten Einlesen
    $FilmID = $_POST['ID'];
    $UserID = $_POST['UserID'];
    $VotePoints = $_POST[Points];

    2. // 3. SQL-Query zum DB-Server senden
    $abfrage = mysql_query("
    SELECT *
    FROM tbVote
    WHERE fdUserID = $UserID
    ");
    3. // Kotrollabfrage mehrfach Voting
    while ( $resultat = mysql_fetch_array($abfrage) )
    {
    // Array-Werte in Variable
    $db_FilmID = $resultat['fdFilmID'];
    if ($db_FilmID == $FilmID)
    {
    echo "<h2>Du darfst nur einmal pro Film voten<a href=\"index.php\"><br />
    zur&uuml;ck</a></h2>";
    exit();
    }
    }
    // Daten in DB Schreiben
    if ($_SERVER['REQUEST_METHOD'] == "POST" && $VotePoints != no)
    {
    //Einfügen neuer Datenssatz
    $abfrage = mysql_query("
    INSERT INTO tbVote
    (
    fdFilmID, fdUserID, fdPoints
    )
    VALUES
    (
    '$FilmID', '$UserID', '$VotePoints'
    )
    ");
    echo "<h2>Ihr Voting wurde angenommen<a href=\"index.php\"><br /><br />
    zur&uuml;ck</a></h2> ";
    }

    Danke für die Hilfe!!

  • #2
    Aha und was funktioniert nicht? Und bevor wir helfen lese bitte das hier:

    http://www.php.de/php-einsteiger/announcements.html

    Kommentar


    • #3
      Hallo!

      Du weist aber auch was ein Ist und ein Soll Zustand ist oder?

      Bei deinem Post weis keiner was du auch nur annähernd willst! Eins vorweck. Ein User der nicht registriert ist also keinen Login benötigt um voten zu können kannst du sowieso maximal 24 Stunden das voten verbieten indem die IP speicherst! Denn ein Cookie kann man ja einfach löschen!

      Ansonsten genauer ein Problem beschreiben,bzw. du überhaupt ein Problem beschreiben.

      mfg der litter
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      [URL]http://www.lit-web.de[/URL]

      Kommentar


      • #4
        Hallo,

        bitte nutze die Forensuche, das Thema wurde hier bereits diskutiert. --> http://www.php.de/php-einsteiger/179...oten-darf.html
        Viele Grüße,
        Dr.E.

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        1. Think about software design [B]before[/B] you start to write code!
        2. Discuss and review it together with [B]experts[/B]!
        3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
        4. Write [I][B]clean and reusable[/B][/I] software only!
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        Kommentar


        • #5
          Wenn du das mit einer IP schützt dann hol ich mir alle 2 Minuten eine neue und stimme so oft ab wie ich Lust auf das Spielchen habe.

          Wenn du das mit Cookies schützt: Die kann ich löschen und auch tausendmal abstimmen.

          Einen sicheren Weg gibt es nicht.
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #6
            Zitat von Wolla Beitrag anzeigen
            Einen sicheren Weg gibt es nicht.
            Richtig. Haben wir hier auch schon eine große Diskussion drüber geführt. Das heisst wenn man nur registrierte User voten lässt und jeden einzelnen kennt und vorher verifiziert, dann ist es sicher

            Kommentar


            • #7
              Zitat von Wolla Beitrag anzeigen
              Wenn du das mit einer IP schützt dann hol ich mir alle 2 Minuten eine neue und stimme so oft ab wie ich Lust auf das Spielchen habe.

              Wenn du das mit Cookies schützt: Die kann ich löschen und auch tausendmal abstimmen.

              Einen sicheren Weg gibt es nicht.
              Darum schrieb ich ja auch das man das mit der IP maximal 24 Stunden schützen kann,denn nach 24 Stunden spätestens wird man eh vom Netz getrennt und dann hat man eine neue IP!
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                Zitat von litterauspirna Beitrag anzeigen
                Darum schrieb ich ja auch das man das mit der IP maximal 24 Stunden schützen kann,denn nach 24 Stunden spätestens wird man eh vom Netz getrennt und dann hat man eine neue IP!
                Die Aussage ist aber seeehr allgemein. In der Firma hab ich zum Beispiel seit Jahren die gleiche IP im Netz... wenn man die irgendwo sperrt sperrt man natürlich auch nicht nur 1 User sondern die ganze Firma...

                Kommentar


                • #9

                  Ich darf mich an meinem Router anmelden und auf Disconnect/Connect klicken.

                  Aber ok, im obigen Beispiel sind es wohl angemeldete User, die abstimmen sollen, und da kann man es zuordnen.

                  @karyou
                  Am Code sieht man auf den ersten Blick nichts falsches, vielleicht kannst du mal Breakpoints setzen und dort die entscheidenden Variablen ausgeben lassen.
                  [PHP]if ($var != 0) {
                  $var = 0;
                  }[/PHP]

                  Kommentar


                  • #10
                    Es dürfen nur User Voten die registr. sind. über Post $UserID wird der aktuell eingeloggte User eingelesen. Also Konkret , wenn eingeloggter user bereits in der DB mit der gleichen Film ID vorhanden ist, dann dann soll der Eintrag blockiert werden.

                    Kommentar


                    • #11
                      @karyou: und genau diesen Fall haben wir im von mir genannten Post diskutiert. Ich bitte dich um ein wenig mehr Engagement, für eingeloggte Benutzer ist die Lösung trivial. Thread ist daher geschlossen!
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design [B]before[/B] you start to write code!
                      2. Discuss and review it together with [B]experts[/B]!
                      3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                      4. Write [I][B]clean and reusable[/B][/I] software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        Thema auf Wunsch des Erstellers wieder geöffnet. Bedingung: Versuch posten und ausführliche Beschreibung des Problems.

                        Mein Kommentar zur Frage per PN:
                        An sich ist die Abfrage einfach:

                        Code:
                        SELECT ass_id FROM ass_voting2user WHERE voting_id = 123 AND user_id = 456;
                        Anschließend kannst du mit mysql_num_rows() die Anzahl der selekteirten Datensätze erfahren. Ist diese >0, bzw. ==1, hat der User bereits gevotet. Ist diese ==0 einfach das Voting ausführen und in die Beziehungstabelle einen Datensatz einfügen.
                        Viele Grüße,
                        Dr.E.

                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        1. Think about software design [B]before[/B] you start to write code!
                        2. Discuss and review it together with [B]experts[/B]!
                        3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                        4. Write [I][B]clean and reusable[/B][/I] software only!
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                        Kommentar


                        • #13
                          Danke!

                          Alles klar dr.e.-new, hättest den Trade nicht wieder öffnen brauchen, deine Antwort mit dem Lösungsansatz hat schon gepasst.
                          Super Danke!

                          Kommentar

                          Lädt...
                          X