Probleme mit ereg

sebastianv

Mitglied
Guten morgen!

Habe folgendes Problem:
Ich möchte eine Datei hochladen und diese überprüfen ob sie nur buchstaben, zahlen, - und _ enthällt. Klappt soweit auch schon allerdings funktioniert es mit den zahlen nicht!
Konnte im netz auch nirgends eine gute beschreibung des ereg befehls finden die mich weitergebracht hätte!

Weiß irgendwer an welcher stelle ich nochwas hinzustellen muss, damit er auch bei enthaltenen zahlen die Datei hochlädt?

Hier der Code:
PHP:
$endung = substr($_FILES['file']['name'],-3);
if ($endung=="doc"||$endung=="DOC"||$endung=="pdf"||$endung=="PDF"||$endung=="jpg"||$endung=="JPG")
{
	$dateiname = $_FILES['file']['name'];
	$rest = substr($dateiname, 0, -4);
	if  (!ereg('^([[:alnum:]_-])*$', $rest))
	{
                           echo "Dokument wurde nicht hochgeladen!<br><br>Bitte achten Sie darauf, das der Dateiname keine Sonder- oder Leerzeichen enthällt!<br><br>Der Dateiname war $dateiname";
								
	} 	
	else 
	{
   		if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES['file']['name']))
		{
			$datum = date("Y-m-d");
			$sql="insert into Download(ID_Download, Titel, Dateiname, Kategorie)values ('', '$titel', '$dateiname','$kategorie');";
			mysql_query($sql, $dbh)or die("Fehler bei QUERY <li> errno=".mysql_errno()."<li> error=".mysql_error());
						
						
			echo "Dokument wurde hochgeladen!";
						
						
		}
}
Danke schonmal für eure Hilfe!
 
Es ist zwar nicht die Lösung für dein Problem.
Aber du kannst so dein Skript "verkleinern".

PHP:
$endung = strtolower(substr($_FILES['file']['name'],-3)); 
if ($endung=="doc"||$endung=="pdf"||$endung=="jpg") 
{ 
    $dateiname = $_FILES['file']['name']; 
    $rest = substr($dateiname, 0, -4); 
    if  (!ereg('^([[:alnum:]_-])*$', $rest)) 
    { 
                           echo "Dokument wurde nicht hochgeladen!<br><br>Bitte achten Sie darauf, das der Dateiname keine Sonder- oder Leerzeichen enthällt!<br><br>Der Dateiname war $dateiname"; 
                                 
    }      
    else  
    { 
           if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES['file']['name'])) 
        { 
            $datum = date("Y-m-d"); 
            $sql="insert into Download(ID_Download, Titel, Dateiname, Kategorie)values ('', '$titel', '$dateiname','$kategorie');"; 
            mysql_query($sql, $dbh)or die("Fehler bei QUERY <li> errno=".mysql_errno()."<li> error=".mysql_error()); 
                         
                         
            echo "Dokument wurde hochgeladen!"; 
                         
                         
        } 
}
 
Das ist ein Denkvorschlag und keine fertige Lösung ;)
PHP:
if(preg_match("/^[0-9a-z_]+$i/", $rest))  {
  // Daten enthalten Zahlen, Buchstaben und den Unterstrich
}
else {
 // hier ist nichts mit Zahlen, Buchstaben oder Unterstrich.
}
 
Hab die Lösung gefunden!

So gehts:
PHP:
if  (!ereg('^([[:alnum:][:digit:]_-])*$', $rest))

eichfach noch das [:digit: mit reinnehmen!]

Danke an alle für die Unterstützung!
 
Zurück