[php] hoe site van afkomst te tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een random icon geschreven in PHP. Nu heb ik daar een tellertje achter gekregen die het aantal opvragingen telt. Ik gebruik de volgende code:
<?
Header("Content-type: image/gif" );
Header("Cache-Control: no-cache, must-revalidate" );
srand((double)microtime()*1000000);
$nr=rand(1,68);
$fn=fopen("$nr.gif","r" );
fpassthru($fn);
?>

<?PHP
/***************************************************
Name of file containing the count total.
***************************************************/
$file = "views.txt";

$open = fopen($file, "r");
$size = filesize($file);
$count = fread($open, $size);
fclose($open);


/***************************************************
If cookie 'simplecount' is not set it will
add 1 to the counter and set the cookie.

If the cookie does exist, this section will
be skipped.
***************************************************/
{

$open = fopen($file, "w");
$count++;
fwrite($open, $count);
fclose($open);

}
?>
Ik weet niet hoe jullie dat doen met die kadertjes voor scripts, daarom even zo. Excuses.

Nu wil ik ervoor zorgen dat er bijgehouden wordt waar de opvragingen vandaan komen, aangezien ik op meerdere sites actief ben. Dus de pagina voor de stats als volgt:

Aantal views: 36

Aantal views vanaf FOK: 6
Aantal views vanaf GOT: 20
Aantal views vanaf Clubcharts: 10

Iemand enig idee hoe dit in de teller te bouwen is?

Edit: Ik zie net dat mijn icoon niet in het forum wordt getoont, maar wel in mijn profiel. Laten jullie hier op GoT geen random icons toe?

[ Voor 9% gewijzigd door Verwijderd op 12-10-2003 19:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

1) Ja random icons worden toegelaten op GoT(zie b.v. mijn icoon).
2) Kijk naar $SERVER['HTTP_REFFERER'], daarmee kan je de pagina waar het vandaan komt geopend worden.

Acties:
  • 0 Henk 'm!

  • Harm
  • Registratie: Mei 2002
  • Niet online
Verwijderd schreef op 12 October 2003 @ 19:29:
Edit: Ik zie net dat mijn icoon niet in het forum wordt getoont, maar wel in mijn profiel. Laten jullie hier op GoT geen random icons toe?
Is op te lossen door in je prefs even een vinkje te zetten bij 'Toon webicons?' :).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm...ik ben een echte PHP-noob. Kun je me misschien zeggen waar ik dat moet plaatsen in de code? En op welke manier?

Harm, bedankt. Dit is de eerste keer voor mij op een forum dat dat ingeschakeld moet worden :)

[ Voor 30% gewijzigd door Verwijderd op 12-10-2003 19:47 ]


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
Verwijderd schreef op 12 oktober 2003 @ 19:40:
1) Ja random icons worden toegelaten op GoT(zie b.v. mijn icoon).
2) Kijk naar $SERVER['HTTP_REFFERER'], daarmee kan je de pagina waar het vandaan komt geopend worden.
moet dit niet $_SERVER['HTTP_REFERER'] zijn ? :) (met underscore en enkele F)

Icons are overrated


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
KingOfDos: Het is $_SERVER["HTTP_REFERER"] (dus een extra underscore en een F minder)

En turntable_junkie: Als je niet weet hoe of waar je dit moet plaatsen, dan zou ik als ik jou was eerst gewoon normaal PHP leren, want je moet juist uit die referer een bepaald gedeelte rippen en dat moet je zelf maar lekker maken.. Dat gaan WIJ niet voor jou doen.

Dus veel plezier met het leren van PHP :)

Acties:
  • 0 Henk 'm!

  • HielkeJ
  • Registratie: Juli 2001
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<? 
Header("Content-type: image/gif" ); 
Header("Cache-Control: no-cache, must-revalidate" ); 
srand((double)microtime()*1000000); 
$nr=rand(1,68); 
$fn=fopen("$nr.gif","r" ); 
fpassthru($fn); 
?>

<?PHP
/***************************************************
Name of file containing the count total.
***************************************************/
$file = "views.txt";

$open = fopen($file, "r");
$size = filesize($file);
$count = fread($open, $size);
fclose($open);


/*************************************************** 
If cookie 'simplecount' is not set it will 
add 1 to the counter and set the cookie. 

If the cookie does exist, this section will 
be skipped. 
***************************************************/ 
{ 

$open = fopen($file, "w"); 
$count++; 
fwrite($open, $count); 
fclose($open); 

} 
?>

Leest wat makkelijker :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Uhm....WIJ? Sorry hoor, maar dit had je ook op een symphatiekere manier kunnen vertellen. Daar komt bij dat niemand met al die kennis is geboren. Ook jij hebt het moeten leren. En het lijkt mij onwaarschijnlijk dat je geen hulp hebt gehad van anderen. Dus het is wel zo netjes als je een ander dan ook even helpt. Als je dat niet wilt, dan hoeft dat niet, maar probeer dan iets minder arrogant over te komen. NOFI.

HielkeJ, met welke codes doe je dat?

[ Voor 5% gewijzigd door Verwijderd op 12-10-2003 19:52 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Met Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/view.gif kun je het zelf ook zien.

En sorry als 't zo bot over komt, maar 't is nou eenmaal wel zo. Ook ik ben hier gekomen met weinig tot geen kennis met PHP en heb zo ook mijn aantal slotjes ontvangen.

Maar ondertussen lukt het me redelijk, mede dankzij tutorials en http://www.php.net/manual etc :)

En "anderen helpen" doen we nou eenmaal niet door scripts voor anderen te maken, helaasch.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zie het. Die scripts hoeven niet geschreven te worden. Ik maak op dat $_SERVER['HTTP_REFERER'] een variabele is, en vroeg me af hoe ik die moest definieren. Ik ga even kijken op de site.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Al de specifieke dingen met betrekking tot Programming en Webscripting zijn trouwens ook in onze eigen faq te lezen (Het bovenste topic in deze lijst). Hierin is naast waar een topic ongeveer aan moet voldoen, ook te lezen hoe je php code mooi weergeeft ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

$_SERVER (alle verwanten, dus ook HTTP_REFERER) kent php vanzelf. Net als $_COOKIE, $_SESSION en $_FILES.

Ik ga nou heel slecht doen:
PHP:
1
2
3
4
5
if (eregi("http://gathering.tweakers.net",$_SERVER['HTTP_REFERER'])) {
  //via got
} else {
  //via een andere site
}


[edit]
Voor vars als $_SERVER verwijs ik je graag naar: http://www.php.net/manual....variables.predefined.php
Voor eregi functie: http://www.php.net/eregi
En natuurlijk: http://www.php.net
[/edit]
Osiris schreef op 12 oktober 2003 @ 19:48:
KingOfDos: Het is $_SERVER["HTTP_REFERER"] (dus een extra underscore en een F minder)
Stoned+GoT = foutje :+

[ Voor 24% gewijzigd door Verwijderd op 12-10-2003 20:25 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Btw, om dan toch nog nuttig te zijn: check de phpinfo() functie eens, daar staan veel variabelen die nuttig zijn :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt. Ik was even aan het MSN-en met iemand die de scripts voor mijn site verzorgt, en die verteld me dat ik strippers moet gaan schrijven. Anders zou er voor elk topic een nieuwe txt-file aangemaakt worden. Klopt dat?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<? 
Header("Content-type: image/gif" ); 
Header("Cache-Control: no-cache, must-revalidate" ); 
srand((double)microtime()*1000000); 
$nr=rand(1,68); 
$fn=fopen("$nr.gif","r" ); 
fpassthru($fn); 
?>

<?PHP
/***************************************************
    Name of file containing the count total.
***************************************************/
$file = "views.txt";

$open = fopen($file, "r");
$size = filesize($file);
$count = fread($open, $size);
fclose($open);


/*************************************************** 
If cookie 'simplecount' is not set it will 
add 1 to the counter and set the cookie. 

If the cookie does exist, this section will 
be skipped. 
***************************************************/ 
{ 

$open = fopen($file, "w"); 
$count++; 
fwrite($open, $count); 
fclose($open); 

if (eregi("http://gathering.tweakers.net",$_SERVER['HTTP_REFERER'])) { 
  //via got 
} else { 
  //via een andere site 
}

} 
?>


Dat heb ik er nu van gemaakt. Helaas, werkt niet :(

Ik hou het ff voor gezien, ga straks ff zoeken op de tutorials. Suggesties zijn welkom ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Logisch dat jouw script niets doet, je moet het nog wel in een db of text filetje opslaan hé :)

We gaan het script niet voor jouw voorkauwen.. sorry.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oh, ik dacht dat ie alle data meteen wegschreef naar de .txt.

Zal even uitleggen waarom ik hier zo op aandring: ik doe een opleiding informatica. Toen ik net aan het begin van het schooljaar stond was ik uitgegaan in een discotheek, waar ik buiten ruzie heb gekregen. Die gast zat aan mijn vriendin en toen ik tussen beide kwam, liep ik een messteek op. Daarom heb ik een paar weken in het ziekenhuis gelegen, en dus erg veel uitleg gemist. Als ik nu goede cijfers haal kan ik gewoon doorgaan met mijn school, wat me dus wel lukt met de rest van de vakken. Alleen voor de lessen scripting heb ik teveel gemist om zomaar even dit project te maken. Daarom zoek ik wat hulp op forums, en werd ik net geirriteerd om de reactie van Osiris. Mijn excuus, en alsnog bedankt voor alle hulp.

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Verwijderd schreef op 12 oktober 2003 @ 20:59:
[..]
Zal even uitleggen waarom [..]
Stap naar de leraren en leg jouw probleem uit, en ze zullen je gegarandeerd helpen om on niveau te komen. Of zoek iemand die je bijles kan geven zodat je weer bijkomt. Echter door gewoon het antwoord te krijgen van iemand leer je niets, hoogstens hoe je ergens de kantjes vanaf kan lopen, dat is ook al vaak genoeg voorgekomen hier in P&W, en daarom reageerd Osiris zo "geirriteerd", Hij zei het namelijk op zich nog netjes.

Juist door inzet kan je een school halen. Je leert er ook het meest van. Wij zijn hier op zich niet om exacte antwoorden te geven, wij zijn er in principe om iemand mensen te helpen hun eigen antwoorden te vinden, om ze te leren hoe ze hun eigen problemen kunnen oplossen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik snap je "probleem" verder wel en ben ook de kwaadste niet hoor..

Ik merk dat je best wel WIL leren, alleen nu ff niet ( :P )

Als ik 't goed begrijp wil je dus een soort Stats van je icon (welke site enzo).

Ik zie ook dat je met een Cookie werkt. Althans, dat commentaar (!!) staat er, maar de code mist?!? Na het commentaar over Cookies staat een {, waarvoor nog wat code moet... Die is er sowieso nog niet.. Ik betwijfel ook of het nuttig is om hier een Cookie te gebruiken.

Waar heb je je huidige script(s) vandaan als ik vragen mag? Die eerste om het icon door te paassen ken ik nog van GoT zelf toen Random Icons populair werden.

Het 2e scriptje is ook nog wel logisch, het totaal aantal views, niets mis mee geloof ik.

Maar dan. Je 3e stukkie.. Dat slaat nergens op en ik denk dat je dat eventjes volledig zult moeten herschrijven.

Sowieso is het niet logisch om met een Cookie te werken, zodat je icon maar 1x wordt geshowed. Immers, ik kom bijv op zowel GoT, als FoK, en dan wordt je icon maar 1x geregistreerd, terwijl ik wel op andere sites kwam, omdat ik die Cookie heb.. Lijkt me niet echt logisch dus. (Het Cookie-gedeelte mist sowieso :P )

Je zult in je 3e blokkie dus moeten checken van welke site het komt en daarna te handelen..

Heb je echter een bepaald aantal beperkte sites, of moet het dynamisch worden?

Je zou namelijk van de referer het domein kunnen plukken en aan de hand van dat domein een textfiletje aan kunnen maken met het aantal hits erin. Dat kan volledig dynamisch :)

Voor bovenstaande "oplossing" paar "tips": parse_url en file_exists. Bij beide de Functie-Help te krijgen via www.php.net/hier_de_functie :)
Pagina: 1