Teil von  SELFPHP   Teil von  Praxisbuch
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  

 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 79.000 Beiträgen finden Sie sicher die passende Antwort!  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 



 

Useronline via MySQL




Wir hatten Ihnen bereits in Kapitel 5 einen Useronline-Counter vorgestellt. Ein ähnliches Prinzip lässt sich für die Datenbank gestützte Lösung verwenden. Auch in diesem Fall müssen wir eine IP-Zeitsperre nutzen, um zu ermitteln, wie viele Besucher sich tatsächlich auf der jeweiligen Seite befinden.

Die folgende Umsetzung basiert auf zwei wesentliche Skripte:
. config.inc.php - in diesem Skript befinden sich die wesentlichen Zugriffsdaten und der Verbindungsaufbau zur MySQL Datenbank. Sie werden diese Datei in sämtlichen PHP & MySQL Anwendungen aus dem Buch vorfinden.
. useron.php - in diesem Skript befinden sich die benötigten MySQL-Zugriffe, diese werden mit Hilfe von SQL-Befehlen realisiert, so dass die Besucher der Seite erfasst werden können. Die Verbindung zur MySQL-Datenbank wird durch die config.inc.php sichergestellt.

Zusätzlich wurde folgender Ordner angelegt:
. css - dieser enthält die CSS-Datei (main.css), welche für die Layout-Formatierung des Useronline-Counter zuständig ist.

Sie benötigen zum Betreiben des Useronline-Counter folgende MySQL-Datenbanktabelle:


CREATE TABLE usertab (
  kid int(11) NOT NULL auto_increment,
  id char(255) default NULL,
  ip char(255) default NULL,
  name char(255) default NULL,
  zeitid char(255) default NULL,
  PRIMARY KEY  (kid)
)




1. config.inc.php



<?php

//Zugangsdaten
//Name (IP-Adr.) des Rechners mit MySQL
$dbserver "localhost";
//Benutzername für den MySQL-Zugang
$nutzer "";
//Passwort
$passwort "";
//Name der Datenbank
$dbname "praxisbuch";

$db_fehler1 "
<html>
<head>
<title>Online-User</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER - <br>
      <p>Die Datenbank sind z.Z. nicht abrufbar.</p>
      Versuchen Sie es bitte später nochmal!<br>
      </td>
  </tr>
</table>
</body>
</html>
"
;

$db_fehler2 "
<html>
<head>
<title>Online-User</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER - <br>
      <p>Die Daten sind z.Z. nicht abrufbar.</p>
      Versuchen Sie es bitte später nochmal!<br>
      </td>
  </tr>
</table>
</body>
</html>
"
;

//Verbindung aufbauen
@$db mysql_connect($dbserver,$nutzer,$passwort) OR die($db_fehler1);

//Datenbank als Standard definieren
@mysql_select_db($dbname,$db) OR die($db_fehler2);

?>



Wie Sie sehen wurden im Skript auch Ausnahmefälle berücksichtigt, schliesslich sollte unsere Anwendung auch in der Lage sein entsprechend zu reagieren, wenn der Datenbankserver oder die Datenbank selbst nicht erreichbar sind. Die HTML-Formatierung für die jeweiligen Fehlermeldungen können Sie natürlich an Ihre eigenen Bedürfnisse anpassen.


2. useron.php



<html>
<head>
<title>Online-User</title>
<link rel='stylesheet' type='text/css' href='css/main.css'>
</head>
<body>
<?

require("config.inc.php");

// Onlineuser Tabelle
$logtab "usertab";
// Zeitlimit in Sekunden
$zeitlimit "600";
// Zeit und Datum
$aktzeit=date("d-m-Y H:i");

$zeit explode" "microtime());
$userusek = (double)$zeit[0];
$usersek = (double)$zeit[1];
$User_Id $usersek $userusek;
$IP getenv(REMOTE_ADDR);

// Onlineuser entfernen, sobald das Zeitlimit
// überschritten wurde
mysql_query("delete from $logtab where zeitid < $usersek -$zeitlimit");

// IP-Adresse prüfen
$satz mysql_query("SELECT * FROM $logtab where ip like '$IP'");
@
$userlog mysql_fetch_row($satz);

// Neuen Onlineuser hinzufügen fals IP-Adresse
// noch nicht in der logtab vorhanden
if ($userlog == false) {
 
mysql_query("insert INTO $logtab (id,ip,name,zeitid)
 VALUES('$User_Id','$IP','$_SERVER[HTTP_HOST]','$usersek')"
) or die($db_fehler2);
}

// Anzahl der Onlineuser ermitteln
$res_logtab mysql_query("SELECT Count(*) as gesamt FROM $logtab");
$numberlogtab mysql_fetch_array($res_logtab);

// Anzahl der Online-User ausgeben
if (!empty($numberlogtab[gesamt])){
 echo 
"<font face='Verdana, Arial' size='-2'>
 [ $numberlogtab[gesamt] User online ]<br>[ $aktzeit ]</font>"
;
}

?>
</body>
</html>



Wie sie sehen, die Funktion require() sorgt für die Verknüpfung zu den benötigten Zugriffsdaten, diese Art der Verbindung sollten Sie vorzugsweise nutzen. Die Angabe von Datum und Uhrzeit ist eher optional.


 



 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de