Undefined offset: 2 ...

AndyAY

Grünschnabel
Hi, :)

hab ein Problem mit meinem Referer Script, dass mir anzeigen sollte von welcher URL meine Besucher kommen. Bin vor paar Tagen auf einen anderen Server umgezogen, zuvor hat noch alles einwandfrei funktioniert. Seit dem Umzug nicht mehr, obwohl selbe PHP und MySQL Version installiert ist.

Fehlermeldung:
Code:
Notice: Undefined offset: 2 in ************/index.php on line 237

Hier der Quellcode:
PHP:
<?php
	include('config.php');

	$ref = isset($_SERVER['HTTP_REFERER']);
	$url = explode("/",$ref);
	$surl = $url[2];  // Zeile 237
	$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($result, MYSQL_ASSOC);
	
	if ($site['website'] != 'www.') {
	
		if ($site['website'] != 'www.meineseite.de') {
	
			$hits = $site['hits'] + 1;
			$website = $site['website'];
			
			$query = "UPDATE referers SET hits = $hits WHERE website = '$website'";
			$result = mysql_query($query);
		
		}
	}
	
} else {

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

}

$query = "SELECT * FROM referers ORDER BY hits DESC LIMIT 10";
$result = mysql_query($query);
?>

Hoffentlich weiß jemand weiter.

Mfg
Andy
 
Doch die Zeile 237 hab ich im Code kommentiert. Das Script befindet sich am unteren Ende meiner index.php. Ich hab nur den oberen Teil weggelassen, da er für das Script irrelevant ist :)

Mfg Andy
 
Sorry, nicht gesehen.

Was steht denn beim Referrer bzw. $url drin?
Lass das mal ausgeben.

Wahrscheinlich hat das Array nur 2 Elemente, [2] (also das Dritte) gibt es dann dadurch nicht.
 
Hab eingegeben

print_r($ref);
print_r($url);

Bei Ref hat er mir nichts angezeigt, bei Url steht dann: Array ( [0] => )
 
Warum machst du bei $_SERVER['HTTP_REFERER'] ein isset herum? :suspekt:
Das soll wohl eher weg.

isset liefert ja nur ein bool, in dem wirst du keine / finden.

Und dass das vorher funktioniert hat glaub ich eher nicht.
Kann es nicht eher sein, dass aufgrund anderer Servereinstellungen
die Fehlermeldung einfach nicht öffentlich ausgegeben wurde?
 
Mit isset hab ich es jetzt probiert, normalerweise steht das nicht da. Aber es funktioniert so oder so nicht.

Und vorher hat es schon funktioniert, hab dann auf meiner Statistik Seite die letzten 10 Refs anzeigen lassen und ist auch alles prima gegangen. Selbst wenn ich jetzt die Fehlermeldung unterdrücken würde, dann kommt es trotzdem nicht zu einem resultat.
 
Was steht denn im $ref ohne isset?

Und wieso bist du dir überhaupt so sicher, dass da immer zwei / drin sind?
 
Wenn ich ohne isset eintrage kommt: Notice: Undefined index: HTTP_REFERER in **************/index.php

Das Problem hatte ich bei einem anderen Script auch seit meinem Severumzug. Bei dem anderen Script konnte ich das mit isset lösen, deshalb hab ich das bei dem hier auch gemacht.

Und zu dem [2] was du warscheinlich meinst. Damit ist der zweite Teil einer URL gemeint. Z.B. http://www.google.de , dann soll das Script nur google.de auslesen, später im script wird ja wieder das www. hinzugefügt.
 
Genau das mein ich: Woher bist du dir so sicher, dass es
a) einen Ref. gibt, der zwei / hat
b) überhaupt einen Ref. gibt?

Man muss ja keinen Referrer haben, zB. bei Direkteingabe in die Adresszeile vom Browser.
Genau das ist da der Fall.

Und zum [2]: Erstens würdest du bei "www.google.de" nur "de" rausbekommen,
zweitens trennst du ja nicht an '.', sondern '/'.

Aus "www.seite.xy/abc/def/ghi" machst du "def"
 
Zurück