48067
26.12.2007, aktualisiert am 05.02.2008
5697
12
0
Probleme mit der PHP-Funktion switch!
Moin.
Ich habe ein Problem!
In der PHP-Datei file-ext.lib.php habe ich eine Switch-Funktion die wie folgt aussieht:
Leider kann ich in der index.php die Werte für $supportedfile usw. auslesen. Auch wenn ich den Inhalt dieser Datei in die index.php reinkopiere und das include wegkommentiere kann ich diese Werte nicht auslesen.
Wie kann ich diese Werte nun in der index.php auslesen? (Wenn möglich mit der include-Function)
Bitte helft mir!
Ich habe ein Problem!
In der PHP-Datei file-ext.lib.php habe ich eine Switch-Funktion die wie folgt aussieht:
$getext=end(explode(".", $Datei));
switch ($getext)
{
case MOV: $ext["name"]="mov";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]="Inlcude this mov as big vid";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
case MPG: $ext["name"]="mpg";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
default: $ext["name"]="";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="";
$supportedfile=0;
break;
}
Leider kann ich in der index.php die Werte für $supportedfile usw. auslesen. Auch wenn ich den Inhalt dieser Datei in die index.php reinkopiere und das include wegkommentiere kann ich diese Werte nicht auslesen.
Wie kann ich diese Werte nun in der index.php auslesen? (Wenn möglich mit der include-Function)
Bitte helft mir!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 76665
Url: https://administrator.de/contentid/76665
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
12 Kommentare
Neuester Kommentar
Kann net gehen!
Du hast überall bei den Casename das ' ' vergessen
switch ($getext)
{
case 'MOV': $ext["name"]="mov";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]="Inlcude this mov as big vid";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
case 'MPG': $ext["name"]="mpg";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
default: $ext["name"]="";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="";
$supportedfile=0;
break;
}
Hallo,
ich weiss nicht mehr wie streng php das handhabt. Aber die allermeisten Programmiersprachen das so nicht machen: switch ist ein Block, und variablen, die in einem Block definiert werden haben als Scope auch nur den Block und sind außerhalb (also nach dem switch-Block) ungültig. Lösung: Variable vor dem Block definieren, also vor dem switch ein "$supportedfile=0". Gilt natürlich auch für alle anderen Varialben.
Dem mit den Anführungszeichen kann ich nur halb beipflichten: Wenn du die Anführungszeichen weglässt interpretiert php das als Konstante, die ebendiesen Wert hat (also bei MOV eine Konstante mit dem Wert "MOV"). Sauber ist das aber nicht, in sofern mach die Zeichen lieber. Je nach Debuglevel meckert der Interpreter sonst auch.
Filipp
ich weiss nicht mehr wie streng php das handhabt. Aber die allermeisten Programmiersprachen das so nicht machen: switch ist ein Block, und variablen, die in einem Block definiert werden haben als Scope auch nur den Block und sind außerhalb (also nach dem switch-Block) ungültig. Lösung: Variable vor dem Block definieren, also vor dem switch ein "$supportedfile=0". Gilt natürlich auch für alle anderen Varialben.
Dem mit den Anführungszeichen kann ich nur halb beipflichten: Wenn du die Anführungszeichen weglässt interpretiert php das als Konstante, die ebendiesen Wert hat (also bei MOV eine Konstante mit dem Wert "MOV"). Sauber ist das aber nicht, in sofern mach die Zeichen lieber. Je nach Debuglevel meckert der Interpreter sonst auch.
Filipp
Hy nochmal,
folgender Test:
Datei test2.php hat folgenden Inhalt:
Datei test1.php sieht so aus:
Bei einem Test auf der Shell bekomme ich folgendes Ergebnis:
Gruss, Kurt
folgender Test:
Datei test2.php hat folgenden Inhalt:
<?php
$Datei="hallo.MOV";
$getext=end(explode(".", $Datei));
switch ($getext)
{
case 'MOV': $ext["name"]="mov";
$ext["thumb"]="Include this mov as thumb";
$ext["big"]="Inlcude this mov as big vid";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
case 'MPG': $ext["name"]="mpg";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="2007-12-26 13:07";
$supportedfile=1;
$isimage=0;
break;
default: $ext["name"]="";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="";
$supportedfile=0;
break;
}
?>
Datei test1.php sieht so aus:
<?php
include("test2.php");
echo "supportedfile hat den Wert: $supportedfile\n";
?>
Bei einem Test auf der Shell bekomme ich folgendes Ergebnis:
[kurt@kurt dev]$ php test1.php
supportedfile hat den Wert: 1
supportedfile hat den Wert: 1
Gruss, Kurt
Hallo,
Die Shell ist ein Befehlsinterpreter auf Betriebssystem-Ebene. Damit kann man z. B. PHP-Code ohne Webserver ausführen. Bei Programmlistings hier im Forum ist das oft die einfachste Möglichkeit, das Ergebnis eines Programms zu zeigen. Die Scripten sollten natürlich auch auf dem Webserver funktionieren.
In Schleifen dürfen Kommentare stehen. PHP wertet diese nicht aus.
Gruss, Kurt
Die Shell ist ein Befehlsinterpreter auf Betriebssystem-Ebene. Damit kann man z. B. PHP-Code ohne Webserver ausführen. Bei Programmlistings hier im Forum ist das oft die einfachste Möglichkeit, das Ergebnis eines Programms zu zeigen. Die Scripten sollten natürlich auch auf dem Webserver funktionieren.
In Schleifen dürfen Kommentare stehen. PHP wertet diese nicht aus.
Gruss, Kurt
Hy,
die Var $supportedfile ist nur innerhalb der Funktion gültig. Du hast zwei Möglichkeiten.
1) Du machst die Var $supportedfile in der Funktion global gültig. In ext.lib.php:
2) In der Datei gallery.php die Funktion wie folgt aufrufen:
und in ext.lib.php ein return der Var setzen:
Möglichkeit 2 ist die sauberere Lösung.
Gruss, Kurt
die Var $supportedfile ist nur innerhalb der Funktion gültig. Du hast zwei Möglichkeiten.
1) Du machst die Var $supportedfile in der Funktion global gültig. In ext.lib.php:
<?php
function isfilesupported($pfad,$Datei)
{
global $supportedfile;
$getext=strtoupper(end(explode(".", $Datei)));
.
.
.
2) In der Datei gallery.php die Funktion wie folgt aufrufen:
$supportedfile=isfilesupported($pfad,$Datei);
.
.
default: $ext["name"]="";
$ext["thumb"]="";
$ext["big"]="";
$ext["date"]="";
$supportedfile=0;
break;
}
return $supportedfile;
}
?>
Möglichkeit 2 ist die sauberere Lösung.
Gruss, Kurt