Forum

Moderiert von: spinne
Forum Index
Support
     Codeschnippsel
     Fehlermedlung
 

Autor Fehlermedlung
darksweetys
Registriert: 28.12.2005
Beiträge: 639


Sende eine Private Nachricht an darksweetys Besuche die Homepage von darksweetys
MSNM
Geschrieben: 29.05.2010 09:18

Ich habe einen PHP-Code in eine PHP-Box eingefügt der diverse Textlinks ausgeben soll. Leider erscheint bei der ausgabe eine Fehlermedlung:

----------------------
WARNING [8] Undefined variable: config
FOUND IN [system/phpbox/plugin/middlebox/phpbox/main.php(26) : eval()'d code]
FOUND AT 106
----------------------

Der Code:

---------------------
        <?php

//
//BACKLINKSELLER WEBSITE-CODE (ECHO) VERSION 1.7
//

//Ihre Domain-ID. (Diese ist standardmaessig richtig eingestellt)
$BACKLINK_SELLER['DOMAIN_ID'] = '987739737';

//Ihre Account-ID. (Diese ist standardmaessig richtig eingestellt)
$BACKLINK_SELLER['ACCOUNT_ID'] = '791384412';

//Wenn Sie folgenden Parameter auf TRUE setzen, dann
//werden alle Fehlermeldungen ausgegeben und Sie
//können somit leichter die Fehlerursache feststellen
$BACKLINK_SELLER['DEBUG_FLAG'] = false; //true (aktiviert) oder false (deaktiviert)

//Wenn Sie diesen Parameter aktivieren, dann wird von unserem Server
//ein HTML-Code mit einem Beispiel-Textlink zurückgeben
//Somit können Sie die Verbindung mit unserem Server testen,
//auch wenn auf Ihrer Webseite noch keine Textlinks gebucht sind.
//ACHTUNG: BITTE VERGESSEN SIE NICHT, DIESE OPTION
//NACH DEM TEST WIEDER ZU DEAKTIVIEREN
$BACKLINK_SELLER['TEST_FLAG'] = false; //true (aktiviert) oder false (deaktiviert)

//Benutzerdefinierte HTML-Code, der vor jedem Textlink hinzugefügt wird
//(Diese Einstellung ist optional)
$BACKLINK_SELLER['HTML_BEFORE_BACKLINK'] = '';

//Benutzerdefinierte HTML-Code, der nach jedem Textlink hinzugefügt wird
//(Diese Einstellung ist optional)
$BACKLINK_SELLER['HTML_AFTER_BACKLINK'] = '<br />';

//Hier kann die CSS-Class Bezeichnung definiert werden, welche
//bei jedem Hyperlink hinzugefügt wird. Zum Beispiel
//<a href='...' class='my_class_name'>...</a>
//(Diese Einstellung ist optional)
$BACKLINK_SELLER['HYPERLINK_CLASS'] = '';

//URL, die zu der Seite Ihrer Webpräsenz führt (z.B. http://www.example.com/my_page/)
//(Die Defaulteinstellung muss in den meisten Fällen nicht geändert werden)
$requestUri = $_SERVER['REQUEST_URI'];
if(substr($requestUri, 0, 1) == '/') {$requestUri = substr($requestUri, 1);} //remove leading slash
$requestUri = str_replace('http://www.darksweetys.com/', '', $requestUri); //make sure that request uri is without domain
$BACKLINK_SELLER['PAGE_URL'] = 'http://www.darksweetys.com/' . $requestUri;

//Mit einem aktivierten Caching wird der zurückgegebene HTML-Code
//in einer Datei für mindestens eine Stunde gespeichert.
//Bitte definieren Sie auch einen gültigen Dateipfad (siehe weiter unten)
//ACHTUNG: WIR EMPFEHLEN DAS CACHING ZU AKTIVIEREN, DA DIES DIE
//ZUGRIFFSZEITEN IHRER WEBSEITE ERHÖHT. AUSSERDEM BESEITIGT DAS AKTIVIERTE
//CACHING EINIGE TIMEOUT-PROBLEME, FALLS UNSER SERVER VORÜBERGEHEND NICHT ZUR VERFÜGUNG STEHT.
$BACKLINK_SELLER['CACHING_ENABLED_FLAG'] = false; //true (aktiviert) oder false (deaktiviert)

//Dateipfad zu der Caching-Datei.
//Für jede URL wird eine solche Datei angelegt
//ACHTUNG: DIESE DATEI MUSS SCHREIB- UND LESE-RECHTE BESITZEN.
//SIE KÖNNEN DIESE RECHTE ÜBER DIE CHMOD-EINSTELLUNG SETZEN.
//BITTE KONFIGURIEREN SIE AUCH EINEN UNTERVERZEICHNIS, IN DEM DIESE
//CACHE-DATEIEN ERSTELLT WERDEN - ANSONSTEN WERDEN DIESE DIREKT IM
//ROOT-VERZEICHNISS IHRER WEBPRESENZ ERSTELLT.
$BACKLINK_SELLER['CACHED_FILE_PATH'] = $_SERVER['DOCUMENT_ROOT'] . '/bs-987739737-' . md5($BACKLINK_SELLER['PAGE_URL']) . '.txt';

if(!defined("BACKLINK_SELLER")) {define("BACKLINK_SELLER", serialize($BACKLINK_SELLER));}
if(!in_array('BacklinkSeller', get_declared_classes())) //if not already declared
{
    class BacklinkSeller
    {
        var $config = null;
        function retrieveHTML()
        {
            $this->config = unserialize(BACKLINK_SELLER);
            $cachingDirectory = substr($this->config['CACHED_FILE_PATH'], 0, strrpos($this->config['CACHED_FILE_PATH'], '/') + 1);
            if($this->config['CACHING_ENABLED_FLAG'] && is_writable($cachingDirectory)) {return $this->retrieveHTMLWithCaching();}
            return $this->retrieveHTMLFromServer();
        }
        function retrieveHTMLWithCaching()
        {
            if($this->isCachedFileExpired())
            {
                $response = $this->retrieveHTMLFromServer();

                //if server is down then cache HTML response for max 48 hours
                if($response == 'UNABLE_TO_CONNECT' && $this->isCachedFileExpired(4)
                {
                    //backlinkseller server is still not available
                    //in this case we empty cached file
                    $this->writeHTMLToCachedFile('');
                }
                else
                {
                    //update cached file
                    $this->writeHTMLToCachedFile($response);
                }
            }
            return $this->loadHTMLFromCachedFile();
        }
        function retrieveHTMLFromServer()
        {
            $request = '/channel.php?domain_id=' . $this->config['DOMAIN_ID'] .
            '&account_id=' . $this->config['ACCOUNT_ID'] .
            '&html_before=' . urlencode($this->config['HTML_BEFORE_BACKLINK']) .
            '&html_after=' . urlencode($this->config['HTML_AFTER_BACKLINK']) .
            '&page=' . urlencode($this->config['PAGE_URL']) . '&xhtml=1' .
            '&user_ip=' . $_SERVER['REMOTE_ADDR'] .
            '&class=' . urlencode($config['HYPERLINK_CLASS']);
            if($this->config['TEST_FLAG']) {$request .= '&test=1';}
            @$socket = fsockopen('channel2.backlinkseller.de', 80, $errorNumber, $errorMessage, 5);
            if(!$socket) {return 'UNABLE_TO_CONNECT';}
            $response = null;
            stream_set_timeout($socket, 5);
            fwrite($socket, 'GET ' . $request . " HTTP/1.1rnHost: channel2.backlinkseller.dernrn");
            $response = fread($socket, 1000000);
            fclose($socket);
            if(strpos($response, "rnrn") !== false)
            {$response = trim(substr($response, strpos($response, "rnrn")));}
            if(!$this->config['DEBUG_FLAG']) //if debug is disabled
            {
                //if response contains any message and not HTML code as expected
                if(substr($response, 0, 7) == 'ERROR: ' || substr($response, 0, 4) == 'OK: ')
                {return '';} //do not display this message
            }
            $response = str_replace(array('"', "'"), array('"', "'"), $response); //remove quotes
            return $response;
        }
        function writeHTMLToCachedFile($html)
        {
            $handle = fopen($this->config['CACHED_FILE_PATH'], 'w');
            flock($handle, LOCK_EX);
            fwrite($handle, $html);
            flock($handle, LOCK_UN);
            fclose($handle);
        }
        function loadHTMLFromCachedFile()
        {
            if(file_exists($this->config['CACHED_FILE_PATH']))
            {return file_get_contents($this->config['CACHED_FILE_PATH']);}
            return '';
        }
        function isCachedFileExpired($hoursToLive = 1)
        {
            if(!file_exists($this->config['CACHED_FILE_PATH'])) {return true;}
            if(filemtime($this->config['CACHED_FILE_PATH']) < time() - (60 * 60 * $hoursToLive)){return true;}
            return false;
        }
    }
}

//output backlinkseller html with backlinks
$backlinkseller = new BacklinkSeller();
echo($backlinkseller->retrieveHTML());

?>
------------------------

Ist warscheinlich keine große Sache nur kann ich die Ursache nicht aus der Fehlermeldung erkennen.
Bin für nen Tipp dankbar 

      




DarkSweetys

Zitieren nach oben
stefan
Beiträge: 2436
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 29.05.2010 10:20

&class=' . urlencode($config['HYPERLINK_CLASS']);

hier nutzt du $config ohne das es das geben würde.

Deiner Logik folgend müsste es es dann $this->config sein. Allerdings sehe ich da noch mehr Probleme. Hast du das nicht vorher ausprobiert?



Erst nachlesen, dann nachdenken, dann nachfragen...
http://www.catb.org/~esr/faqs/smart-questions.html

openPHPnuke Developer

Zitieren nach oben
darksweetys
Registriert: 28.12.2005
Beiträge: 639


Sende eine Private Nachricht an darksweetys Besuche die Homepage von darksweetys
MSNM
Geschrieben: 29.05.2010 12:21

Bis jetzt hat das ganze ganz gut funktioniert. Erst seit der neuen Version des Codes erscheint diese Meldung. Die Links werden ja auch angezeigt.

Ist jhalt ein Nachteil wenn man sich darauf verlassen muss das immer alles funktioniert .





DarkSweetys

Zitieren nach oben
sortieren nach

 
Vorheriges Thema:  Zugriff auf DB über Modulfunktion
Nächstes Thema:  Anzahl Beiträge von heute

Gehe zu: