Wir sind keine Kunden, sondern Nutzer/Anwender... Es ist ein Open Source - Projekt und neben der unendlichen freiwilligen nebenberuflichen privaten Freizeit, die dafür geopfert wird, sollte man schon ein Unterschied zwischen Support bei Unternehmen und Unterstützung bei privaten Projekten machen.
Problem ist, dass das aktuelle Umfrage-Modul eben auch für offene Umfragen gedacht ist, sprich für nicht einloggte User, so dass die IP entscheidend ist. Wer das intern nur für Mitglieder nutzt, hat dieses Problem ist. Dennoch muss das Modul für alle Gegebenheiten vorgesehen sein.
Nach kleiner Prüfung ist das Modul nur auf IP eingestellt...
In der modules/Surveys/index.php fängt es ab Zeile 225 so an:
$past = time() - 1800;
sql_query("DELETE FROM ${prefix}_poll_check WHERE time < $past");
$result = sql_query("SELECT ip FROM ${prefix}_poll_check WHERE (ip='" . MX_REMOTE_ADDR . "') AND (pollID='$pollID')");
list($ips) = sql_fetch_row($result);
switch (true) {
case MX_REMOTE_ADDR == $ips:
case !sql_query("INSERT INTO ${prefix}_poll_check (ip, time, pollID) VALUES ('" . MX_REMOTE_ADDR . "', '" . time() . "', '$pollID')"):
case !sql_query("UPDATE ${prefix}_poll_data SET optionCount=optionCount+1 WHERE (pollID=$pollID) AND (voteID=$voteID)"):
case !sql_query("UPDATE ${prefix}_poll_desc SET voters=voters+1 WHERE pollID=$pollID"):
return mxRedirect($forwarder, _ISNOTCOUNTED . $msgAdd, 5);
default:
return mxRedirect($forwarder, _ISCOUNTED . $msgAdd, 5);
}
Für eine schnelle Lösung würde ich vorschlagen, anstatt der IP unter ip die UID des Mitglieds zu speichern und abzufragen und genauso den DELETE-SQL inaktiv zu schalten. Dann würde er immer unter der PollID eine IP (also die UID) finden und ablehnen. Ist also keine saubere globale Umsetzung, aber eine für dich spezifischere, für deine Anforderung.
Die Verhunzung der Code-Zeilen gehört nicht hierher. Wenn du den Code dafür möchtest, schreib eine PN.
Gruß