Rozdział 7. ♦ System plików 213
a zatem jeśli do skryptu ankieta.php zostanie przekazany parametr action o wartości show, będzie to oznaczało, że ankieta ma zostać jedynie wyświetlona na ekranie. Jeśli natomiast parametr action będzie miał wartość vote (zapewnia to ukryte pole <input type="hidden" name=’’action" value="vote"> formularza), będzie to oznaczało, że ma zostać zapisany nowy głos.
Treść skryptu ankieta.php została przedstawiona na listingu 7.22. Jego wykonywanie rozpoczyna się od sprawdzenia, czy w tablicy $_GET znajduje się indeks o nazwie action. Jeśli nie, oznacza to, że do skryptu nie zostały przekazane odpowiednie dane; do przeglądarki wysyłany jest więc odpowiedni komunikat i skrypt kończy działanie. Jeśli jednak indeks action jest obecny, sprawdzana jest jego wartość. Jeśli jest to ciąg show, wywoływana jest funkcja show, wyświetlająca wyniki. Jeśli natomiast jest to ciąg vote, wywoływana jest funkcja vote zapisująca nowy głos oraz, jeżeli wywołanie vote zakończyło się sukcesem, również funkcja show. W przypadku gdy wartością klucza action nie jest ani vote, ani show, do przeglądarki wysyłany jest komunikat o nieprawidłowym wywołaniu skryptu (nieprawidłowych danych).
Listing 7.22. Skrypt przetwarzający dane z ankiety
<html>
<head>
<meta http-equiv="Content-Type" content="text/html: charset=iso-8859-2"> <title>Wyniki glosowania</title>
</head>
<body>
<div align="center">
<h2>Wyniki głosowania</h2>
<?php
function vote()
if(!isSet($_GET["vote“]) || $_GET["vote"] == ""){ echoCNie został zaznaczony żaden z kolorów."): return false:
else{
Scolor - $ GET[”vote"]:
i f(fi 1e_exi sts("colors.txt”)){ if(($fp = fopenCcolors.txt". "r+”)) == false){ echo("8łqd serwera. Głos nie został uwzględniony."); return false;
else{
if(($fp = fopenCcolors.txt", "w+”)) — false){ echoCBłąd serwera. Głos nie został uwzględniony."); return false;
Sczerwony = i ntva1(fgets($ fp));
Szielony = intval(fgets($fp));
Jniebieski = intval(fgets($fp));