|
| Kommentar Fra : CLAN |
Dato : 04-10-03 09:00 |
|
Uha' der er altså bare SÅ mange af dem "derude", den bedste får du selvfølgelig igennem din udbyder, men her er et enkelt eksempel på hvordan en counter "fabrikeres"
Citat Før vi kan komme igang med selve counteren skal vi lige have styr på vores back-end, MySQL tabellen som skal håndtere registreringen af hits. Følgende gennemgang antager, at man på forhånd har styr på MySQL, hvis ikke kan man finde en mere uddybende forklaring på den nødvendige syntaks i denne artikel http://www.udvikleren.dk/show_article.php?id=54.
Strukturen: CREATE TABLE <tabel> (id INT NOT NULL AUTO_INCREMENT, hits INT DEFAULT '0', PRIMARY KEY(id))
Opdater hits: UPDATE <tabel> SET hits = hits+1 WHERE id = $id
Aflæs antallet af hits:SELECT hits FROM <tabel> WHERE id = $id
I resten af artiklen antages det, at man allerede har opdateret databasen og gemt antallet af hits i variablen $hits.
HIT COUNTER - TRIN 2 : Baggrunden
Hele ideen med at benytte GDLib er, at slippe for at bruge en masse tid på at klippe og klistre i Photoshop for derefter at samle stumperne i HTML. Ved at benytte GDLib kan vi nøjedes med en jpg-fil, som indeholder counterens grafiske udseende, resten klarer vi med GDLib.
Den billedefil som jeg anvender i dette eksempel kan hentes her http://www.irole.dk/udvikleren/counter/gfx/counter_bg.jpg (88x33 px)
HIT COUNTER - TRIN 3 : Indlæsning af JPEG-fil
Så kom vi endelig til den spændende del af artiklen, selve anvendelsen af GDLib. Det første vi skal gøre er, at oprette et billede fra en fil eller en url. Det gør vi således,//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("counter_bg.jpg");
//Indlæs en JPEG-fil fra en url
$counter_img = imageCreateFromJPEG("http://www.irole.dk/udvikleren/counter/gfx/counter_bg.jpg");
Ulempen ved at indlæse JPEG-filen fra en url er, at webserveren skal downloade denne før vi kan komme videre og det tager tid.
HIT COUNTER - TRIN 4 : Teksten
Nu kan vi benytte GDLib til at skrive vores hits direkte på det billede vi lige hentet, men først bliver vi nødt til at forstå lidt om GDLib's håndtering af fonte og farver. I GDLib er en farve defineret ud fra dens index i billedets farveindex. Skal man anvende en farve skal man derfor enten lokalisere eller allokere farven i indexet.//Allokering af farven sort
$black = imageColorAllocate($counter_img,0,0,0); //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret
GDLib har 5 indbyggede bitmap fonte, nummereret 1-5. Ønsker man at anvende andre bitmap fonte skal disse først indlæses. Man kan ligeledes også anvende TrueTypeFonte, men det vil ikke ikke komme ind på her. Vi vil til dette formål anvende font nr. 2.//Her vælges en indbygget font
$font = 2;
Når vi skal skrive i billedet skal vi angive koordinaterne for placeringen af teksten.//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
Så kommer vi til selve påførelsen af teksten//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $hits", $black);
HIT COUNTER - TRIN 5 : Returnering af billedet
Nu da antallet af hits er tilføjet mangler vi bare at returnere billedet. Da vi er interesseret i at returnere et billede er det meget vigtigt, at vi sender det som en ren billede strøm. Du må altså under ingen omstændigheder integrere dette script i et større PHP-script eller HTML dokument, med tekstindhold. Det skal være et selvstændigt script.//Først sender vi en header så browseren ved at den får et billede
header("Content-Type: image/jpeg");
//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
HIT COUNTER - TRIN 6 : HTML syntaksen
Det eneste vi nu mangler er, at indsætte vores counter i et HTML dokument. Eftersom vores script (counter.php) returnerer en picture-stream kan vi bare behandle scriptet som ethvert andet billede.//Vis counteren med ID 1
<IMG src="counter.php?id=1" height="33" width="88">
Hvis du har aktiveret register_globals i PHP.ini kan du teste scriptet uden MySQL-delen ved, at benytte linket "counter.php?hits=3330".
fra http://www.udvikleren.dk/article.php?aid=111 |
Ellers prøv at lave en Google-søgning som denne
http://www.google.dk/search?q=Hit+counter+script&ie=UTF-8&oe=UTF-8&hl=da&btnG=Google-s%C3%B8gning&meta=cr%3DcountryDK
Søren
| |
|
det skulle bare være en lille en der viste tal... og ikke et billede
| |
| Accepteret svar Fra : natmaden | Modtaget 50 point Dato : 05-10-03 01:31 |
|
Hej gangster50 , nå du har fået låget af kagedåsen
Dette dur kun hvis der er PHP til stæde. gem filen som eks: test.php
Kode <?
// ------ funktioner til tæller start
function tæl_op_og_gem() {
$counterfile="antal.log";
if (!file_exists($counterfile))
{
$stack=1;
$file=fopen($counterfile,"w+");
fputs($file,$stack);
fclose($file);
} else {
$file=fopen($counterfile,"r");
$tot=fgets($file,20);
$tot=$tot + 1;
fclose($file);
$file=fopen($counterfile,"w+");
$tot=fputs($file,$tot);
fclose($file);
}
}
// ------
function tæller_hent() {
$counterfile="antal.log";
if (!file_exists($counterfile))
{
// KUNNE IKKE FINDE TÆLLER-FIL
} else {
$file=fopen($counterfile,"r");
$tot= fgets($file,20);
fclose($file);
return $tot;
}
}
// ------ funktioner til tæller slut
// -----------------------------------
// ------ tæller opdater start
if (!$kommando){
tæl_op_og_gem();
echo "Tæller er nu på : ", tæller_hent();
exit;
}
if ($komando="-") {
tæl_op_og_gem();
exit;
}
if ($kommando="+"){
echo "Tæller er nu på : ", tæller_hent();
exit;
}
// ------ tæller opdater slut
?> |
Scriptet opretter selv en fil til opbevaring af antalet af besøg, dette er en textfil og hvis din tæller skal nulstilles kan du
rette i antal.log, eller slette den. du kan også sætte et startstal ind i antal.log, og så køre tælleren derfra.
Mvh. Natmaden
| |
|
jeg har skrevet på siden.
Dette er en tæller, først, også kommer det her frem*
Warning: fopen(antal.log): failed to open stream: Permission denied in /var/www/hotels/1go/warezftp/html/test.php on line 18
Warning: fputs(): supplied argument is not a valid stream resource in /var/www/hotels/1go/warezftp/html/test.php on line 18
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/hotels/1go/warezftp/html/test.php on line 19
Tæller er nu på : 500 <--- det er så det jeg har sat den til
| |
|
det har jeg gjort men der sker det samme
| |
| Kommentar Fra : natmaden |
Dato : 05-10-03 10:05 |
|
på hvilken adrasse har du den liggende
den virker hos mig http://net2620.dk/antal.php
Prøv at sætte denne kode ind i starten af test.php
Altså lige efter <? ,,,, det jo nok linie 2..
Kode $HTTP_GET_VARS = $_GET;
$HTTP_POST_VARS = $_POST;
$HTTP_SERVER_VARS = $_SERVER;
extract($_GET);
extract($_POST);
extract($_SERVER); |
ellers må jeg revidere koden lidt, men det er min sengetid nu,, vender tilbage i aften .
Natmaden
| |
|
på warezftp.1go.dk/test.php
| |
| Kommentar Fra : dscoop80 |
Dato : 01-03-04 14:20 |
| | |
| Kommentar Fra : natmaden |
Dato : 12-07-04 20:39 |
|
Det altid den der spørger, der ikke er der.
Sørgeligt.
Hvis at jeg havde et spørgsmål, ja så ville jeg da kikke om der var et svar.
ellers ville jeg da følge op på mit spørgsmål,
Personligt syntes jeg, at når man ikke gør det,
så er det som at pisse på folk, der prøver at hjælpe!
| |
| Kommentar Fra : dscoop80 |
Dato : 12-07-04 22:23 |
| | |
| Godkendelse af svar Fra : gangster50 |
Dato : 29-08-04 17:37 |
| | |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|