Vote + Sperre -- nein ich meine nicht IP Sperre ;) [umfangreich]

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,

bin ja gerade dabei ein CMS zu programmieren :). Da will ich auch verschieden Votes machen. Praktisch soll das so aussehen, das bei der News nen "Topic Rate" dabei ist, dann sind noch Rates bei der Galerie und bei den Polls halt dabei. Bisher habe ich es so gelöst, das ein Cookie "rated" gesetzt wird. Dummerweise kann man für nichts anderes mehr Voten sobald dieser Cookie gesetzt ist, dies müsste also auch ncoh anders werden ;).

Nun habe ich ein Problem. Ich will das jeder Member nur ein einziges Mal bei jeder Abstimmung mitmachen darf. Dies über eine IP Sperre zu realisieren geht nicht. Über Cookies ist es auch schlecht. Die einzigste Möglichkeit bleibt es das über eine Datenbank zu realisieren. Dabei ist dann allerdings wieder das Problem, das man dann ja Äpfel mit Birnen mischen würde, also zum Beispiel die Newssystem Votes mit dem Galeriesystem Votes.

Bei den Polls werde ich es so handhaben, das die BenutzerID in die Datenbank, mit dem Vote eingetragen wird, wie bei dem vB. Damit wäre es bei dem Poll schon geklärt mit der Abstimmungssperre.

Dummerweise bleibt dann immer noch die Topicvote Sperre.

Ist so eine Sperre eigentlich sinnvoll?
Ist die Sperre bei dem Galeriescript sinnvoll?

Weiß vielleicht einer hier nen Rat?
 
Du sagst jedes Mitglied darf nur einmal voten, d.h. es gibt ID's der
Mitglieder. Nun könntest du doch zu jedem Vote eine Spalte "users"
machen und dort hinein die ID des Mitgliedes speichern, beim
Voten. Würd ich über ein Trennzeichen (z.B.: #, %, *, usw.) realisieren.
 
Du machst eine 2. Tabelle rated_Polls.
In diesesm hast du die Spalten:
ID (falls du jemanden loeschen willst )
Datum (falls du nach 24 std leeren willst )
Poll_ID (hier rein kommt die Poll ID)
Usr_ID (hier rein kommt die Usr_ID)

Du kannst nat. ID + Datum weglassen.
Das wichtige sind Poll_ID und Usr_ID und dann machst du einfach ne Abfrage:
PHP:
$sql = "SELECT Usr_ID FROM rated_Polls WHERE Poll_ID = '".(int)$_GET['poll_id']."',";
//ausfuerhen...
if($_SESSION['ID'] == $Usr_ID)
//Session ist nur zum demonstrieren ,soll die User ID darstellen
{
    die("Cant vote twice");
}

Wo ist da dein Problem mit dem Topic Vote?
 
Zuletzt bearbeitet:
So, habe mich jetzt mal hingesetzt und mir auch was überlegt.

Thx erstma für die Hilfe :D.
aber die Version von KristophS ist nicht direkt nützlich weil ich wiegesagt, viele verschiedene Module über eine Vote Tabelle laufen lassen will (News, Downloads, Bildergalerie), diese haben natürlich immer eine eigene ID und diese will ich nicht erst mit einer Zentralen Stelle vergleichen ;).

Ich habe es jetzt so gelöst, ich lege eine Tabelle cms_rated an, diese Tabelle ist folgend aufgebaut:

id | modul | user_id | content_id | rate | timestamp

Die Id wird einfach nur hochzählend sein, in der Spalte Modul kommt das jeweilige Modul rein, welches angesprochen werden soll. User_id ist denke ich mal selbsterklärend ;), in rate kommt der Wert seiner Abstimmung rein. In Content_Id kommt dann die ID des jeweiligen Absenders rein, also wenn eine News die ID 5 hatte, dann könnte eine Eintrag folgend aussehen_

1 | news | 1 | 5 | 5 | 123875467

Darunter könnte dann schon der Download sein:

2 | download | 1 | 1 | 6 |12345335

Ich denke mal das, dass ein guter Ansatz ist, oder?
 
Original geschrieben von KristophS
Ja, ist ja mein Modell ;).
Wieso musst du wissen welches Modull angesprochen wird ,sind die ID`s nicht eindeutig?

Ich sach es mal so, die IDs sind Lokal Eindeutig, d.h. im Bereich News gibt es nur ein einziges mal die eine ID, allerdings gibt es diese ID im Downloadbereich zum Beispiel nochma. Es wäre etwas schwer, bei einem Modularen CMS, jedes Modul mit der Zentralen Datenbank abgleichen zu lassen um dann eine Eindeutige ID zu vergeben, da die Module auch später wieder frei ein und ausgebunden werden können.
 
Bei deinem Problem hätte ich es einfach so gelößte,
dass eine Cookie je nach Modul z.b. "news_voted" gesetzt wird...
In diesem Cookie wird dann bei jedem Vote die ID des Votings angehängt.

Im Cookie sollte dann nach einigen Votes soetwas von 5|8|4|9 stehen...
Jetzt musst bei jedem Vote nurnoch abfragen, ob da schon gevotet wurde oder nicht...
 
Zurück