php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.02.2005, 13:31  
Gast
 
Beiträge: n/a
Standard type="file" - Filter möglich?

Hallo zusammen...

Ich arbeite an einer Bildergallery. Das uploaden von Dateien und das abspeichern auf dem Server ist kein Problem.

Wie aber stelle ich einen Filter für type="file" ein das im Dialogfenster nur *.jpg usw. angezeigt werden?

Für lösungen wäre ich sehr dankbar.

mfg@HHVH
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.02.2005, 13:32  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

geht nicht.

einzige aber nciht saubre möglichkeit ist auf ein javaapllet oder active x-objekt zurückzugreifen, aber das ist pfui,

mfg
robo47
robo47 ist offline  
Alt 15.02.2005, 13:35  
Gast
 
Beiträge: n/a
Standard

active x bietet nur für Windows-User eine Lösung, Linux usw. wird damit ausgesperrt! Das möchte ich nicht
Naja, dann werd ich beim Uploaddialog vermerken dass die Bilder nicht kontrolliert werden.
 
Alt 15.02.2005, 14:01  
Gast
 
Beiträge: n/a
Standard

Also, ich habs jetzt folgendermassen gelöst:

Ich schreibe einfach hin, was für Dateierweiterungen erlaubt sind und überprüfe das File mit "explode" auf die Dateiendung:

Code:
if ($_POST[pictures]<>'')
 {
   $filter = explode('.', $_POST[pictures]);
   echo $filter[1];
 }
Die ganze abfrage wird ausgeführt bevor die Datei upgeloadet wird.

Die Variabel $_POST[pictures] beinhaltet den Pfad und den Dateiname. Im Normalfall liefert der oben genannte explode Befehl die Dateiendung zurück. Sollte aber die Datei folgendermassen aussehen: picture.cat_a.jpge dann wird cat_a als Dateiendung angesehen (da $filter[1]!)

Falls jemand noch eine Lösung für Dateinamen mit mehreren "." kennt oder wie man den letzten explode string der Zeile herausfindet, bitte Posten.
 
Alt 15.02.2005, 14:15  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.783
derHund
Standard

Zitat:
Die ganze abfrage wird ausgeführt bevor die Datei upgeloadet wird.
ja, sicher.

und dateiendungen prüfen, naja ... eher den mime-typ.
__________________
derHund ist offline  
Alt 15.02.2005, 14:19  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von hhvh
Also, ich habs jetzt folgendermassen gelöst:

Ich schreibe einfach hin, was für Dateierweiterungen erlaubt sind und überprüfe das File mit "explode" auf die Dateiendung:

Code:
if ($_POST[pictures]<>'')
 {
   $filter = explode('.', $_POST[pictures]);
   echo $filter[1];
 }
Die ganze abfrage wird ausgeführt bevor die Datei upgeloadet wird.

Die Variabel $_POST[pictures] beinhaltet den Pfad und den Dateiname. Im Normalfall liefert der oben genannte explode Befehl die Dateiendung zurück. Sollte aber die Datei folgendermassen aussehen: picture.cat_a.jpge dann wird cat_a als Dateiendung angesehen (da $filter[1]!)

Falls jemand noch eine Lösung für Dateinamen mit mehreren "." kennt oder wie man den letzten explode string der Zeile herausfindet, bitte Posten.
schwachfug :P
die datei wird hochgeladen bevor dein phpscript überhaupt anfängt zu laufen. kannst du gerne im manual glaub ich sogar nachlesen. vieleicht hast du glück und kannst mit javascript auf das file-object abeim abschicken zugriefen, aber soweit ich weis ist das gesperrt, allerdings weis ich nciht ob es hier zumindest leserechte vieleicht gibt.

online kannst du dann klar filtern, ob die datei irgendwo hin verschoben wird oder im temp-verzeichnis bleibt und dann gelöscht wird. aber das hochladen kannst du nicht verhindern.

btw www.php.net/pathinfo zeigt dir die dateiendung an.

aber derHund's lösungsansatz ist besser, überprüfe einfach den mimetype da kannst du dir sicher sein dass es ein bild ist.

mfg
robo47
robo47 ist offline  
Alt 15.02.2005, 14:29  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von hhvh
Ich schreibe einfach hin, was für Dateierweiterungen erlaubt sind und überprüfe das File mit "explode" auf die Dateiendung:
Code:
if ($_POST[pictures]<>'')
 {
   $filter = explode('.', $_POST[pictures]);
   echo $filter[1];
 }
1. die Annahme, ein Dateiname hätte ausschließlich nur einen Punkt, ist irrig.
2. findest Du den Dateinamen nicht in $_POST sondern in $_FILES

Zitat:
Die ganze abfrage wird ausgeführt bevor die Datei upgeloadet wird.
3. Falsch, weil das Script erst dann ausgeführt wird, wenn die zum POST Request gehörenden Daten vollständig übermittelt wurden.
 
Alt 15.02.2005, 14:39  
Gast
 
Beiträge: n/a
Standard

Folgend die ganze Prüf-Verschachtelung:

PHP-Code:
<?php
 
if ($_POST[siteID]=='save')
  {
   if (
$_POST[cat]<>'0')
    {
     if (
$_POST[pictures]<>'')
      {
       
$filter explode('.'$_POST[pictures]);
        if (
$filter[1]=='jpg' or $filter[1]=='jpeg' or $filter[1]=='gif' or $filter[1]=='png' or $filter[1]=='bmp')
         {
          echo 
"Gefiltert und Gespeichert";

  if (isset(
$_FILES['pictures']) and ! $_FILES['pictures']['error']) {
    
move_uploaded_file($_FILES['pictures']['tmp_name'], "./gallery/$fle");
    
printf("Die Datei %s steht jetzt als " .
          
"$fle zur Verfügung.
\n"
,
      
$_FILES['pictures']['name']);
    
printf("Sie ist %u Bytes groß und vom Typ %s.
\n"
,
      
$_FILES['pictures']['size'], $_FILES['pictures']['type']);
  }

         }
        else
         {
          echo 
"[b]Die Datei ist keine oder eine ung&uuml;ltige Bilddatei![/b]";
         }
      }
     else
      {
       echo 
"[b]Bitte w&auml;hlen Sie eine Datei aus bevor Sie auf \"Upload\" klicken.[/b]";
      }
    }
   else
    {
     echo 
"[b]Bitte w&auml;hlen Sie eine Kategorie aus![/b]";
    }
  }

?>
dadurch wird zuerst alles überprüft bevor es uploadet. Ich habs getestet und es läd die Datei wirklich erst auf den Server wenn alle bedingunen erfüllt sind.

$_POST[picture] ist nichts anderes als der angegebene Pfad der Lokal ausfindig gemacht wird.
 
Alt 15.02.2005, 14:46  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

argh sachmal weißt du nicht, das strings grundsätzlich in anführungszeichen bzw. hockommas gehören?
es muss
PHP-Code:
$_POST["siteID"
heißen, genauso auch bei den anderen.

Außerdem, wie meikel schon sagte kann ein Dateiname auch mehr als einen Punkt haben, also darf es nicht
PHP-Code:
$filter[1
heißen, sondern muss
PHP-Code:
$filter[count($filter-1)] 
heißen, z.b. kann der Dateiname auch "fake.jpeg.exe" heißen.
Buhmann ist offline  
Alt 15.02.2005, 14:48  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von hhvh
dadurch wird zuerst alles überprüft bevor es uploadet.
Falsch. Dein Script wird erst dann ausgeführt, wenn das File auf dem Server eingetroffen ist.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
input type="file" mit css formatieren rooomka HTML, Usability und Barrierefreiheit 10 25.03.2009 22:05
Filter nach Group-Field Nalincah Datenbanken 3 01.10.2007 17:08
PNG trotz Filter noch als volle Link-Fläche max-dhom HTML, Usability und Barrierefreiheit 10 23.01.2007 21:48
Bitte Funktion uns Filter prüfen. Danke! PHP Tipps 2006 10 28.11.2006 20:04
Hover mit Filter pc-freak HTML, Usability und Barrierefreiheit 7 28.09.2006 16:09
[Erledigt] Filter mit preg_match PHP-Fortgeschrittene 9 01.01.2006 10:22
filter erstellen PHP Tipps 2007 11 07.11.2005 17:40
Filter realisieren PHP Tipps 2005-2 2 21.10.2005 13:54
effektiver Filter für Namens-Eingaben? PHP Tipps 2005-2 10 19.07.2005 21:57
Von input type="file" den Sytle ändern? HTML, Usability und Barrierefreiheit 10 10.04.2005 16:51
preg_match_all() Text zwischen Anführungszeichen raus filter PHP Tipps 2005 16 26.03.2005 02:02
<input type="file" VALUE="???" tapferesschneiderlein HTML, Usability und Barrierefreiheit 5 16.12.2004 14:56
Volltextsuche / Filter Datenbanken 0 17.11.2004 11:23
Spam filter PHP-Fortgeschrittene 7 06.09.2004 16:50
Filter programmieren um Websitelinks einzulesen?? PHP Tipps 2004 3 07.07.2004 09:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php file filter, input type file filter, html filefilter, php filefilter, html input file filter bilder, php dir file filter, php file filefilter, filefilter dateiendung, filter file php, type=\file\ filter, javascript type=\file\ filter, input type dateityp filter setzen, php filter für dateitypen dateiupload, google dateiendung filtern, bilder upload filter, php datei hochladen dateiendung filtern, filter dateiendung html, filefilter mit mehreren, html type=\file\ filter, auf active x mit $_post zugreifen

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.