2009-07-26 15 views
0
$dir_handle = @opendir($url) or die("Unable to open $url"); 
    $count = "0"; 
    while ($file = readdir($dir_handle)) { 
     if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") { 
     $galleryEventFile[$count] = $file; 
     $count++; 
     } 
    } 
    closedir($dir_handle); 

Ich denke, es hat etwas mit dieser Linie zu tun hat:

if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") 

aber im nicht sicher,

Antwort

6

kann ich zwei Dinge sehen, die Sie Probleme verursachen:

Zuordnung/Vergleich:

Sie haben den Code:

if ($file="*.jpg" //etc... 

jedoch ein einzelnes Gleichheitszeichen wird ausführen eine Zuweisung, kein Vergleich - Sie müssen dafür zwei Gleichheitszeichen (==) verwenden. Siehe http://php.net/manual/en/language.operators.comparison.php. Im Wesentlichen, was Sie tun, indem eine Zuordnung in einer if-Anweisung zu tun ist:

$file = '*.jpg'; 
if ($file) { } 

Wildcard Matching von Strings

Sie auch nicht Wildcard tun können, wie der ($ file passenden == „*. jpg) an einer Schnur, könnte man sich mit preg_match() und regulären Ausdrücke statt, zB

if (!preg_match('/\.jpg$/i', $file)) { 
    //not .jpg 
} 

Es könnte besser sein, so etwas zu tun, aber:

//get file extension 
$extension = pathinfo($file, PATHINFO_EXTENSION); 

$allowedExtensions = array('jpg', 'png', 'gif'); 

//check in allowed list 
if (!in_array(strtolower($extension), $allowedExtensions)) { 
    //not valid 
} 
+0

Warum ist $ pathinfo anstatt $ extension? – imHavoc

+0

weil ich ein Idiot bin. Danke, habe korrigiert –

0

Zuerst sollte $ count eine Zahl sein. Do:

$count = 0; 

Zweitens unterstützt AFAIK, PHP Wildcard-Matching nicht so. Sie können "*" nicht zur Übereinstimmung verwenden. Sie müssen reguläre Ausdrücke verwenden, um die Bedingung zu erfüllen.

+0

Das sollte kein Problem sein. Ich habe gerade versucht '$ count =" 0 "; $ count ++; echo $ count; 'und es echoed 1. – jimyi

+0

Warum 1 im Gegensatz zu 0? Macht keinen Sinn. – hobodave

+0

Das stimmt. Es war mehr stilistisch als alles andere. Die implizite Typumwandlung stört mich. Das wirkliche Problem, das ich denke, ist die Wildcard, die mit "*" übereinstimmt. – thedz

0

Tun Sie, wie Thedz und Tom Haigh vorgeschlagen haben.

Haben Sie schon von XDebug gehört? Dies ermöglicht Ihnen, eine Umgebung einzurichten, in der Sie Eclipse verwenden und Ihren PHP-Code durchgehen. Ich entwickle mich nicht ohne eine Kombination aus Eclipse und XDebug.

0

Das erste, was Sie tun möchten, ist die if-Zeile zu debuggen. Denken Sie daran, dass wenn Sie *.gif setzen, es aussieht, um zu sehen, dass die Datei tatsächlich "*.gif" heißt, anstatt nach irgendeiner GIF-Datei zu suchen, ähnlich wie Windows.

Was ich vorschlagen würde, geht durch jedes Segment des If, und es zu passieren. dann kannst du anfangen, es zusammenzusetzen.

Verwandte Themen