• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Voting ip sperre

Status
Für weitere Antworten geschlossen.

CrackPod

Neues Mitglied
[php:1:98c68c0e46]<?php
include("config.php");
$id = mysql_result(mysql_query("SELECT id FROM umfragen ORDER BY id DESC LIMIT 1", $serverid), 0, "id");
if($_POST["submit"] == "Vote")
{
$sql = "SELECT * FROM umfragen WHERE id=" . $id;
$query = mysql_query($sql, $serverid);
$data = mysql_fetch_array($query);
$data["hits"] = explode(";", $data["hits"]);
$data["hits"][$_POST["option"]]++;
$data["hits"] = implode(";", $data["hits"]);
$sql = "UPDATE umfragen SET hits='" . $data["hits"] . "' WHERE id=" . $id;
$query = mysql_query($sql, $serverid);
if(mysql_affected_rows($serverid))
{
setcookie("voted", $id, time()+3600*24*$blockdays);
echo "Deine Stimme wurde gez&auml;hlt. Danke für das Voting";
echo "
<a href=\"#\" onClick=\"window.open('daten/results.php','Name','height=400, width=400, left=500, top=200, menubar=NO, toolbar=NO, status=NO, scrollbars=NO, resizable=NO')\">Ergebnnis anzeigen</a>"; }
else
{
echo 'Fehler beim Abstimmen.';
}
}
else
{
if($_COOKIE["voted"] == $id)
{
echo 'Du hast bereits abgestimmt - Beim nächsten Mal wieder.';
echo "
<a href=\"#\" onClick=\"window.open('daten/results.php','Name','height=400, width=400, left=500, top=200, menubar=NO, toolbar=NO, status=NO, scrollbars=NO, resizable=NO')\">Ergebnnis anzeigen</a>";
die();
}
$sql = "SELECT * FROM umfragen WHERE id=" . $id;
$query = mysql_query($sql, $serverid);
$data = mysql_fetch_array($query);
$data["options"] = explode(";", $data["options"]);
echo $data["frage"];
echo '<form name="umfrage" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
for($i=0; $i<count($data["options"]); $i++)
{
echo '<input type="radio" name="option" value="' . $i . '">' . $data["options"][$i] . '
';
}
echo '
<input type="submit" name="submit" value="Vote"></form>';
echo "
<a href=\"#\" onClick=\"window.open('daten/results.php','Name','height=400, width=400, left=500, top=200, menubar=NO, toolbar=NO, status=NO, scrollbars=NO, resizable=NO')\">Ergebnnis anzeigen</a>";
}
?>[/php:1:98c68c0e46]
Dieser code ist sehr gut...
Ich habe ihn aber nicht selber gemacht da ich z.z. keine Lust bzw zeit hab mich hinzusetzen und mein eigenes votig zu schreiben...
Nun zu meiner frage:
Hat irgendjemand lust bzw zeit mir die cookie sperre durch ne ip sperre zu ersetzen? Ich weiß dass wir hier normalerweise keine Codes für jemanden bauen aber ich finde im internet kein gutes voting ohne ein copyright link...
Wenn ihr ein gutes wisst, dann postet einfach den link, wär auch dafür sehr dankbar.
 
Werbung:
wenn du ne ipsperre machen willst, musst du eine datei anlegen, in der die gseperrten ip gelagert werden, diese muss dann immer wieder ausgelesen werden!
allerdings haben viele leute keine fixe ips sodass sie nach 5min wieder drin sein können, wie wenn sie die cookies löschen würden...

mfg, fätzminator
 
naja ich habe nen code gefunden danke trotzdem und die cookies gehenm nicht weil das ding includiert wird und deswegen der header schon gesendet wurde und deswegen kann man kein cookie mehr machen...
 
Werbung:
ich habe einen code gefunden, der eine ipsperre hat. es ist einfach per SQL. und genau genommen ist es für ONLINE Users zu zählen.... sollte aber auch für deine wünsche gehen. nur, habe ich der code wieder einmal zuhause :mrgreen:
 
mom, habe was gefunden. ist einfach der script für ein counter mit ipsperre. sogar ohne SQL
counter.php
[php:1:7b259a83f3]<?php

/////////////////////////////////////////
// Counter + Reloadsperre v1.0
/////////////////////////////////////////

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 2;
// IP-Datei
$ipdatei = "ips.txt";
// Counterdatei
$datei = "counter.txt";
// Anzahl der führenden Nullen
$stellen = 5;
// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++) {
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)) {
if ($ip_addr == $rem_addr) {
$gefunden=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}

/////////////////////////////////////////
// Abfrage
/////////////////////////////////////////

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
// Falls die Datei existiert, wird sie ausgelesen und
// der dort enthaltene Wert um Eins erhöht.
$fp=fopen($datei,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
// Die Datei counter.txt existiert nicht, sie wird
// neu angelegt und mit dem Wert 1 gefüllt.
$fp=fopen($datei,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
} else {
// Die Datei existiert zwar, jedoch handelt
// es sich wahrscheinlich um den gleichen Besucher
$fp=fopen($datei,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
}

$zahl=sprintf("%0".$stellen."d",$zahl);


?>[/php:1:7b259a83f3]
ev kannst du mit dem was anfangen
 
ich habe schon einen code der einfach ist...
[php:1:decc17242a]
<?php
//Die Variablen $sperrstamp und $sperrfile sind Global
//und somit für restliche Operationen "unbrauchbar"...

//Alle Fehler ausgeben...
error_reporting ("E_ALL");
ini_set ("display_errors", 1);

//GLOBAL Textfile für Datenspeicherung
//Die Datei muss mit chmod 0777 selbst erstellt werden werden
$sperrfile = "sperren.txt";
//Sperrzeit in Minuten
$sperrzeit = 1;
//GLOBAL Sperrzeit in Sekunden
$sperrstamp = $sperrzeit * 60;

//////////////////////////////////////////////////////////////////////////////////////////////
//Diese Funktion ermittelt uns die IP des Besuchers
//Leider nur zum Teil zuverlässig
//zu sehen unter "http://www.iphosting.ch/index.php?content=schnipsel&id=45"
function get_ip()
{
$ip = "";

if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "";

return $ip;
}

//////////////////////////////////////////////////////////////////////////////////////////////
//Diese Funktion löscht Einträge
//deren Zeitstempel ein erneutes eintragen zulässt
//aus der Datei "sperren.txt";
function delete_entry ($timestamp)
{
//Sperrzeit in Sekunde als Global definieren
GlOBAL $sperrstamp;
//Datei für Datenspeicherung als Global definieren
GLOBAL $sperrfile;
//Datei zeilenweise in das Array $lines einlesen
$lines = file ($sperrfile);
//Falls $lines wirklich ein Array ist,
//Die Datei also nicht leer ist..
if (is_array ($lines))
{
//Durchlaufen wir $lines zeilenweise
foreach ($lines as $key => $var)
{
//Hier trennen wir jede Zeile anhand von ## auf
//in $values[0] ist die IP
//in $values[1] ist der Eintragezeitpunkt
//in $values[2] ist die ausgeführte Aktion
$values = explode ("##", $var);
//In die Variable $old_time kommt nun der Wert des Eintragezeitpunktes
//und der Sperrzeit addiert
$old_time = $values[1] + $sperrstamp;
//Falls die Variable $old_time kleiner ist als der jetztige Zeitpunkt
//D.H Zwar ein Eintrag vorhanden ist, jedoch die Zeit bereits abgelaufen...
if ($old_time < $timestamp || empty ($var))
{
//löschen wir dieses Arrayelent einfach
unset ($lines[$key]);
}
}
//Einen neuen Dateizeiger öffnen
$fp = fopen ($sperrfile, "w");
//Das neue "gelöschte" Array durchlaufen
foreach ($lines as $var)
{
//jedes Element in die Datei schreiben
fputs ($fp, $var . "");
}
//Dateizeiger schliessen
fclose ($fp);
}
}

//////////////////////////////////////////////////////////////////////////////////////////////
//Diese Funktion prüft ob die IP samt Aktion so in der Datei noch vorkommen
//Da wir später die Funktion delete_entry () immer vor
//der Funktion check_entry () aufrufen,
//sind zu diesem Zeitpunkt nur noch gesperrte Zeitstempel in der Datei enthalten
//Falls die IP und Aktion eines Users also noch vorkommen,
//gibt die Funktion false zurück
function check_entry ($ip, $timestamp, $action)
{
//Datei "sperren.txt" als Global definieren
GLOBAL $sperrfile;
//Die Datei erneut in ein Array einlesen
$lines = file ($sperrfile);
//Falls die Datei nicht leer war
if (is_array ($lines))
{
//Durchlaufen wir sie zeilenweise
foreach ($lines as $line)
{
//Falls wir in einer Zeile
//// IP ## *irgendeinen Zeitstempel* ## und die Gesuchte Akion ////
//finden
if (preg_match ("/$ip##(.*)##$action/", $line))
{
//können wir die Schleife und die Funktion beenden
//und false zurückgeben
//der User darf die Aktion nicht nochmal durchführen
return false;
}
}
//Falls die Schleife ohne false ausgeführt wurde,
//kam die IP in komination mit der Aktion nicht vor
//Die Aktion ist erlaubt deshalb wahr...
return true;
}
//Falls die Datei aber leer ist
else
{
//ist sowieso niemand gesperrt also wahr
return true;
}

}

//////////////////////////////////////////////////////////////////////////////////////////////
//Diese Funktion schreibt die neuen Einträge
//und wird nur aufgerufen Falls check_entry () true zurückgibt
function write_entry ($ip, $timestamp, $action)
{
//Datei "sperren.txt" als Global definieren
GLOBAL $sperrfile;
//Die alten Einträge in eine Variable einlesen
$lines = file_get_contents ($sperrfile);
//Neuen Dateizeiger auf die Datei öffnen
$fp = fopen ($sperrfile, "w");
//Den neuen Eintrag schreiben
fputs ($fp, "$ip##$timestamp##$action\n");
//Die alten Einträge schreiben
fputs ($fp, $lines);
//Dateizeiger schliessen
fclose ($fp);
}

//Diese "Haupt"-Funktion führ nun alles aus
function check_it ($ip, $timestamp, $action)
{
//als erstes alle nicht gültigen Einträge aus der Datei löschen
delete_entry ($timestamp);
//Falls die IP und Aktion in der Datei nicht vorkommen
if (check_entry ($ip, $timestamp, $action))
{
//schreiben wir sie hinein
//und geben wahr zurück
write_entry ($ip, $timestamp, $action);
return true;
}
else
{
//sonst ist der User ja noch gesperrt
//also falsch
return false;
}
}

//////////////////////////////////////////////////////////////////////////////////////////////
//Lange Rede, kurzer Sinn:

//Wir ermitteln die IP des Users
$ip = get_ip();
//Den aktuellen Unix-Zeitstempel
$timestamp = mktime ();
//und definieren eine Aktion
$action = "aufrufen";

//Aufrufen der "Haupt"-Funktion
//Falls diese wahr zurückgibt wurdest du in diesem Moment geloggt
//und beim nächsten aufruf wird sie falsch zurückgeben
//Und somit "nicht erlaubt"
if (check_it ($ip, $timestamp, $action))
echo "erlaubt!";
else
echo "nicht erlaubt!";
?> [/php:1:decc17242a]
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben