Ich habe mir das Amazon Mod Vers. 1.0 (SMF 1.1.4) installiert und jetzt habe ich Fehlermeldungen:
8: Undefined index: host
Datei: /home/www/web309/html/forum/Sources/Subs.php
Zeile: 2394
In dem Source Code siehst aber sehr kompliziert aus :( Das ist ab Zeile 2393 bis 2402.
Was läuft da falsch und wie stelle ich es ab? Wie immer freue ich mich über eine Lösung.
// MATCH ANY AMAZON LINKS AND CREATE REPLACEMENTS
if (preg_match('/(.*)amazon\.(com|co.uk|de|fr|co.jp|ca)+/i', $parsed['host'])) {
$parsed['host'] = str_replace('www.','',$parsed['host']);
$parsed['host'] = str_replace('amazon.','',$parsed['host']);
// IF THE DOMAIN EXTENSION IS VALID
if(isset($temp[$parsed['host']])) {
$search[] = '<a href="'. $link. '"' ;
$replace[] = '<a href="'. str_replace($parsed['host'], $modSettings['amazonlinksassociatestore'], $link) . ((strpos($link,'?') === FALSE) ? '?' : '&') . 'tag='. $modSettings['amazonlinksassociateid'].'"' ;
}
}
Nichts dramatisches, ist weder Fehler noch Warnung, eigentlich eher eine Notice von PHP, die dir mitteilt, dass 'host' nicht definiert ist.
Prüfe 'host' per isset und gut ist.
André
Das prüfen habe ich jetzt nicht verstanden :(
if(isset($parsed['host']]))
Danke ich probiere es mal aus.
Habe es nicht hinbekommen. Wo füge ich das genau ein? und stimmt die Anzahl der eckigen Klammern?
Eine Klammer weniger please.
Es würde aber auch reichen am Anfang der Funktion ein simples
$parsed['host'] = '';
zu schreiben
also direkt nach der Kommentarzeile?
Yes sir!
habe den Code $parsed['host'] = ''; eingefügt. Hat aber zur Folge, dass meine Amazon ID nicht mehr als tag angehängt wird. :(
Wenn ich es richtig verstehe, würde aber lediglich eine Fehlermeldung eliminiert oder? Irgendwas muss doch am oben angegebenen Source code falsch sein ?
PHP warnt von Amts wegen vor leeren bzw. undefinierten Variablen/Arrays und Co.
Sinn der Sache ist, dass, wenn PHP schlecht konfiguriert ist (Register Globals) oder über Injections die Variablen beschrieben werden können.
In deinem Code ist es nun so, dass $parsed['host'] nicht immer zur Verfügung steht, und demzufolge ein Warning erscheint.
ok, so was ähnliches hatte ich mir schon gedacht. Was muss aber nun an dem Code geändert werden, damit der Fehler nicht mehr gemeldet wird?
das Fehlerprotokoll läuft voll, keiner eine Idee wie das zu lösen ist?