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

  • karyou
    hat ein Thema erstellt Mehrfaches Voten verhindern.

    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!!

  • karyou
    antwortet
    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!

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    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.

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    @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!

    Einen Kommentar schreiben:


  • karyou
    antwortet
    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.

    Einen Kommentar schreiben:


  • Wolla
    antwortet

    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.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    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...

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    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!

    Einen Kommentar schreiben:


  • cycap
    antwortet
    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

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    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.

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    Hallo,

    bitte nutze die Forensuche, das Thema wurde hier bereits diskutiert. --> http://www.php.de/php-einsteiger/179...oten-darf.html

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    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

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:

Lädt...
X