phpbar.de logo

Mailinglisten-Archive

Re: [php] HTML-Dateien als application/x-httpd-php3?
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] HTML-Dateien als application/x-httpd-php3?



Hi Amalesh!

amalesh kempf wrote:
> Einen counter hatte ich mir vorgenommen und es funktioniert auch alles
> prdchtig, bis auf eine kleinigkeit (wie so hdufig ;)). Der counter funzt
> so, da_ er $REDIRECT_URL ausliest und dann in einer mysql-tabelle die hits
> schreibt. Dazu kann folgendes in einer php-datei eingegeben werden:

Warum $REDIRECT_URL? Das zeigt doch nur eine Umleitung nach einem 3xx
Response des Servers an, AFAIK.
Was Du brauchst, ist doch eher $HTTP_REFERER.

> <?php
>         include("gpac.php3");
>         echo "$strHits hits since $strSince <br>";
>         echo "Last Update: $strLastMod<br>";
> ?>
> 
> $strHits ist |brigens ein <img>

Wie ist das gemeint? gpac.php3 generiert (nebenbei) eine GIF-Datei, die
dann mit einem <img> tag eingebunden wird? 

[...]
> Nun meine fragen:
> Kann man den namen der (aufrufenden) HTML-datei auslesen, wenn nur <img
> src="gpac.php3"> eingebunden wird?

Verstehe ich nicht. Entweder gpac.php3 erzeugt nur HTML-Code (wie im
obigen Beispiel), dann kann es nicht mit <img src=...> funktionieren,
oder es erzeugt eine Image-Datei (und teilt explizit den Content-Type
mit), dann kann es nicht mit Text gemischt werden, wie oben gemacht.

Anyway, ein Script, dass ueber <img src="counter.php3"> aufgerufen wird,
bekommt die aufrufende Seite ueber $HTTP_REFERER mitgeteilt. Somit kann
man damit auch eine Datenbankabfrage basteln (vielleicht mit parse_url
den "path" Teil extrahieren, um unabhaengig vom Servernamen zu sein).
Weil's soviel Spass macht, hier ein Bleispiel mit GD-lib :-))) :

-------------------- schnipp --------------------
<?php
    /** counter.php3
     ** Generate a GIF image with a counter on it
     */
    Header("Content-type: image/gif");
    $im = ImageCreate (200,20);

    // Colors and fonts
    $bg = ImageColorAllocate ($im, 255, 255, 255);
    $fontcol = ImageColorAllocate($im, 100,120,180);
    $size=14;
    $font="fonts/arialbd.ttf";		// insert your favourite font here

    // Parse the URL and extract only the "path" part
    // as a key to the database
    $urlparts = parse_url ($HTTP_REFERER);
    $path = $urlparts['path'];
    $text = "oups!";			// default
    if ($path != "") {
        if (mysql_connect ("localhost", "wwwsql")) {
            $result = mysql_db_query ("wwwtest", "select hits from
counter where path='".$path."'");
            if ($result > 0 && $hithash = mysql_fetch_array ($result)) {
                $text = $hithash['hits'];
                $text++;
                mysql_query ("update counter set hits='".$text."' where
path='".$path."'");
            } else {    // we presume an unknown path, so it will
automagically be added
                mysql_query ("insert into counter (path, hits) values
('".$path."','1')");
                $text = 1;
            }
        }
    }

    // Create the text and calculate position
    $txtbox = ImageTTFBBox ($size,0,$font,$text);

    /* Well, you could also make the image size depend
     * on the text size by creating it after the
     * ImageTTFBBox call...
     */
     $px = (ImageSX($im)-$txtbox[2]+$txtbox[0])/2;
    /* This calculation is not exact, because the string
     * is drawn relative to the base line, but the BBox
     * includes the string depth:
     */
    $py = (ImageSY($im)+$txtbox[1]-$txtbox[7])/2;
    ImageTTFText($im,$size,0,$px,$py,$fontcol,$font,$text);

    // Output the image
    ImageGif($im);
    ImageDestroy($im);
?>
-------------------- schnapp --------------------
Einen passenden Font sollte man natuerlich zur Hand haben, die mySQL
Datenbank und Tabelle sollten angelegt sein.

> Gibt es sp|rbare performance-verluste, wenn PHP auch alle HTML-dateien
> parst, obwohl (bis auf wenige) kein <?php ... ?> enthalten ist?

Das ist zu erwarten.
Ausserdem halte ich diese Loesung fuer nicht sehr elegant.

> 
> tia!
> 
> amalesh

Ciao,
	Harald

-- 
* Harald H.-J. Bongartz                bongartz_(at)_physik.uni-bonn.de  *
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- *
* "The day Microsoft makes something that doesn't suck is probably  *
*  the day they start making vacuum cleaners."  --Ernst Jan Plugge  *



Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive