Ihmiset omistavat sivuillaan myös graafisia kävijälaskureita. Siis semmoisia missä numeron näyttää kuva. Tämä ei ole sellainen. Mutta melkein. Tämä on nimittäin skripti, joka näyttää sille annetun numeron kuvana. Kuvan se kokoaa siten, että eräässä kuvatiedostossa on 10 yhtä pitkää merkkiä, jotka ovat numerot 0-9. HUOM! Fontin täytyy olla tasalevyinen (siis kirjaimet yhtä leveitä). Niistä se sitten leikkaa ja liimaa sopivan kuvan.
Tekniset tiedot:
Tuotetun kuvan tyyppi: PNG
Käytetyn kuvan tyyppi: PNG
Käyttö:
pistä <IMG>-tagin SRC-arvoksi grafcnt.php ja lisää siihen GET-metodilla parametrejä. Siis esim. <IMG SRC="grafcnt.php?luku=15&kuva=kuva.png"> tuottaisi kuvan, jossa on luku 15 ja joka perustuu kuvaan kuva.png.
Parametrit:
Siis näitä lisätään kuten yllä selostin (epäselvästi)
luku: se luku, joka näytetään
len: kuinka monta numeroa kuvassa näytetään vähintää esim. jos luku on 15 ja len on 3, niin tulee 015, mutta jos luku on 1942 ja len on 3, näytetään 1942.
kuva: kuvatiedoston, josta kuva muodostetaan nimi. Jos tätä ei anneta, käytetään oletuksena tiedostoa laskuri.png. Jos sitä ei ole, niin katso alta.
oma: aseta arvoksi 1, niin käytetään PHP:n fonttia 2 tekstin tulostamiseen. Näin käy myös silloin, jos kuvatiedostoa ei löydy.
Lisäksi sisältää esimerkkiskriptin cnt.php, joka laskee sivun lataukset. Skripti käytössä: http://dsword.se8.org/grafcnt/
grafcnt.php
<?php $luku = $_GET['luku']; if ($luku == "") { $luku = 0; } // jos luku on nolla, se tosiaan ON nolla if (isset($_GET['len'])) { // jos on annettu pituus, niin sitä käytetään $len = $_GET['len']; if ($len > strlen($luku)) { $luku = str_repeat("0", $len - strlen($luku)) . $luku; } } // puretaan luku merkkeihin for ($i = 0; $i < strlen($luku); $i++) { $lt[$i] = substr($luku,$i,1); } $kuva = $_GET['kuva']; // jos kuvan nimeä ei ole määritelty, käytetään oletusasetusta "laskuri.png" if ( $kuva == "" ) { $kuva = "laskuri.png"; } // jos kuva on olemassa eikä haluta käyttää PHP:n omaa fonttia, käytetään kuvaa, muuten // käytetään PHP:n omaa fonttia if (is_file($kuva) and !($_GET['oma'] == 1)) { $pohja = imagecreatefrompng($kuva); } else { $pohja = imagecreate(imagefontwidth(2) * 10, imagefontheight(2)); imagecolorallocate($pohja, 255, 255, 255); imagestring($pohja, 2, 0, 0, "0123456789", imagecolorallocate($pohja, 255, 0, 0)); } $w = imagesx($pohja) / 10; // yhden merkin leveys $h = imagesy($pohja); // korkeus $ww = count($lt); // tuotetun kuvan leveys $ww = $ww * $w; // kerrotaan selaimelle, että käytetään png :a header ("Content-type: image/png"); // tehdään sitten uusi kuva. $uusi = imagecreate ($ww, $h); // taustaväri on musta $tausta = imagecolorallocate($uusi, 0,0,0); // sitten kopioidaan niitten numeroiden kuvat uudelle kuvalle $i = 0; foreach ($lt as $n) { imagecopy($uusi, $pohja, $i * $w, 0, $n * $w, 0, $w, $h); $i++; } // tulostetaan se uusi kuva imagepng($uusi); // vapautetaan nämä kuvat. imagedestroy($pohja); imagedestroy($uusi); ?>
cnt.php
Tämä on kovin yksinkertainen, joten en kommentoinut. Käyttö (kuka tätä haluaa muka käyttää):
<?php include_once("cnt.php"); ?>
Ja koodi:
Ehkä ei hyödyllisin skripti, mutta vinkkejähän nämä ovat. Hyvin kommentoitu ja joku voipi saada tästä ideoita omiin skripteihinsä. Mukavan näköistä koodia jokatapauksessa.
Hienohan tuo on! tosin tiedosto hajoaa jos lataa sivua liian monta kertaa liian lyhyessä ajassa, tähänkään ei varmaan ole mitään ratkaisua, kun kukaan ei sitä oo kertonut... eikä flock() auta!
Ja miksiköhän flock ei auta?
Tätä mä tarttinkin. Iha jees koodi
Aihe on jo aika vanha, joten et voi enää vastata siihen.