php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 14-08-2009, 20:33
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Referer-Script optimieren

Hallo

ich habe ein Refererscript am laufen und möchte dies etwas optimieren. Allerdings habe nicht all viel Ahnung von PHP.
Vielleicht könnt ihr mir ja weiterhelfen.
Das Script liest aus von wo Besucher auf die Seite kommen, gibt diese in eine Datenbank und zeigt diese in einer Liste auf der Seite.
Das Script wurde bereits etwas abgeändert, so dass man Seiten ausschliessen kann (google....).

Nun möchte ich folgende Optimierung:

Es sollen nur Seiten gezählt werden welche von einer Startseite kommen (index.htm index.html index.php index.asp default.htm)
Die Liste könnte man noch erweitern (welche Startseiten habt ihr?)

SQL
Code:
CREATE TABLE `referers` (
       `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
 
       `website` VARCHAR(255) NOT NULL,

       `hits` INT(11) UNSIGNED NOT NULL DEFAULT '0',

 
       PRIMARY KEY  (`id`)

     )
mysql_connect.php
PHP-Code:
<?php
DEFINE 
('DB_USER''xxx');
DEFINE ('DB_PASSWORD''xxx');
DEFINE ('DB_HOST''localhost');
DEFINE ('DB_NAME''xxx');

$dbc = @mysql_connect (DB_HOSTDB_USERDB_PASSWORD) OR die ('Could not connect to MySQL: ' mysql_error());

@
mysql_select_db (DB_NAME) OR die('Could not select the database: ' mysql_error() ); 
?>
referer.php
PHP-Code:
<?php
require('mysql_connect.php');

// Find out or base pure referer.
$ref $_SERVER['HTTP_REFERER'];

// Split our URL into bits.
$url explode("/",$ref);

// Take the 3rd part of the url (the main site)
$surl $url[2];

// Check to see if it contains the www. at the begining
$found ereg('\www.',$surl);

if (
$found) {

$url $surl;

} else {

$url 'www.'.$surl;

}

$query "SELECT website, hits FROM referers WHERE website = '$url'";
$result mysql_query($query);
$num mysql_num_rows($result);

if (
$num == 1) {
$site mysql_fetch_array($resultMYSQL_ASSOC);

if (
$site['website'] != 'www.') {

 if (
$site['website'] != 'www.lustverzeichnis.com/referer') {
 
 

  
$hits $site['hits'] + 1;
  
$website $site['website'];
  
  
$query "UPDATE referers SET hits = $hits WHERE website = '$website'";
  
$result mysql_query($query);
 
 }
}

} else {

$urls = array(

// Ausgeschlossenen Seiten
"www.google.com""google.com",
"www.yahoo.com""yahoo.com",

);

 if (!empty(
$surl) AND ($surl) != in_array($surl$urls)) {
  
$query "INSERT INTO referers (website, hits) VALUES ('$url', '1')";
  
$result mysql_query($query);
}

}


?>
Einbinden in Seite
Code:
<?php
require('referer/referer.php');



$query = "SELECT * FROM referers ORDER BY hits DESC LIMIT 20"; // Change the limit to the top XX that you want to show.
$result = mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo '
<table width="300" border="0" bordercolor="#000000" cellpadding="0" cellspacing="0">

<tr>
 <td width="250"><span class="Stil3"><a target="_blank" href="http://'.$row['website'].'">'.$row['website'].'</a></td>  </tr></table>';
 
 
} 
?>

Geht nicht, gibts nicht...
Mit Zitat antworten
  #2 (permalink)  
Alt 14-08-2009, 20:44
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo dee,

nur mal so als Denkanstoß: eine Startseite kann auch so aussehen, wenn du Pech hast:

http://www.example.com/noflash/de-de/

Gruß,

Anja
Mit Zitat antworten
  #3 (permalink)  
Alt 14-08-2009, 21:17
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Hallo dee,

nur mal so als Denkanstoß: eine Startseite kann auch so aussehen, wenn du Pech hast:

http://www.example.com/noflash/de-de/

Gruß,

Anja

Hmmm aber dann braucht es doch auch einen seitenname.endung?
Irgendwo in einer Datei müssen ja die Daten drin sein.
Mit Zitat antworten
  #4 (permalink)  
Alt 14-08-2009, 21:22
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dee73 Beitrag anzeigen
Hmmm aber dann braucht es doch auch einen seitenname.endung?
Irgendwo in einer Datei müssen ja die Daten drin sein.
Nicht wenn sie von einer Startseite kommen. Da steht im Referer dann nur www.example.com. Mehr nicht. Gilt auch für Subdomains und Unterverzeichnisse.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 14-08-2009, 21:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dee73 Beitrag anzeigen
Hmmm aber dann braucht es doch auch einen seitenname.endung?
Nein, braucht es nicht.
Zitat:
Irgendwo in einer Datei müssen ja die Daten drin sein.
URLs müssen keinerlei Bezug zum Dateisystem aufweisen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 14-08-2009, 22:25
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Nicht wenn sie von einer Startseite kommen. Da steht im Referer dann nur Example Web Page. Mehr nicht. Gilt auch für Subdomains und Unterverzeichnisse.
Das stimmt so nicht ganz. Im Refer(r)er steht immer die komplette URL, inkl. Schema, Host, (Port,) Pfad und Parameter.
Mit Zitat antworten
  #7 (permalink)  
Alt 15-08-2009, 06:07
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Irgendiwe versteh ich nun Bahnhof.

Die Leute wollen dass sie auf meiner Topliste erscheinen. Dann müssen sie doch einen Banner oder Textlink irgendwo einbauen - Eine Datei mit Endung.
Hmmmmmmmm da merk ich grad bei Joomla ist es auch nicht ganz so. Da hat es i Prinzip nur eine index.php...


Zudem kann ich die Regeln selber bestimmen und sagen: die Banner müsen auf einer index.htm,php,html,start.htm.... sein um gezählt zu werden.
Mit Zitat antworten
  #8 (permalink)  
Alt 15-08-2009, 12:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo dee,

in vielen Fällen ist es eine Datei, in die jemand den Bannerquellcode einfügt, also nehmen wir das einfach mal an. Ich baue jetzt also deinen Banner auf meiner Seite ein und packe ihn in die
/home/AmicaNoctis/htdocs/index.php
damit er auf
http://amica.example.com/index.php
erscheint.

Jetzt ruf ich den Henning an und sag ihm, er soll mal auf meine Seite gehen und kräftig Banner hämmern, damit ich Punkte krieg. Er schreibt in seine Adresszeile
amica.example.com
und drückt ENTER. Der Browser macht daraus dann noch
http://amica.example.com/
und lädt die Seite mit dem Banner, aber trotz Hennings vieler Klicks bekomme ich keinen einzigen Punkt.

Woran liegt es? Daran, dass kein Mensch weiß, ob deine Startseite nun eine index.html, eine index.htm, eine start.php oder sonstwas ist und es daher auch nicht eingibt. Die Verzeichnisschreibweise reicht völlig aus und der Server entscheidet dann auf Basis seiner Konfiguration, ob er eine index-Datei ausliefern kann und welche es sein soll.

Da dieser Dateiname aber nur intern wichtig ist, wird er auch nicht nachträglich in die Adresszeile geschrieben (im Gegensatz zu dem http://) und was nicht in der Adresszeile steht, taucht auch nicht im Referer-Header der nächsten Seite auf.

Dann bin ich also stinkig auf dich, weil ich keine Punkte bekommen hab und will dich deshalb mal so richtig ärgern. Dazu baue ich eine total blödsinnige und versteckte Unterseite
/home/AmicaNoctis/htdocs/3df347ea652bb934ce/index.php
mit deinem Banner und schicke den Link
http://amica.example.com/3df347ea652bb934ce/index.php
an alle Kontakte in meinem Adressbuch.

Wenn die den Link aufrufen, steht die index.php explizit in der Adresszeile, weil ich es ja so geschickt hab und damit auch im Referer-Header. Die Bedingungen sind erfüllt, du denkst, es ist ne Startseite und gibst mir schön die Punkte, obwohl außer den paar Kontakten niemand je was von der Seite mit deinem Banner erfahren wird.

Das war das einfachste Szenario!


Jetzt könnte noch mod_rewrite ins Spiel kommen. Das wird gerne benutzt, um "sprechende" URLs zu erzeugen oder zwischen einer alten und einer neuen Site-Struktur zu mappen. Auch dabei wirst du in den seltensten Fällen einen Dateinamen wie index.php sehen, sondern meist nur Verzeichnisse.

Dann gibt es noch CMSs, die auch nicht unbedingt solche URLs erzeugen müssen, wie du gerne hättest.


Kurz gesagt, du kannst anhand des Referer-Headers nicht ermitteln, ob das eine Startseite oder eine Unterseite war, aber das hab ich dir ja schon eher geschrieben.

Viel Spaß mit deinen Bannern und vielleicht hast du ja mal Zeit, dich mit der Funktionsweise des WWW und der Kommunikation zwischen Client und Server näher zu beschäftigen.

Gruß,

Anja
Mit Zitat antworten
  #9 (permalink)  
Alt 15-08-2009, 13:00
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:

Dann bin ich also stinkig auf dich, weil ich keine Punkte bekommen hab und will dich deshalb mal so richtig ärgern. Dazu baue ich eine total blödsinnige und versteckte Unterseite
/home/AmicaNoctis/htdocs/3df347ea652bb934ce/index.php
mit deinem Banner und schicke den Link
http://amica.example.com/3df347ea652bb934ce/index.php
an alle Kontakte in meinem Adressbuch.

Wenn die den Link aufrufen, steht die index.php explizit in der Adresszeile, weil ich es ja so geschickt hab und damit auch im Referer-Header. Die Bedingungen sind erfüllt, du denkst, es ist ne Startseite und gibst mir schön die Punkte, obwohl außer den paar Kontakten niemand je was von der Seite mit deinem Banner erfahren wird.
Hallo Anja. Dieses Szenario könnte er ja auch so machen ohne das ich das Script nun abändere. Ich glaube halt noch an die "Guten Menschen" die für Erfolg nicht zu bescheissen brauchen.
Die Einträge in den Top20 die ich habe werden natürlich ab und zu kontrolliert und wenn mir was auffällt werden die Domains einfach gesperrt.
Das das System nicht 100% zuverlässig ist und auch nie werden wird ist mir schon klar, da man sich ja auch nicht anmelden muss.
Das Script hat zudem einen kleinen Fehler drin: Klickt man auf seiner Seite einen Banner auf meine Seite und aktualisiert den Browser ein paar mal dann steigt auch die Ranghöhe.

Also fakt ist dass das System nicht ideal ist und logischerweise manipulierbar.
Kontrollieren muss ich es jetzt schon und werde ich weiterhin müssen.

Allerdings machen wir auch viel Werbung auf Inseratenseiten. Diese werden dann aber schnell mal weit oben gelistet. Klar kann ich diese Domains auch einfach sperren. Das Problem ist nun aber folgendes:
Wenn diese Inserateseite mich nun mit einem Banner auf seiner indexseite aufnimmt, würde er nie bei mir in der Topliste erscheinen, da ich ihn ja gesperrt habe.
Deswegen möchte ich diese Funktion in das Script einbauen und hoffe nun auf ein paar konkrete Vorschläge...


Danke
Mit Zitat antworten
  #10 (permalink)  
Alt 15-08-2009, 13:12
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von dee73 Beitrag anzeigen
Ich glaube halt noch an die "Guten Menschen" die für Erfolg nicht zu bescheissen brauchen.
Warum dann diese Restriktion?

Zitat:
Zitat von dee73 Beitrag anzeigen
Das Script hat zudem einen kleinen Fehler drin: Klickt man auf seiner Seite einen Banner auf meine Seite und aktualisiert den Browser ein paar mal dann steigt auch die Ranghöhe.
Das wäre aus meiner Sicht die wichtigere Baustelle.

Zitat:
Zitat von dee73 Beitrag anzeigen
Deswegen möchte ich diese Funktion in das Script einbauen und hoffe nun auf ein paar konkrete Vorschläge...
Wie sollen denn konkrete Vorschläge kommen, wenn es nicht machbar ist? Das versuche ich dir ja die ganze Zeit klar zu machen.
Mit Zitat antworten
  #11 (permalink)  
Alt 15-08-2009, 13:21
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Warum dann diese Restriktion?
Deswegen:
Allerdings machen wir auch viel Werbung auf Inseratenseiten. Diese werden dann aber schnell mal weit oben gelistet. Klar kann ich diese Domains auch einfach sperren. Das Problem ist nun aber folgendes:
Wenn diese Inserateseite mich nun mit einem Banner auf seiner indexseite aufnimmt, würde er nie bei mir in der Topliste erscheinen, da ich ihn ja gesperrt habe.


Das es nicht machbar ist, kan ich nicht glauben. Genauso wie ich Domains sperren kann, kann ich bestimmt irgendwie sagen, dass nur links aus bestimmten Dateien in die Datenbank reinkommen sollen.
Mit Zitat antworten
  #12 (permalink)  
Alt 15-08-2009, 13:31
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von dee73 Beitrag anzeigen
Das es nicht machbar ist, kan ich nicht glauben. Genauso wie ich Domains sperren kann, kann ich bestimmt irgendwie sagen, dass nur links aus bestimmten Dateien in die Datenbank reinkommen sollen.
Ich kann dich natürlich nicht zwingen, das zu glauben. Natürlich kannst du bestimmen, dass nur bestimmte Dateien in die Datenbank kommen, aber diese Dateinamen müssen nicht zwingend im Referer-Header stehen. Die http://www.example.com/pfad/zu/einer/index.html kann auch als http://www.example.com/pfad/zu/einer/ ankommen, dann hast du einfach keinen Dateinamen.

Oder ist dir das klar und wir reden aneinander vorbei?
Mit Zitat antworten
  #13 (permalink)  
Alt 15-08-2009, 13:37
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja ist mittlerweile schon klar. Würde dies auch so kommunizieren auf der Seite. Klar ist auch dass dan nicht jede Seite mitmachen kann. Dann macht er halt keinen Link zu uns.
Dafür habe ich etwas weniger Arbeit mit Domains sperren, die dann irgendwann vielleicht einen Link setzen und sich ärgern.
Mit Zitat antworten
  #14 (permalink)  
Alt 15-08-2009, 13:43
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von dee73 Beitrag anzeigen
Klar ist auch dass dan nicht jede Seite mitmachen kann. Dann macht er halt keinen Link zu uns.
Wenn du das in Kauf nimmst, dann lass doch nur URLs zu, die einen leeren Pfad haben, also http://www.example.com/
Mit Zitat antworten
  #15 (permalink)  
Alt 15-08-2009, 13:58
dee73
 Registrierter Benutzer
Links : Onlinestatus : dee73 ist offline
Registriert seit: Jul 2008
Beiträge: 16
dee73 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja wenn das einfacher ist? Hab trotzdem keine Ahnung wie ich das bewerkstelligen könnte ;-)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script optimieren philomat Projekthilfe 4 02-01-2006 17:54
[Script] Referer mit Id bl4d36666 Apps und PHP Script Gesuche 2 25-03-2005 15:36
tabelle optimieren script kaiand1 PHP Developer Forum 9 10-04-2004 13:10
Referer PHP Script gesucht jfriedag Apps und PHP Script Gesuche 2 06-12-2003 15:25
Frage zu einem Referer Script hijack PHP Developer Forum 2 21-10-2003 14:33

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:44 Uhr.