Zdravím, jde nějak v níže uvedeném skriptu, který je includovaný do index.php, umístit SetCookie tak, aby to fungovalo, aniž by tomu vadilo, že už jde o výstup stránky? Díky
<?php
if (file_exists("Povidky/mpavelek1/znamky.dat")):
$fp = fopen("Povidky/mpavelek1/znamky.dat", "r");
$data_znamkovani = FRead ($fp, FileSize("Povidky/mpavelek1/znamky.dat"));
list($z1,$z2,$z3,$z4,$z5) = Explode(":", $data_znamkovani);
endif;
if (isset($odpoved)) {
if (!file_exists("znamky.dat")):
$z1 = "0";
$z2 = "0";
$z3 = "0";
$z4 = "0";
$z5 = "0";
$fp = fopen("znamky.dat", "w");
fwrite ($fp, $z1 .":" . $z2 .":" . $z3 .":" . $z4 .":" . $z5);
fclose($fp);
endif;
if ($hlasovano!="ano") {
SetCookie("hlasovano", "ano", Time()+86400);
if (isset($odpoved)):
if ($odpoved == '1') $z1++;
if ($odpoved == '2') $z2++;
if ($odpoved == '3') $z3++;
if ($odpoved == '4') $z4++;
if ($odpoved == '5') $z5++;
$data_znamkovani = $z1 . ":" . $z2 . ":" . $z3 . ":" . $z4 . ":" . $z5;
endif;
}
$fp = fopen ("znamky.dat", "w");
fwrite ($fp, $data_znamkovani);
fclose ($fp);
}
?>
<? include "index.php?id=Povidky/mpavelek1/mpavelek1" ?>
<table class="hodnoceni">
<tr><td colspan="2">
<strong>Hodnocení povídky</strong><br/>
Oznámkujte povídku, jako ve škole:
</td></tr>
<tr><td>
<?php if(1) { ?>
<a href="Povidky/mpavelek1/zpracuj&odpoved=1">1</a> |
<a href="Povidky/mpavelek1/zpracuj&odpoved=2">2</a> |
<a href="Povidky/mpavelek1/zpracuj&odpoved=3">3</a> |
<a href="Povidky/mpavelek1/zpracuj&odpoved=4">4</a> |
<a href="Povidky/mpavelek1/zpracuj&odpoved=5">5</a>
<?php } else { ?>
Už jste hlasovali.
<?php } ?>
</td></tr>
<tr><td colspan="2">
<?php
if (file_exists("Povidky/mpavelek1/znamky.dat")) {
$soucet = ($z1*1) + ($z2*2) + ($z3*3) + ($z4*4) + ($z5*5);
$znamek = $z1 + $z2 + $z3 + $z4 + $z5;
if($soucet != 0) { $prumer = round(100*($soucet/$znamek))/100; } else { $prumer='?'; }
} else {
$prumer='?';
}
echo('Průměrná známka: <strong>' . $prumer . '</strong>');
?>
</td></tr>
<tr><td colspan="2">
Hodnoceno: <?php echo($znamek); ?>x
</td></tr>
</table>
Aniz bych ten skript nejak podrobneji studoval, tak myslim, ze na takoveto veci (mimojine) se da vyuzit Output Buffering.
Je mozne, ze kdyz to nekdo podrobne projde, tak najde i jinou moznost bez vyuziti OB (nejake preskladani podminek nebo celkove filozofie skriptu), ale na to bohuzel namam cas ani chut.
Já jsem pro ankety (zatím pouze teoreticky, prakticky někdy, nejspíš v srpnu) vymyslel celkem dokonalou věc: základem je použití obrázků generovaných PHP, které jdou měnit kdykoli javascriptem, no a když se tomu obrázku tím javascriptem zadají potřebné údaje (metoda get, tedy zápis hodnot "za otazníkem"), tak ten obrazek.php může klíďo píďo ukládat cookies, zapisovat do databáze nebo souboru, aniž by se znova načítala celá stránka nebo aby anketa byla v rámu, který by se znova načítal, nemusí se taky používat popoup-okna, což je další "anketová metoda", stačí jen znova načíst nějaký ten obrázek. A navíc, když bude počet hlasujících pro jednotlivé možnosti taky malinký PHP-obrázek, může se po odhlasování bez reloadu zobrazit aktualizovaný stav hlasování... :o)
cookies muzes ukladat i pres javascript
a) Jak?
b) Kde? (jen na začátku, kdekoli, ... )
c) Co z toho?
a) nějak
b) všude
c) nic :)
a) Jak?
Touhle funkcí:
function write_coo(hodnota){
nazev="...";
vyprsi=100*60*60*24*30; //měsíc
datum=new Date();
datum.setTime(datum.getTime()+vyprsi);
document.cookie=nazev+"="+escape(hodnota)+"; "+ "expires="+datum.toGMTString();
}
b) Kde? (jen na začátku, kdekoli, ... )
kdekoliv na stránce, klidně po nějaké akci v prohlížeči.
c) Co z toho?
Když má uživatel vypnutej JavaSript, tak muže hlasovat kolikrát chce, muže se ten script upravit, aby se to smazalo {javascript:document.cookie='';} => Nevim jestli to funguje, ale asi ano.
Moc bych to nedoporučoval, ale většina uživatelů to nechá tak jak to je. Ale s tim obrázkem jak psal R.U.R. je to velice zajímavej způsob, ale někdo zase muže mít vypnuté obrázky, atd. Všechno má svoje 'plusminus' :-)
PS:
1)pak se z toho dá také javascriptem číst:
function read_coo(){
nazev="...";
obsah=document.cookie; upravene=obsah.split(';');
velikost=upravene.length; kusy=""; vrat="";
for (x=0;(x<velikost && vrat=="");x++)
{
kusy=upravene[x].split('=');
if (kusy[0].substring(0,1)==' ')
kusy[0]=kusy[0].substring(1,kusy[0].length);
if (kusy[0]==nazev) vrat=kusy[1];
}
if (vrat) hodnota=unescape(vrat);
else hodnota="";
return hodnota;
}
2) Tahle verze je pro více cookies na jedné stránce, dá se také udělat odlehčená verze, která umí to samé pro jednu cookie.
3)Nevím jak to spolupracuje s PHP...
To mě vůbec nenapadlo, že si můžou vypnout obr. Dík za upozornění! Tušíte někdo, jak velká část uživatelů má vypnuté obrázky?
To by mě taky zajímalo...
.:: Ale když jsem měl pomalé připojení (přes Dial-up), tak jsem si ty obrázky docela často vypínal, né však na webu kde je jich málo.