Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Yksinkertainen galluppi

T.M. [18.07.2006 23:10:06]

#

<?php // yk_gallup.php

ob_start();

// Luodaan get muuttujista selvelmpiä:
$act = $_GET['act'];
$id = $_GET['id'];

// Käyttäjän IP:
$ip = $_SERVER['REMOTE_ADDR'];

$ip_lista = file("yk_gallup_ipdata.txt");
$salli = 1;
// Tarkistetaan löytyykö käyttäjän IP:tä tiedostosta:
if(in_array("$ip\r\n", $ip_lista)){ // "\r\n" tarkoittaa rivinvaihtoa
	$salli = 0;
}

// Haetaan gallupin datatiedot riveittäin taulukkoon:
$filu = file("yk_gallup.txt");
$max = count($filu); // Kuinka monta vastausta + kysymys

$kysymys = trim($filu[0]); // Viimeinen merkki oli rivinvaihto file() funktion takia, joten trimmataan


print"<B>$kysymys</B><hr>";
// Aloitetaan toiselta riviltä (1), koska ensimmäinen oli kysymys:
for($u = 1; $u < $max; $u++){
	$osa = explode("<>", $filu[$u]);
	if($salli){
		// Jos ei olla vielä äänestetty:
		print"<A HREF=\"?act=vastaa&id=$u\">$osa[0]</A><br>";
	}else{
		// Jos ollaan äänestetty, tulostetaan myös määrät:
		print"$osa[0] - $osa[1]<br>";
	}
} // Yksinkertainen galluppi by T.M. - www.HC-Codes.net


if($act == "vastaa"){
	if($salli == 1){
		// Haetaan klikatun vastauksen tiedot siltä riviltä:
		$osa = explode("<>", $filu[$id]);
		// Kasvatetaan nykyistä lukua yhdellä, eli lisäämme klikkauksen laskuun:
		$osa[1]++;
		// Tallennetaan muutokset siihen riville:
		$filu[$id] = "$osa[0]<>$osa[1]<>\r\n";
		// Liitetään tiedosto yhteen merkkijonoon uudestaan:
		$liitos = implode("", $filu);
		// Tallennetaan muutokset tiedostoon:
		$save = fopen("yk_gallup.txt", "w");
		fwrite($save, $liitos);
		fclose($save);
		// Tallennetaan uusi IP tiedostoon:
		$save = fopen("yk_gallup_ipdata.txt", "a");
		fwrite($save, $ip."\r\n");
		fclose($save);
	}
	header("Location: yk_gallup.php");
}


ob_end_flush();

?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta