[PHP] Doppelbewertung verhindern



  • Also, folgendes Problem, ein registrierter Benutzer schreibt einen Bewertung für ein Angebot. In der entsprechenden Tabelle wo diese Bewertung gespeichert ist, gibt es auch ein Feld (TEXT), wo die IDs der Benutzer gespeichert werden sollen, die bereits abgestimmt haben, um Doppelstimmen zu vermeiden. Dieses Feld ist eine Array mit serialize in einen Text umgewandelt. Nun treten bei meiner Lösung allerdings einige Probleme auf, bin momentan ziemlich verwirrt:

    // Beim Erstellen wird eine Array mit der ID des ERstellers erzeugt und in die 
    // DB geschrieben
    
    $Voters = array($_SESSION["id"]);
    $StrVoters = serialize($Voters);
    
    // $StrVoters wird in die DB geschrieben, soweit so gut
    
    ...
    
    // Nun will ein anderer Benutzer dieses Angebot bewerten, erst soll geprüft 
    // werden, ob er schon mal abgestimmt hat
    
    $result = mysql_query(" ... ");
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    $AllUser = array();
    $AllUser = unserialize($row["voters"]);
    if(array_search($AllUser, $_SESSION["id"])) 
    // Bereits hier wird eine Fehlermeldung ausgegeben, $AllUser soll keine Array 
    // sein, ich habe das mit is_array überprüft und es stimmt, es ist keine Array
    // Wo liegt der Fehler ?
    {
    
    // Fehlermeldung
    
    }
    array_push($ALLUser, $_SESSION["id"]);
    // Hier wird ebenfalls ein Fehler ausgegeben
    $DBAllUser = serialize($AllUser);
    

    Weiß jemand wie man das fehlerfrei lösen könnte ?


Anmelden zum Antworten