• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Vergleich

Status
Für weitere Antworten geschlossen.

Web_spider

Neues Mitglied
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;
    }
}
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
 
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;
      }
  }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
  <meta http-equiv="content-type" content="text/xhtml; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
</head>
<body>
<br />
Nur (.jpg|.jpeg|.gif|.bmp|.png|.txt|.doc|.ppt|.mp3|.wav|.mpeg|.wmv|.flv|.html)
<hr />
<br />
  <form action="index.php" method="post" enctype="multipart/form-data">
    <b>Datei:</b>
    <br />
    <input type="file" size="20" name="userfile" id="userfile" />
    <br />
    <input type="submit" value="Upload" />    
    <input type="hidden" name="sent" value="yes" />
  </form>
<?php
if($_POST['sent'] == "yes")
{
    if($uploaded)
    {
        echo "<br />Die Datei ".$_FILES['userfile']['name']." wurde erfolgreich uploadet.";
    }
    else
    {
        echo $check_result['report'];
    }
}
?>
</body>
</html>
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'].= "<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 Bytes gro&szlig; sein. Die Datei ist aber ".$files['size']." Bytes gro&szlig;.";
        }
        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;
    }
}
?>
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;
        }
    }

greez web_spider :D
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben