Geschrieben von compactdisc am 29.12.2004, 20:57

Also:

Ich zeige euch hier, wie man ein Umfrage-Script mit IP-Sperre programmiert:

1. Wir brauchen ein Formular, damit der User seine Stimme abgeben kann; im Beispiel verwende ich Radiobuttons.

Fangen wir an, ok?

================================


<?

echo "<font face='Verdana' size='2'><form method='post' action='vote.php'>

<input type='radio' name='umfrage' value='hund'>Hund
<br>
<input type='radio' name='umfrage' value='katze'>Katze
<br>
<input type='radio' name='umfrage' value='pferd'>Pferd
<br>
<input type='radio' name='umfrage' value='eichhornchen'>Eichhörnchen
<br>
<br>
<input type='submit' name='submit' value='Submit'>
</form></font>";

?>

Damit habt ihr schon ein Formular, speichert das unter formular.php ab.

==================================================

Um die Stimme abzuspeichern - und das wollen wir in einer Datenbank machen - erstellt ihr eine neue Tabelle, den SQL-Code dazu:


CREATE TABLE `counter` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`hund` INT NOT NULL ,
`katze` INT NOT NULL ,
`pferd` INT NOT NULL ,
`eichhörnchen` INT NOT NULL ,
PRIMARY KEY ( `id` )
);

Wir benötigen eine weitere Tabelle, damit wir diejenigen, die bereits gevotet haben, an ihrer IP erkennen können. Verwendet dazu folgenden Code:


CREATE TABLE `ip` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`ip` TEXT NOT NULL ,
`datum` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);

======================================

Nachdem ihr die zwei Tabellen erstellt habt, können wir nun den Code, der zum Abspeichern der Stimme in der Tabelle verantwortlich ist anschauen. Bevor ihr aber damit beginnt, müssen wir die Datenbank connecten, um auf sie zugreifen zu können.


<?

mysql_connect("mysql.lima-city.de", "benutzer","passwort") or die ("Keine Verbindung möglich"); // Damit verbindet man die Datenbank

mysql_select_db("<datenbank>") or die ("Datenbank nicht vorhanden/gefunden"); // Mit dem Befehl mysql_select_db() wählt man die Datenbank aus.

?>

Speichert dieses Script unter dem Namen connect.inc.php ab!

===================================================

Jetzt kann mit dem Abspeichern der Stimmen in der Datenbank begonnen werden:


<?

// ----------------------------------

include ("connect.inc.php"); // Include der Datenbankverbindung

$ip = $REMOTE_ADDR; // IP-Adresse des Users ausfindig machen und in $ip speichern.

echo "<font face='Verdana' size='2'>"; // Schriftart und Schriftgrösse bestimmen

// ----------------------------------

$sql = "SELECT * FROM ip WHERE ip='$ip'"; // Wählt alle Einträge aus der Datenbank aus, die in der Spalte ip die IP-Adresse des Besuchers haben.

$result = mysql_query($sql);

$menge = mysql_num_rows($result); // Zählt die Anzahl der Zeilen

if ($menge > 0) { // Wenn ip in Datenbank vorhanden, dann "Sie haben heute schon gewählt" ausgeben

echo "Sie haben heute schon gewählt";
}
else {

// ---------------------------------------------

if (!$submit OR !$umfrage) { // Überprüft, ob das Formular richtig ausgefüllt ist.

echo "Füllen Sie das Formular bitte richtig aus!<br><a href='formular.php'>Zurück zum Formular</a>";

}

else if ($submit) {

switch ($umfrage) {

case (hund):

// ------------------------------------

$sql3 = "SELECT * FROM counter";
$result3 = mysql_query($sql3);

while ($row = mysql_fetch_array($result3)) {

$hund = $row['hund']; // Speichert den Wert in der Spalte "hund" in der Variable $hund

}

$hundp = $hund + 1; // Erhöht $hund um 1

$sql4 = "UPDATE counter Set hund='$hundp' WHERE id=1"; // Updatet die Spalte "hund"
$result4 = mysql_query($sql4);

// -------------------------------------

break;

case (katze):

// ------------------------------------

$sql3 = "SELECT * FROM counter";
$result3 = mysql_query($sql3);

while ($row = mysql_fetch_array($result3)) {

$hund = $row['katze'];
}

$hundp = $hund + 1;

$sql4 = "UPDATE counter Set katze='$hundp' WHERE id=1";
$result4 = mysql_query($sql4);

// -------------------------------------

break;

case (pferd):

// ------------------------------------

$sql3 = "SELECT * FROM counter";
$result3 = mysql_query($sql3);

while ($row = mysql_fetch_array($result3)) {

$hund = $row['pferd'];
}

$hundp = $hund + 1;

$sql4 = "UPDATE counter Set pferd='$hundp' WHERE id=1";
$result4 = mysql_query($sql4);

// -------------------------------------

break;

case (eichhornchen):

// ------------------------------------

$sql3 = "SELECT * FROM counter";
$result3 = mysql_query($sql3);

while ($row = mysql_fetch_array($result3)) {

$hund = $row['eichhornchen'];
}

$hundp = $hund + 1;

$sql4 = "UPDATE counter Set eichhornchen='$hundp' WHERE id=1";
$result4 = mysql_query($sql4);

// -------------------------------------
break;
}

$timestamp = time(); // Ermittelt aktuelle Zeit

$sql2 = "INSERT INTO ip (ip,datum) VALUES ('$ip','$timestamp')"; // Fügt IP und Datum in die Tabelle "ip" ein.
$result2 = mysql_query($sql2);

}

}

echo "</font>";

?>

Speichert das nun unter vote.php ab!

=========================================

Jetzt fehlt nur noch die Statistik!


<?

include ("connect.inc.php"); // Verbindet mit der Datenbank

echo "<font face='Verdana' size='2'>"; // Schriftgrösse und -art bestimmen

// Alle Werte aus der Tabelle abholen

$sql = "SELECT * FROM counter";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {

$hund = $row['hund']; // Anzahl der Stimmen für "hund" in Variable speichern
$katze = $row['katze'];
$pferd = $row['pferd'];
$eichhornchen = $row['eichhornchen'];

}

$gesamt = $hund + $katze + $pferd + $eichhornchen // Gesamte Anzahl der Stimmen ausrechnen

// ------------------------------------------------------------

$einestimme = 100 / $gesamt; // 1% der gesamten Stimmen ausrechnen

$hundp = $einestimme * $hund; // Stimmen für den Hund in % rechnen

$katzep = $einestimme * $katze;

$pferdp = $einestimme * $pferd;

$eichhornchenp = $einestimme * $eichhornchen;

// --------------------------------------------------------------

// Ausgabe aller Werte in einer Tabelle

echo "<table border='0' width='300Px'>
<tr>
<td width='50%'>Hund</td>
<td width='50%'>$hundp%</td>
</tr>
<tr>
<td width='50%'>Katze</td>
<td width='50%'>$katzep%</td>
</tr>
<tr>
<td width='50%'>Pferd</td>
<td width='50%'>$pferdp%</td>
</tr>
<tr>
<td width='50%'>Eichhörnchen</td>
<td width='50%'>$eichhornchenp%</td>
</tr>
</table>";

// ---------------------------------------------------------------

echo "<br><br>";

echo "Insgesamt $gesamt Stimmen</font>";

?>

Das speichert ihr als statistik.php ab.

==============================================

Der letzte Code ist optional; er ist dazu da, dass man die IP´s aus der Tabelle "ip" nach einer bestimmten Zeit löschen kann.


<?

include ("connect.inc.php"); // Datenbank verbinden

$sql = "SELECT * FROM ip order by id";
$result = mysql_query($sql);

$counter = 0;

while ($row = mysql_fetch_array($result)) {

$id = $row['id'];

$datum = $row['datum'];

$datumf = date("Ymd",$datum); // Datum formatieren

$datuma = date("Ymd"); // Aktuelles Datum, in gleicher Form, wie das Datum in der Tabelle formatiert.

$dat = $datuma - $datumf; // Aktuelles Datum mit dem Datum in der Tabelle subtrahieren, Differenz = Anzahl Tage, seitdem die IP in der Tabelle ist.

if ($dat >= 1) { // Wenn Datum älter als 1 Tag ist, dann ip aus Tabelle löschen

$sql2 = "DELETE FROM ip WHERE id='$id'";
$result2 = mysql_query($sql2);

$counter++;

}

}

if ($counter == 0) {
echo "Es wurden keine IPs aus der IP-Sperre gelöscht.";
}
else {

echo "Es wurden $counter IPs aus der IP-Sperre gelöscht.";
}

?>

Das wars dann auch schon ;)

MfG
compactdisc

Bewertung Anzahl
6
28,6 %
2 Bewertungen
5
28,6 %
2 Bewertungen
4
14,3 %
1 Bewertungen
3
14,3 %
1 Bewertungen
1
14,3 %
1 Bewertungen