if-anweisung und dann erst db-eintrag

Ich glaube am ehesten lässt sich das lösen, wenn du das insgesamt mittels Funktionen/Klasse machst...
Sodass auf der Site, wo der Counter verwendet werden soll entsprechende Infos an die Funktion gereicht werden...
Und diese Funktion gibt dann die Infos entsprechend wieder zurück...

So muss der User letztlich nur ein/zwei Zeilen Code in seiner Seite einfügen...

Ich lass mir mal nen bissl passenden Code einfallen und poste hier dann was ;)
 
Hi,

also Domainnamen ermittele ich wohl mit

Code:
$_SERVER["SERVER_NAME"];

Aber wie schaue ich nach ob eine Tabelle vorhanden ist und WENN NICHT
dann soll er eine erstellen. Erstellen ist kein Problem.

Aber das vorhandensein einer Tabelle zu ermitteln, wüsste ich nicht
wie das geht.

Kann mir da jemand weiterhelfen?

LG
 
PHP:
$_SERVER['HTTP_REFERER'];
Dann fragst du ab ob es eine entsprechende Tabelle gibt. Zum Beispiel so (ungetestet):
PHP:
        $SQL = 'CREATE TABLE IF NOT EXISTS `' .$_SERVER['HTTP_REFERER']. '` (
            `spalte` varchar(10) NOT NULL
            ) ENGINE=MyISAM DEFAULT CHARSET=latin1';
 
PHP:
$_SERVER['HTTP_REFERER'];
Dann fragst du ab ob es eine entsprechende Tabelle gibt. Zum Beispiel so (ungetestet):
PHP:
        $SQL = 'CREATE TABLE IF NOT EXISTS `' .$_SERVER['HTTP_REFERER']. '` (
            `spalte` varchar(10) NOT NULL
            ) ENGINE=MyISAM DEFAULT CHARSET=latin1';

Hi,

ich hab es folgendermaßen provisorisch mal ausprobiert aber es scheint irgendwie nicht zu funktioniert :

Code:
$userip = $_SERVER['REMOTE_ADDR'];

$sql = "CREATE TABLE IF NOT EXISTS '" .$userip. "' (
	   userid INT(11) NOT NULL,
	   sessions INT(25) NOT NULL,
	   ips INT(11) NOT NULL,   	   
	   datum INT(11) NOT NULL,
	   zeitstempel INT(11) NOT NULL,	   
       ) ENGINE=MyISAM DEFAULT CHARSET=latin1";   
 mysql_query($sql);

Er spuckt komischerweise auch keine Fehlermeldung oder sonstiges aus :/ Wo liegt denn dann der Fehler?
 
Ach ja =)

nun erscheint

Code:
Incorrect table name '89.12.53.xxx'

Kann ich IP Adressen oder URL's nicht als Tabellennamen nehmen? Das würd mich komplett aus dem Konzept schmeissen :/

Ok ich hab das Problem offensichtlich gelöst indem ich die Pünktchen rausgefilert habe

Code:
if (isset($_SERVER['HTTP_REFERER']))
	{
	$link = $_SERVER['HTTP_REFERER'];
	$linkinfo = parse_url ($link);
	$string = $linkinfo["host"];
	$domain = ereg_replace("[.]", "", $string);	
	}

Jetzt hab ich nur noch eine Verständnisfrage :

HTTP_REFERER soll mir ja ausgeben wo mein Script sozusagen benutzt wird und je nach Domain wird dann eine Datenbanktabelle angelegt a la wwwgooglede zum Beispiel.

Also nochmal zur Zusammenfassung. Ich möchte einen Counter-Service programmieren. Das ganze Script läuft auf meinen Server, jedoch binden sich die Websitebetreiber 1-2 Zeilen Code ein. Es werden dann die Besucher etc. gezählt und in meine Datenbank
eingetragen.

Gut. Wie finde ich heraus, woher die Besucher kommen? Auf welche Links von welcher Website sie geklickt haben,oder welche Google Keywords sie benutzt haben?

Das funktioniert doch normalerweise auch mit HTTP_REFERER? Und genau da komm ich jetzt nicht mit klar. Mir gibt HTTP_REFERER doch nur an auf welcher Domain mein Script gestartet wird :confused:
 
Eine Lösung wäre noch, dass sich die Benutzer registrieren müssen. Dann kannst du Tabellen anlegen, die den Namen/ID des Benutzers haben.
 
Eine Lösung wäre noch, dass sich die Benutzer registrieren müssen. Dann kannst du Tabellen anlegen, die den Namen/ID des Benutzers haben.

Nein, ich möchte alles ohne Registrierung machen. Deshalb habe ich auf der Startseite eine ID die immer eins hochzählt...aber by the way

Meine Zähler.PHP sieht nun folgendermaßen aus.
Es funktioniert bisher, dass wenn ich von einer fremden Website aus die Datei starte, dass er dann eine Tabelle anlegt mit Domainnamen und UserId also z.B. (wwwtutorialsde123)

Jedoch trägt er keine IP's in die Tabelle ein, obwohl es lokal auf meinem rechner noch funktioniert hatte, bevor ich den tabellennamen noch erweitert habe um die userid...wo liegt denn diesmal der fehler :-/

Code:
<?
/* User-ID ermitteln */
$userid = $_GET["u"];
/* User-IP ermitteln */
$userip = $_SERVER['REMOTE_ADDR'];
/* Heutiges Datum ermitteln*/
$datum = date("d.m.Y");


include("config.php");

if (isset($_SERVER['HTTP_REFERER']))
	{
	$link = $_SERVER['HTTP_REFERER'];
	$linkinfo = parse_url ($link);
	$string = $linkinfo["host"];
	$domain = ereg_replace("[.]", "", $string);	
	}
	
/* Neue Tabelle erstellen falls neuer User vorhanden */
$sql="CREATE TABLE IF NOT EXISTS `$domain$userid` (
	   `userid` INT(11) NOT NULL,
	   `ips` INT(11) NOT NULL,   	   
	   `datum` INT(11) NOT NULL,
	   `zeitstempel` TIMESTAMP NOT NULL	   
       ) ENGINE=MyISAM DEFAULT CHARSET=latin1";
mysql_query($sql) or die(mysql_error());


/* In Tabelle ip_gesamt UserID der Domain zuordnen */
$sql3="UPDATE ip_gesamt SET domainname = '$domain$userid' WHERE id = '$userid'";
mysql_query($sql3) or die(mysql_error());


/* Überprüfen ob IP schon in der Domaintabelle, wenn ja dann nur Zeitstempel aktualisieren, wenn nein dann neuer Eintrag*/

$sql2="SELECT COUNT(*) as Anzahl FROM `$domain$userid` WHERE ips = '$userip'";
    $result = mysql_query($sql2) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
    if($row['Anzahl']) {
        // Nur Session Updaten
        $sql2 = "UPDATE `$domain$userid` SET zeitstempel = NOW() WHERE ips = '$userip'";
        mysql_query($sql2) OR die(mysql_error());
    } else {
        // Neuer Eintrag IP/SESSION/DATUM/ZEITSTEMPEL
        $sql2 = "INSERT INTO `$domain$userid` VALUES('$userid','$userip','$datum',now()'";
        mysql_query($sql2) OR die(mysql_error());
    }

?>

LG
 
Zurück