Script ausgehende Links zählen

26toto26

Mitglied
Hallo an alle,

ich habe folgendes Script auf meiner Seite eingebut um ausgehende Links zu zählen:

PHP:
<?php

// Zugangsdaten fuer die Datenbank
// Diese sollten der Sicherheit halber
// in ein Verzeichnis außerhalb des
// Document-Root ausgelagert werden.

$host     =    "localhost";
$user     =    "xxxx";
$pass     =    "yyyy";

$datab    =    "aaaaa";
$table    =    "ibbbbb";

// Die per GET übergebene URL einlesen und datenbanksicher machen
$url = addslashes($_GET['url']);

// Verbindung zum MySQL-Server aufbauen
$db = @mysql_connect($host, $user, $pass);

if ($db) {
    if (@mysql_select_db($datab, $db)) {
        // Eintrag fuer die übergebene URL um 1 erhöhen.
        $query = "UPDATE $table SET count = count + 1 WHERE url = '$url'";
        $result = @mysql_query($query);

        // Noch kein Eintrag für die URL vorhanden?
        if (mysql_affected_rows() == 0) {
            $sql_insert = "INSERT INTO $table (url, count) VALUES ('$url', '1')";
            @mysql_query($sql_insert);
        }
    }
}

// Auf übergebene URL weiterleiten
Header("Location: " . $_GET['URL']);
?>

Leider bekomme ich jetzt diese Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web31/html/count.php:9) in /var/www/web31/html/count.php on line 44

Was ist dort falsch in Zeile 36?

Die Daten für die URL werden auch nicht richtig geschrieben

Richtig: http://www.xy.com/aktuell/wis.php?prefix=berrer&wmid=98743
In der Datenbank: http://www.xy.com/aktuell/wis.php?prefix=berrer

liegt es an den Zeichen "&"

Danke und Gruß
toto
 
Zuletzt bearbeitet:
Ganz schnell die Benutzerdaten der MySQL DB löschen ;)

Vor Benutzung von [phpf]header[/phpf] darf keine Ausgabe an den Browser gemacht werden, sprich auch kein HTML.

Ansonsten musst du zusätzlich Funktionen zur Ausgabesteuerung benutzen.
 
Zuletzt bearbeitet:
Jetzt komme ich wieder zurück auf meine eigene Seite und nicht auf die Seite des eigentlichen Link.

Ich habe alle Komentare aus der Datei raus genommen.

In der DB wird alles ab dem "&" immer noch nicht gespeichert
 
Zuletzt bearbeitet:
Hallo noch mal,

Ich habe jetzt alle Leerzeilen und die Kommentare raus genommen aus dem Code. Ich habe auch absolut keine HTML sachen mehr drin nur noch PHP Code und habe leider immer noch die 2 Probleme:

Der Link wird nach den Zeichen "?" einfach nicht weiter in die DB eingetragen.

Der "count" wird um +1 erhöht :-)

Beim klicken auf den Link bekomme ich meine eigene Seite im selben Fenster wieder :-(

Bitte, bitte Hilfe

Danke und Gruß
Toto
 
Was mir spontan noch auffällt...

PHP:
// Die per GET übergebene URL einlesen und datenbanksicher machen
$url = addslashes($_GET['url']);

PHP:
// Auf übergebene URL weiterleiten
Header("Location: " . $_GET['URL']);

Ist es nun groß oder klein? Das macht bei PHP einen Unterschied.
 
Was mir spontan noch auffällt...

PHP:
// Die per GET übergebene URL einlesen und datenbanksicher machen
$url = addslashes($_GET['url']);

PHP:
// Auf übergebene URL weiterleiten
Header("Location: " . $_GET['URL']);

Ist es nun groß oder klein? Das macht bei PHP einen Unterschied.

Super Danke! Jetzt komme ich auf die richtige Seite.

Jetzt habe ich nur noch ein Problem:

Die Variable url übernimt nur einen Teil meines Links. Der Link müsste so aussehen:
http://www.xys-xyafreew.com/xys-edfee/wmid.php?prefix=xys&wmid=987439312

in der Datenbank habe ich aber folgendes stehen:
http://www.xys-xyafreew.com/xys-edfee/wmid.php?prefix=xys der Rest &wmid=987439312 fehlt auch auf der neuen Seite.

Meine DB habe ich so aufgbaut:
Feld Typ Kollation Extra Aktion
id int(10) UNSIGNED auto_increment
url char(255)
count int(11)

Ist dort der fehler zu suchen oder liegt es an dem Zeichen "&"

Noch mal DANKE an alle

Toto
 
Es liegt anscheinend an der Funktion [phpf]addslashes[/phpf]. Warum genau das ist, kann ich auch nicht erklären.
Falls du diese Funktion zur Verhinderung von SQL Injektionen benutzt, benutze lieber [phpf]mysql_real_escape_string[/phpf].
 
Zurück