You are not logged in.

wcf.regNote.message

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

1

Wednesday, July 23rd 2003, 12:58am

Counter programmieren teil 5

so, bis zu teil 4 war alles ohne datenbankanbindung und auch recht einfach. um jedoch genauere daten und mehr möglichkeiten bei der auswertung zu bekommen binden wir nun eine datenbank mit ein. dazu sind grundlagen mit mysql erforderlich welche ich hier jetzt nicht mit einbringen möchte. hier in teil 5 möchte ich nun zuerst mal nur auf die möglichkeit eingehen die ip adresse zu speichern. cookies sind bei vielen usern nicht gern gesehen und bei einigen sogar im browser deaktiviert. das heißt die reload sperre über cookies funktioniert nicht immer. ein gutes stück sicherer ist da die begrenzung über die ip. klar, selbst die ist nich unbedingt sicher da einige nen proxy server oder nat server verwenden und auch die meisten provider dynamische ip's vergeben aber dennoch hat jeder user eine ip und somit is die chance der ausgrenzung höher als beim cookie. da wir die ip adresse in einer datenbank ablegen wollen können wir außer dem counter dann noch eine auswertung dazu erstellen wo z.b. gespeichert wird wie oft ein user schon da war oder um welche tageszeit die meisten user da sind. im grunde lassen sich alle daten speichern die es zu ermitteln gibt und daraus kann man beliebige kombinationen an auswertungen erstellen.

kommen wir nun zuerst mal zur datenbank ansich und welche felder wir brauchen. entweder man nutzt z.b. phpmyadmin oder aber schreibt sich ein kleines installations skript was die arbeit dann zukünftig übernimmt. da wir es ja richtig lernen wollen erstellen wir uns natürlich ein installer skript. hier erst mal das fertige skript. erklärung folgt wie immer danach.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$dbname="Datenbankname"/* Name der Datenbank */
$dbuser="DatenbankBenutzer"/* Username den man sich eingerichtet hat bzw. zugeteilt bekommen hat */
$dbpass="DatenbankPasswort"/* Das Passwort zum User */
$dbhost="DatenbankHost"/* Meistens "localhost" oder eben der den man zugeteilt bekommen hat bzw. den man eingerichtet hat */

/* Verbindung zur Datenbank herstellen */
mysql_connect($dbhost$dbuser$dbpass) or die("Verbindung zur Datenbank fehlgeschlagen. Bitte Daten überprüfen");

/* Datenbank auswählen und Zugriff ermöglichen */
mysql_select_db($dbname) or die("Datenbankname falsch oder Verbindung mit dem vorgegebenen Benutzer nicht möglich.");

/* Prüfen ob die Tabellen für den Counter schon vorhanden sind */
$sqlbefehl="select * from counter";
$result=mysql_query($sqlbefehl);
if($mysql_num_rows=0)
{
/* Die Tabelle wird zuerst gelöscht und dann neu angeledt. Gelöscht deswegen damit evtl. unnötig vorhandene Felder gleich mit weg sind. */
mysql_query(DROP TABLE counter);
mysql_query(CREATE TABLE counter (countip ind(11NOT NULLcounttext varchar(250NOT NULLTYPE=MyISAM);
}
?>

so, das obige Skript ist als reines Installationsskript nun schon fertig. Die Namen für Tabelle und Felder kann man natürlich frei wählen. Man sollte nur darauf achten das es keine Überschneidung mit anderen Tabellen gibt da nach dem "Drop Table" die Daten unwiederruflich gelöscht sind!

nun zum eigentlichen teil. nun möchten wir natürlich das die counterdaten bzw. userdaten auch in der neu angelegten tabelle gespeichert werden. hier also nun die beschreibung wie wir sieses erreichen. zuerst der quellcode und danach wie immer die erklärung.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$dbname="Datenbankname"/* Name der Datenbank */
$dbuser="DatenbankBenutzer"/* Username den man sich eingerichtet hat bzw. zugeteilt bekommen hat */
$dbpass="DatenbankPasswort"/* Das Passwort zum User */
$dbhost="DatenbankHost"/* Meistens "localhost" oder eben der den man zugeteilt bekommen hat bzw. den man eingerichtet hat */

/* Verbindung zur Datenbank herstellen */
mysql_connect($dbhost$dbuser$dbpass) or die("Verbindung zur Datenbank fehlgeschlagen. Bitte Daten überprüfen");

/* Datenbank auswählen und Zugriff ermöglichen */
mysql_select_db($dbname) or die("Datenbankname falsch oder Verbindung mit dem vorgegebenen Benutzer nicht möglich.");

$userip $REMOTE_ADDR // IP des Besuchers auslesen.

$sqlabfrage="UPDATE counter SET counttext = '$userip', counter = counter+1";
$result=mysql_query($sqlabfrage);
?>


im oberen skript ist der kopf um die sql datenbank zu kontakten gleich. hier wird lediglich der counterwert bei jedem aufruf um eins erhöht. das heißt aber auch das beim reload der counter nochmal um eins erhöht wird. im feld "counttext" wird die ip des letzten besuchers gespeichert. dies muß in dem beispiel nicht mal sein.

ich schließe den 5ten teil des tut's an der stelle mal ab und komme dann im nächsten teil dazu mehr daten zu speichern und auch eine ausgabe zu generieren. an der stelle macht das noch keinen sinn da so einen counter der sogar beim reload weiter zählt eh niemand einsetzen wird.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Olli

Beginner

Posts: 9

Location: Berlin

  • Send private message

2

Wednesday, October 22nd 2003, 9:39pm

RE: Counter programmieren teil 5

würde nun gerne die fortsetzung lesen, da ich nen PHP-Counter benötige der gleichzeitig ein Counterhost für mehrere User ist ;)

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

3

Wednesday, October 22nd 2003, 9:54pm

joa muß zugeben das ich das total verschwitzt hab ... hatte bisl viel stress die letzte zeit und außerdem noch nen umzug und all so sachen. ich schau mal das ich die tage wieder weiter machen kann.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

4

Friday, January 30th 2004, 1:40pm

so, teil 5 abgeschlossen. in teil 6 geht es dann weiter ;)
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

wcf.user.socialbookmarks.titel