blöde fehlermeldung

mike4004

Erfahrenes Mitglied
Hi

ich habe eine Fehlermeldung die ich nicht verstehe allerdings läuft das script auf einem Server und auf einem anderen nicht unzwar geht es um diesen code.

PHP:
if (!preg_match('#^[a-zA-Z]+://#', $url))

        {

            switch ($url{0})

            {

                case '/'://1020

                    $url = $this->base['scheme'] . '://' . $this->base['host'] . ($this->base['port'] != 80 ? ':' . $this->base['port'] : '') . $url;

                    break;

                case '?'://1023

                    $url = $this->base['base'] . '/' . $this->base['file'] . $url;

                    break;

                case '#': //1026

                    $proxify = false;

                    break;

                case 'm': //1029

                     if (substr($url, 0, 7) == 'mailto:')

                     {

                         $proxify = false;

                         break;

                     }

                default:

                    $url = $this->base['base'] . '/' . $url;

            }

        }
Notice: Uninitialized string offset: 0 in /www/usersites/l/miket/pub/PHProxy.class.php on line 1020

Notice: Uninitialized string offset: 0 in /www/usersites/l/mike/pub/PHProxy.class.php on line 1023

Notice: Uninitialized string offset: 0 in /www/usersites/l/mike/pub/PHProxy.class.php on line 1026

Notice: Uninitialized string offset: 0 in /www/usersites/l/mike/pub/PHProxy.class.php on line 1029


danke schon mal für die hilfe woran kann das liegen?

mfg mike4004
 
Hallo,

diese Meldung besagt, dass du auf ein Zeichen im String zugreifst, das nicht mit einem Wert besetzt ist. Da es sich hier im den Index 0 handelt, ist davon auszugehen, dass es sich bei $url um einen leeren String handelt.

Grüße,
Matthias
 
Hi

ich verstehe dich nicht.

wie kann der bei case 'm': so einen fehler anzeigen.

das $url vieleicht leer ist macht doch nix dann is default.

wie gesagt auf einem anderen server gehts.

mfg mike4004
 
Probier mal Folgendes:
PHP:
if( !preg_match('#^[a-zA-Z]+://#', $url) && strlen($url) > 0 ) {

	…

}
 
Wie meinen :confused:

deine Bedingung prüft zwar, ob $url nicht einem bestimmten Ausdrück entspricht, ...dies ist jedoch auch der Fall, wenn $url leer ist ...
PHP:
<?php

$url='';

if(!preg_match('#^[a-zA-Z]+://#',$url))echo 'Bedingung erfüllt'; 

echo $url{0}; //<--Fehler
?>
Gumbos Vorschlag behebt dieses Problem.
 
Hallo,

mike4004 hat gesagt.:
ich verstehe dich nicht.

wie kann der bei case 'm': so einen fehler anzeigen.

das $url vieleicht leer ist macht doch nix dann is default.
Nein, denn du greifst ja schon in der case-Anweisung auf das erste Zeichen von $url zu. Wenn dir jemand sagt, du sollst die erste Frucht aus einer leeren Obstschüssel nehmen und diese dann mit anderen Früchten vergleichen, dann wirst du dem ja schon vor dem Vergleich erzählen, dass da überhaupt nix drin ist :)

wie gesagt auf einem anderen server gehts.
Wird dann wohl an einer niedrigeren Fehlersensibilität (error_reporting-Direktive) beim anderen Server liegen.

Grüße,
Matthias
 
Hi

irgentwie hat mir das jetzt alles nix geholfen.

Ich habe es einfach auf einen anderen Server gehtan und es geht.

mfg mike4004
 
Zurück