# Meist angeklickte oder meist gelesene Seite



## son gohan (15. Dezember 2006)

Hallo Leute,

ich würde gerne eine Funktion einbauen in meine Seiten, mit der ich herausstellen kann welche Seiten am meisten angeklickt oder gelesen wurden.

Ich denke das müsste mit PHP möglich sein oder?

Kann mir jemand Ansätze nennen welche Funktionen ich brauche?


----------



## CIX88 (15. Dezember 2006)

> angeklickt oder gelesen
Das wirst du wohl mit PHP nicht filtern können 

> Ansätze nennen welche Funktionen ich brauche
Datenbank vielleicht ?

Vielleicht mit Session oder Cookie arbeiten, und dabei beachten, dass es auch Suchmaschinen gibt.


----------



## Gumbo (15. Dezember 2006)

PHP kann sich diese Informationen auch nicht aus „dem Ärmel schüttel“. Deshalb müssen die Informationen irgendwo herkommen. Der Webserver bietet diese Information beispielsweise in einer Zugriffs-Logdatei, die du mit PHP auswerten könntest. Oder du sammelst die Informationen selbst, in dem du jeden Zugriff (auf die einzelnen PHP-Skript) protokollierst.


----------



## son gohan (15. Dezember 2006)

Aha so ist das also doch nicht ganz so einfach, auf http://www.focus.de/intern/ranglisten/news-voting habe ich das ganze nämlich gesehen, dort stehen rechts zwei Kasten mit häufig angeklickt und häufig gelesen, dass wolt ich auch gerne machen.


----------



## Dr Dau (15. Dezember 2006)

Hallo!

Häufig gelesen --> Die Top 20 unserer Leser.
Häufig geklickt --> Die Top Bildergalerien.

Ich vermute mal dass im ersten Fall jeder Klick gezählt wird, der zu einem Text führt.
Und im zweiten Fall werden sicherlich die Klicks beim "blättern" der Bilder gezählt.
Es werden also verschiedene Links aufgerufen..... und an hand derer wird zwischen "gelesen" und "geklickt" unterschieden.

Ob die Texte nun wirklich gelesen wurden oder ob die Bilder tatsächlich betrachtet wurden, ist nicht feststellbar (ausser Du sitzt neben dem User  ).

Gruss Dr Dau


----------



## son gohan (15. Dezember 2006)

Ich denke mal man könnte das so machen das man jedem Link ein Parameter gibt der in eine Datenbank eingetragen wird und dann später einfach ausgerechnet wird wo am meisten drauf geklickt wurde, oder meint jemand das geht noch einfacher als mit Datenbank und Parametern?


----------



## Dr Dau (15. Dezember 2006)

Eine Datenbank währe sicherlich nicht verkehrt..... Du könntest zwar auch mit ASCII Dateien arbeiten, aber man muss sich das Leben ja nicht unnötig schwer machen. 

Wenn Du mit einzelnen Seiten arbeitest, dann brauchst Du in diesen ja nur zu prüfen ob ein Request stattgefunden hat.
Wenn Du mit einer Einzelnen Seite Arbeitest, dann übergibts Du ja sicherlich eh schon Variablen um den entsprechenden Content anzuzeigen.
Dann brauchst Du ja nur zu prüfen welcher Wert mit der Variable übergeben wurde und dem endsprechend reagieren.
Bedenke aber auch dass z.b. Suchmaschinen einen Request auslösen.


----------



## son gohan (15. Dezember 2006)

Mit Request kenne ich mich leider nicht aus, damit habe ich noch nie was gemacht. Und meine Homepage ist auch statisch aufgebaut und es werden keine Variablen normalerweise übergeben.

Und wenn ich erhlich bin gefällt mir meine Lösung auch nicht mehr so gut irgendwie, wenn ich jetzt an jeden Link ein Parameter dran hänge finde ich das die dann nicht mehr so gut aussehen, vielleicht auch für Suchmaschinen.

Ich denke eine Request Lösung alleine wäre vielleicht ganz gut, z.b. jedesmal wenn die Seite geladen wird soll etwas in die Datenbank geschrieben werden, z.B. einfach der Dateiname mit Hilfe von php_self, geht sowas allein nur mit Request?


----------



## Dr Dau (15. Dezember 2006)

Request ist nur ein Oberbegriff.
Unter diesen fallen unter anderem POST Anfragen (z.b. über ein Formular, wenn method="post" angegeben ist) oder auch GET Anfragen (z.b. durch anklicken eines Links, bzw. durch aufrufen der Seite über die Adresszeile vom Browser).

Statische Seiten sind natürlich höchst unflexibel.
Kommt mal eine neue Seite hinzu, musst Du in allen bereits bestehenden Seiten das Menü ändern..... bei z.b. 100 Seiten kann es schon eine Menge Arbeit bedeuten. 


			
				son gohan hat gesagt.:
			
		

> wenn ich jetzt an jeden Link ein Parameter dran hänge finde ich das die dann nicht mehr so gut aussehen, vielleicht auch für Suchmaschinen.


Da würde ich mich mal im Hosting&Webserver Forum nach mod_rewrite umsehen.
Ich meine Gumbo hätte da schon einige Lösungen gepostet.


----------



## son gohan (15. Dezember 2006)

Also werde ich wohl doch nicht drum rum kommen Parameter an alle Links zu packen wenn ich sowas haben will?


----------



## Gumbo (15. Dezember 2006)

Hast du das Apache-Modul „mod_rewrite“ zur Verfügung und keine Scheu ein kleines PHP-Skriptchen einzusetzen? Dann bräuchtest du nämlich nicht viel an deiner bisherigen Datenstruktur zu machen.


----------



## son gohan (15. Dezember 2006)

Gumbo hat gesagt.:


> Hast du das Apache-Modul „mod_rewrite“ zur Verfügung und keine Scheu ein kleines PHP-Skriptchen einzusetzen? Dann bräuchtest du nämlich nicht viel an deiner bisherigen Datenstruktur zu machen.



Ich weis nicht genau ob ich "mode_rewrite" zur Verfügung habe wo kann ich das den nachsehen? Vor einem kleinem Script habe ich eigentlich keine Scheu  .


----------



## Gumbo (15. Dezember 2006)

Die apache_get_modules()-Funktion liefert die geladenen Apache-Module zurück.


----------



## son gohan (15. Dezember 2006)

hm, die Funktion 

```
<?php
print_r(apache_get_modules());
?>
```
gibt mir die Fehlermeldung:


> Fatal error: Call to undefined function: apache_get_modules() in


zurück, sieht nicht gut aus.


----------



## Gumbo (15. Dezember 2006)

Hast du überhaupt einen Apache-Webserver? Eine andere Möglichkeit wäre auch die php_info()-Funktion, steht die apache_get_modules()-Funktion nicht zur Verfügung.


----------



## son gohan (15. Dezember 2006)

Mit phpinfo() habe ich jetzt etwas gefunden:


> apache
> APACHE_INCLUDE 	no value
> APACHE_TARGET 	no value
> Apache Version 	Apache/1.3.19
> ...



Also es steht da Loaded Modules und mod_rewrite, ich denke das bedeutet das ich es zur Verfügung habe.


----------



## Gumbo (15. Dezember 2006)

Gut, dann schau mal nach, ob es im Hauptverzeichnis eine Datei namens „.htaccess“ gibt (könnte versteckt sein). In diese trägst du dann Folgendes ein (existiert sie noch nicht, musst du eine anlegen):
	
	
	



```
RewriteCond   %{REQUEST_FILENAME}   !-d
RewriteCond   %{REQUEST_FILENAME}   !-f
RewriteRule   (.*)                  /foobar.php   [L]
```
In die „foobar.php“-Skriptdatei, die auch im Hauptverzeichnis liegen muss, trägst du dann das Skript zum Loggen der Anfragen ein, beispielsweis:
	
	
	



```
<?php

	$query = '
		INSERT INTO
		        `access`
		  SET
		        `remote_addr` = "'.$_SERVER['REMOTE_ADDR'].'",   -- IP-Adresse des Client
		        `host`        = "'.$_SERVER['HTTP_HOST'].'",     -- angeforderter Host-Name
		        `request_uri` = "'.$_SERVER['REQUEST_URI']."',   -- angeforderter URI-Pfad und Query String
		        `timestamp`   = NOW()
		';
	…

?>
```
Den Rest musst du dir selbst aus den Fingern saugen.


----------



## son gohan (15. Dezember 2006)

Ok, doch noch etwas zu hoch für mich, aber wie müssen den die einzelnen Links in meinen Seiten dann aussehen mit Parameter foobar.php oder wie?

Welchen Vorteil im Bezug auf die Suchmaschinen bringt mir diese Technik noch gleich, irgendwas habe ich leider nicht ganz verstanden, ich wollt ja irgendwie vermeiden so viele Parameter in meinen Links zu haben.


----------



## Gumbo (15. Dezember 2006)

Das Wichtigste hätte beinahe vergessen: Am Ende des Skriptes muss die angeforderte Datei natürlich noch ausgeliefert werden:
	
	
	



```
readfile($_SERVER['REQUEST_URI']);
```


----------

