Vergleich

Hi all,
Ich habe das PRoblem, dass bei dem vergleich immer in den Else Block gesprungen wird, auch wenn der Vergelich logisch nicht stimmt.
[php]
class validate
{
protected $check;

function checkFile($files, $max_byte_size, $allowed_types = "(jpg|bmp|gif|png|jpeg|)")
{
    (int)$max_byte_size;
    (int)$files['size'];
    $this->check['report'] = ""; //Die Variable wegen Notice intalisieren 
    $this->check['result'] = ""; //Die Variable wegen Notice intalisieren 
    if($files["name"] == "")
    {
        $this->check['result'] = false;
        $this->check['report'].= "<br />\nBitte w&auml;hlen sie eine Datei."; 
        return $this->check;      
    }
    if($files['size'] > $max_byte_size)
    {
        ($this->check['result'])? $this->check['result'] = true : $this->check['result'] = false;
    }
    else
    {
        $max_megabyte_size = $max_byte_size;
        $this->check['result'] = false;
        $this->check['report'].= "<br />\nDie Datei ist zu gro&szlig;, sie darf nur $max_megabyte_size gro&szlig; sein. Die Datei ist ".$files['size']."";
    }
    if(preg_match("/\.".$allowed_types."$/i", $files["name"]))
    {
        ($this->check['result'])? $this->check['result'] = true : $this->check['result'] = false;    
    }
    else
    {
        $this->check['result'] = false;
        $this->check['report'].= "<br />\nDie Datei besitzt eine ung&uuml;ltige Endung.";
    }
    return $this->check;
}

}
[/php]Als Ergebnis kommt immer raus, dass die Datei zu groß ist, obwohl das nicht stimmt.
Ich habe schon versucht sie extra zu Intager zu machen, aber trotzdem nicht,
Ergebniss, kann hier gesehen werden:
http://gloryage.pytalhost.com/user/index.php

was ist das:
php$max_byte_size;
(int)$files[‚size‘];[/php]

meinst du
[php]global $max_byte_size;[/php][/php]

nein ich hatte sie versucht zu Integer zu machen -.-
aber auch ohne das klappts net -.-

Dann muss das so lauten:

[php]$max_byte_size = (int)$max_byte_size;
$files[‚size‘] = (int)$files[‚size‘];[/php]

Es wäre hier ganz nützlich zu wissen was für werte das spätere script der methode übergibt und wie die methode aufgerufen wird. Es muss ja nicht zwingend die methode falsch sein.

hmm also ich poste mal das ganz script.
Ihr könnt oben bei meinem Link, auch mal eine txt Datei versuchen zu uploaden, die klein ist, trotzdem kommt eine Fehlermeldung.
Also
erstmal die index.php Datei:
[php]

<?php //Nur wenn Datei gesendet wurde include "../configuration/classes/c_file.php"; include "../configuration/classes/c_validate.php"; if($_POST['sent'] == "yes") { $upload = new validate(); $file = new U_file(); $check_result = $upload->checkFile($_FILES['userfile'], 2097152 , "(jpg|jpeg|gif|bmp|png|txt|doc|ppt|mp3|wav|mpeg|wmv|flv|html)"); if($check_result['result']) { $file->uploadFile("userfile"); $uploaded = true; } else { $uploaded = false; } } ?>
Nur (.jpg|.jpeg|.gif|.bmp|.png|.txt|.doc|.ppt|.mp3|.wav|.mpeg|.wmv|.flv|.html)

Datei:

<?php if($_POST['sent'] == "yes") { if($uploaded) { echo "
Die Datei ".$_FILES['userfile']['name']." wurde erfolgreich uploadet."; } else { echo $check_result['report']; } } ?> [/php]Die Datei c_file.php hatt damit nicht viel zu tun, und wurde schonmal getestet.

Hier die Datei c_validate.php
[php]

<?php class validate { protected $check; function checkFile($files, $max_byte_size, $allowed_types = "(jpg|bmp|gif|png|jpeg|)") { $max_byte_size = (int)$max_byte_size; $files['size'] = (int)$files['size']; $this->check['report'] = ""; //Die Variable wegen Notice intalisieren $this->check['result'] = ""; //Die Variable wegen Notice intalisieren if($files["name"] == "") { $this->check['result'] = false; $this->check['report'].= "
\nBitte wählen sie eine Datei."; return $this->check; } if($files['size'] > $max_byte_size) { ($this->check['result'])? $this->check['result'] = true : $this->check['result'] = false; } else { $max_megabyte_size = $max_byte_size; $this->check['result'] = false; $this->check['report'].= "
\nDie Datei ist zu groß, sie darf nur $max_megabyte_size Bytes groß sein. Die Datei ist aber ".$files['size']." Bytes groß."; } if(preg_match("/\.".$allowed_types."$/i", $files["name"])) { ($this->check['result'])? $this->check['result'] = true : $this->check['result'] = false; } else { $this->check['result'] = false; $this->check['report'].= "
\nDie Datei besitzt eine ungültige Endung."; } return $this->check; } } ?>

[/php]Hoffe auf Hilfe -.-

//EDIT:
Ich poste mal zur sicherheit den Relevanten ausschnitt aus c_file.php
[PHP]
function uploadFile($name, $target = „upload/“)
{
$file = $_FILES[$name][‚name‘];
//Leerzeichen entfernen
$file = str_replace(" ", „“, $file);
if(move_uploaded_file($_FILES[$name][‚tmp_name‘], $target.$file))
{
return true;
}
else
{
return false;
}
}
[/PHP]

greez web_spider :smiley: