Hallo,
gibt es irgendeine möglichkeit zu erfassen wie oft ein Link angeklickt wird ohne daß man was auf der Zielseite verarbeiten muss?
Dachte ich schick mit dem Link eine Variable mit, aber die Zielseite hat kein php......
Jemand eine Idee
Hallo,
gibt es irgendeine möglichkeit zu erfassen wie oft ein Link angeklickt wird ohne daß man was auf der Zielseite verarbeiten muss?
Dachte ich schick mit dem Link eine Variable mit, aber die Zielseite hat kein php......
Jemand eine Idee
Ich hab es so gelöst, ich lade eine zwischenseite in der ich den Klick in eine Datenbank eintrage und dann lade ich die seite mit http-equiv="refresh" neu und gehe auf den link!
@Kellner
Klasse Idee
aber gibt es nicht irgendeine direkte Möglichkeit?
Bins gleich nochmal
Ich sehe des öfteren, daß Links nicht direkt auf die Seite verweisen sondern eine ID übergeben, vielleicht an eine andere Seite auf der der ID ein Link zugeordnet ist und gleich noch die Zugriffe zählt? Vielleicht aber so, daß keine neue Seite geöffnet werden muss.........
Oder liege ich ganz falsch?!
Das wird dan meistens mit eine datenbank gesteuert sprich
linkid=1234
ist in der DB seite sowieso.html und wenn der link geklickt wird,
wird gleichzeitg der Hit erhöht und der User bekommt es nicht mit
weil ja gleich die seite angezeigt wird
Hi Schrottschuss,
ich kann Dir glaube ich nicht ganz folgen. Ich probiers aber mal:
Der Link spricht eine DB an und liest dort die URI aus. Bei jedem Zugriff erhöhe ich dann bei der gleichen Zeile eine andere Variable, die mir dann anzeigt wie oft der Link geklickt wurde?
Richtig?
Genau so ist es
CREATE TABLE `LINKS` (
`LINKID` int(11) NOT NULL default '0',
`url` varchar(255) NOT NULL default '',
`hits` int(100) NOT NULL default '0',
KEY `LINKID` (`LINKID`)
) TYPE=MyISAM COMMENT='Linktabelle';
#
# Daten für Tabelle `LINKS`
#
INSERT INTO `LINKS` VALUES (1, 'seite_sowieso.html', 0);
Alles anzeigen
so sollte ungefähr so eine Tabelle aussehen
man braucht aber nicht zwingend eine datenbank dafür.
eine switch-case-schleife in einer php-datei, auf die alles gelinkt wird, und die mitzählt und weiterverbindet wär simpler....
Das ist wohl war das wäre simpler,nur verbraucht mehr speicherplatz.
Du müsstest das in einer datei speichern und ein programm schreiben was alles ausliest das wird aber umständlich!
Da ist doch einr DB einfacher an wenn man eine hat...
...ja, wenn man eine hat...
und speicherplatz!? ich glaub 1KB für eine .php datei und weitere 500 bytes für die textdatei kann sich jeder leisten
egal..... die lösung ist somit geschrieben. keine weiteren fragen. passt!
So, hab das ganze wie folgt gelöst:
Habe Datenbanktabelle erstellt mit drei Spalten: linkid,uri,hit
Dann verweisen die links auf der Seite alle auf die link.php und übergeben eine linkid
Auf der link.php wird dann der ganze rest gemacht und mit "http-equiv refresh" weitergeleitet.
<?php
@include ("conf.inc.link.php"); //einbinden der conf.inc-Datei
$connection=mysql_connect("$host","$uid","$pwd"); //Datenbankverbing herstellen
$res = mysql_db_query(test,"select * from links"); //Datenbank abfragen
$hit = mysql_result($res, $linkid-1, "hit"); //Hits aus Ressource auslesen
$hit=$hit+1; //Hit dazuzählen
$eintrag = "UPDATE links SET hit='$hit' WHERE linkid='$linkid'"; //Datenbank updaten
$update=mysql_query($eintrag); //Datenbank updaten
$uri = mysql_result($res, $linkid-1, "uri"); //Uri zum weiterleiten aus Ressource auslesen
?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title><?php echo "$uri"; ?></title>
<meta http-equiv="refresh" content="1; URL='<?php echo "$uri";?>'">
<base target="self">
</head>
<body>
<?php
echo "
Falls Sie nicht automatisch verbunden werden sollten, dann klicken sie bitte [url='$uri']hier[/url]</p>";
?>
</body>
</html>
Alles anzeigen
Falls jemand noch Anregungen hat wäre ich dankbar.
Frage funktioniert das auch?
<?php
include ("conf.inc.link.php"); //einbinden der conf.inc-Datei
mysql_connect("$host","$uid","$pwd"); //Datenbankverbing herstellen
$res = mysql_query("select * from links where linkid ='$linkid'"); //Datenbank abfragen
$row= mysql_fetch_array($res); // daten in eimem array speichern
// HIT ERHÖHEN
$hit = $row[hit];
$hit++;
// HIT SPEICHERN
$eintrag = "UPDATE links SET hit='$hit' WHERE 1 AND `linkid` ='$linkid' ";
mysql_query($eintrag)or mysql_error();
?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title><?=$row[uri]; ?></title>
<meta http-equiv="refresh" content="1; URL='<?=$row[uri];?>'">
<base target="self">
</head>
<body>
Falls Sie nicht automatisch verbunden werden sollten, dann klicken sie bitte [url='<?=$row[uri];?>']hier[/url]</p>";
</body>
</html>
Alles anzeigen
Nein, geht nicht
folgende Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programme\Apache Group\Apache2\htdocs\Link aus DB\link.php on line 7
Falls Sie nicht automatisch verbunden werden sollten, dann klicken sie bitte hier
";
Außerdem hängt das Fenster in einer Schleife unf lädt sich ständig neu.
Ich habe auch grade keine Ahnung woher das "; am Ende kommt.
Ich versuch mich nochmal daran, vielleicht finde ich ja doch noch was
jepp deine version kann auch nicht gehen etwas sehr viel falsch versuch mal meine variante
Langsam, da gibt es ein Missverständnis. DEINE Version tut nicht, meine läuft bereits online. Die Fehlermeldung kam als ich Deine Version ausprobiert habe.....
Wenn Sie bei Dir läuft, liegt es vielleicht an einer verschiedenen PHP Version?
Ich hab das bei mir mit einem kostenlosen PHP-Script von dieser Site gelöst: http://www.proxy2.de unter "Free Scrips" gibts "Top Downloads".
Kannst du zum zählen von Links oder Downloads verwenden. Ist schnell eingebunden und konfiguriert, und erstellt dir noch übersichtliche Statistiken.
Also bei mir funktioniert es hier mal die sql
#
# Tabellenstruktur für Tabelle `links`
#
CREATE TABLE `links` (
`linkid` int(20) NOT NULL default '0',
`uri` varchar(255) NOT NULL default '',
`hit` int(11) NOT NULL default '0'
) TYPE=MyISAM;
#
# Daten für Tabelle `links`
#
INSERT INTO `links` VALUES (1, 'test.html', 0);
INSERT INTO `links` VALUES (2, 'test2.html', 0);
Alles anzeigen
dann die link.php
<?php
# daten für mysql
$db_host = "localhost";
$db_name = "test";
$db_user = "schrottschuss";
$db_password = "";
function opendb() {
global $db_host;
global $db_user;
global $db_password;
global $db_name;
// Verbindung öffnen
@$handle = mysql_connect ($db_host, $db_user, $db_password);
if ($handle) {
if (!(mysql_select_db ($db_name, $handle))) {
$handle = FALSE;
}
}
// Das Handle wird zurückgegeben
return $handle;
}
$db_handle = opendb();
if (!$db_handle){
echo "Beim Verbinden zur Datenbank trat ein Fehler auf!
\n";
echo mysql_error();
}
$res = mysql_query("select * from links where 1 and linkid ='$linkid'"); //Datenbank abfragen
$row= mysql_fetch_array($res); // daten in eimem array speichern
// HIT ERHÖHEN
$hit = $row[hit];
$hit++;
// HIT SPEICHERN
$eintrag = "UPDATE links SET hit='$hit' WHERE 1 AND `linkid` ='$linkid' ";
mysql_query($eintrag)or mysql_error();
if($linkid == ""){
echo "[url='?linkid=1>Link1</a>
<a']Link2[/url]";
}else{
?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title><?=$row[uri]; ?></title>
<meta http-equiv="refresh" content="1; URL='<?=$row[uri];?>'">
<base target="self">
</head>
<body>
Falls Sie nicht automatisch verbunden werden sollten, dann klicken sie bitte [url='<?=$row[uri];?>']hier[/url]</p>
</body>
</html>
<?php
}
?>
Alles anzeigen
so und nun leg noch eine test.html und eine test2.html an
es kann sein das es bei dir nicht func da du es offline testest mit apache2 und vielleicht noch php5 und eine andere mysqldb versuch mal dein script bei deinem provider(hoster) zu testen gehts da auch?
Hi Schrotti,
dein Script tut tadellos. Sowohl on- als auch offline..
HAst Du aber vielleicht noch ein paar erklärende Worte für mich was das anbelangt:
<?php
# daten für mysql
$db_host = "localhost";
$db_name = "test";
$db_user = "schrottschuss";
$db_password = "";
function opendb() {
global $db_host;
global $db_user;
global $db_password;
global $db_name;
// Verbindung öffnen
@$handle = mysql_connect ($db_host, $db_user, $db_password);
if ($handle) {
if (!(mysql_select_db ($db_name, $handle))) {
$handle = FALSE;
}
}
// Das Handle wird zurückgegeben
return $handle;
}
$db_handle = opendb();
if (!$db_handle){
echo "Beim Verbinden zur Datenbank trat ein Fehler auf!
\n";
echo mysql_error();
}
Alles anzeigen
Hab zwar ne leichte Ahnung wie das tut, aber eben nur ne leichte.
Kannst Du da etwas mehr Licht ins Dunkel bringen?
das ist alles nur um eine DB anzuwählen und sie zu öffnen hab das mal geschreiben eigentlich habe ich dafür eine externe datei und binde sie mit include ein...
das solltest du in deiner conf.inc.link.php stehen haben zumindestens so ähnlich