Archiv verlassen und diese Seite im Standarddesign anzeigen : Wert bleibt nicht gesetzt
Hallo,
Ich habe ein formular, da hats textfelder, textarea und ein upload für ein bild drin:
<input type="file" name="datei" value="<?php echo $_POST['datei']?>" />
Wenn benutzer etwas falsch eingibt, dann wird das script erneut aufgerufen und alle werte der felder bleiben gesetzt...ausser dem vom type=file.
Wie kann man das problem beheben, das feld soll auch belegt bleiben!
type="file" kann man nicht vorbesetzen !!!
Wäre ja auch die Wurzel des übelsten Alptraums !
Schiebe die Datei in ein eigenes Temp Verzeichnis.
Warum sollte sie auch 2 mal hochgeladen werden sollen?
Wäre ja auch die Wurzel des übelsten Alptraums !
Dann würde so manche Spitzbuben Danke sagen.
Währe ein Schöner Alptraum, Auslesen was fürn system kommt Windows Linux und den Rechner einfach anweisen bestimmte Dateien hoch zu laden.
Würde vieles Einfacher mache *HUST* *lach*
Nein wie combie schon sagte das geht nicht und wird Hoffentlich niemals gehen.
speichere einfach die datei zwischen, merk dir in nem hidden field das sie oben ist. wenn ja feld nicht wieder anzeigen sondern text ansonsten feld anzeigen.
Danke für die antworten.
Ich hoffe ihr habt mich richtig verstanden. Es soll kein Wert vorbelegt werden, sondern nach dem Abschicken soll der pfad in dem fenster dort drin erhalten bleiben, so wie in den normalen textfeldern auch.
Ok wenn das nicht machbar ist, dann wolle ich mal fragen wie man das dann macht:
Ich habe im bildupload u.a. diesen code drin, kann man da das "merken"?
...
...
if(!is_dir($origpic))
{@umask(000); @mkdir($origpic);} # Verz. für die Originalbilder erstellen, wenn es noch nicht existiert
$upload_pic=strtolower($origpic.$date.".jpg"); # Pfad & Dateiname für Originalbild
if(@move_uploaded_file($_FILES['datei']['tmp_name'],$upload_pic)) # Originalbild speichern
...
...
Es soll kein Wert vorbelegt werden, sondern nach dem Abschicken soll der pfad in dem fenster dort drin erhalten bleiben, so wie in den normalen textfeldern auch.
Ja - das nennt man bei Formularfeldern allgemein sie mit Werten vorbelegen.
Ich habe im bildupload u.a. diesen code drin, kann man da das "merken"?
"Merken" kann man bspw. per Session, oder auch durch Weitergabe von Daten in versteckten Formularfeldern.
hoangatt 06-07-2009, 15:44 move_uploaded_file() = schiebe das File in neue Location
$uploadpic sollte ein Ordner-pfad sein .
Ich kriege Pickel bei den ganzen @ da im Code!
onemorenerd 06-07-2009, 16:04 Es soll kein Wert vorbelegt werden, sondern nach dem Abschicken soll der pfad in dem fenster dort drin erhalten bleiben, so wie in den normalen textfeldern auch.
Das geht mit File-Felder nicht, das sie kein Value-Attribut haben. Du kannst höchstens statt des File- ein Textfeld ausgeben und disabled setzen. Allerdings ist dir der Pfad überhaupt nicht bekannt, den ein User voher im Filefeld sah. Und auch nicht jeder Browser zeigt überhaupt einen Pfad an. Safari zum Beispiel nicht. Also beschränke dich am besten auf den Dateinamen.
Noch besser: Zeige eine Vorschau des Bildes an. Das kann Mensch besser erkennen/kontrollieren/akzeptieren als einen möglicherweise kryptischen Dateinamen, wie sie heute von Digitalkameras erzeugt werden.
Noch besser: Zeige eine Vorschau des Bildes an.
Das hielt ich bis vor kurzen als eine super idee, aber mein script dafür läuft im FF garnicht, also kein bild sichtbar, und im ie 7, 8 glaub ich auch nicht :-(
Wenn sich das mal jemand anschauen kann, warum das nicht geht:
<script type="text/javascript"><!--// JS-Funktion für die Vorschaubildanzeige (nur im MSIE6)
function FotoAnzeigen(Quelle)
{if(document.getElementById("Vorschaufoto"))
{var Quellfoto=document.getElementById("Vorschaufoto");
if(Quelle)
{Dateiendung=Quelle.substring(Quelle.lastIndexOf(".")+1)
if(Dateiendung.toLowerCase()!="jpg" && Dateiendung.toLowerCase()!="jpeg")
{var Fehlermeldung="Fehler: Sie dürfen nur Bilder im JPEG-Format hochladen!\n(Das sind Bilder mit der Dateiendung: .JPG oder .JPEG)"; alert(Fehlermeldung);
document.getElementById("Vorschaufoto").value=""; Quellfoto.src="blank.gif"; return false;
}
else {Quellfoto.src=Quelle; return true;}
}
else {return;}
}
else {return;}
}
//--></script>
move_uploaded_file() = schiebe das File in neue Location
$uploadpic sollte ein Ordner-pfad sein .
Ja klar ist das ein ordner + bildname + endung:
$upload_pic=strtolower($origpic.$date.".jpg"); # Pfad & Dateiname für Originalbild
$origpic = der pfad
Ja - das nennt man bei Formularfeldern allgemein sie mit Werten vorbelegen.
"Merken" kann man bspw. per Session, oder auch durch Weitergabe von Daten in versteckten Formularfeldern.
Ja klasse, per session finde ich gut...denen vertraue ich noch am meisten :-)
Dann schreibe ich der session den dateinamen rein bevor die sicherheitsprüfungen loslegen. Danke
Naja normalerweise würde ich das auch so lassen, es könnte aber nervig werden wenn, der besucher:
- alles eingibt, dann kommt ne fehlermeldung, das die captcha nicht stimmt,
- dann gibt er die richtige captcha-nr ein, dann kommt ne neue fehlermeldung, das kein bild gewählt wurde!
- schlußendlich muß er eine neue captchnummer + uploadbild wählen....
....das könnte den einen oder anderen ärgern/überfordern.
....das könnte den einen oder anderen ärgern/überfordern.
Ja!
onemorenerd 06-07-2009, 17:41 Das hielt ich bis vor kurzen als eine super idee, aber mein script dafür läuft im FF garnicht, also kein bild sichtbar, und im ie 7, 8 glaub ich auch nicht :-(
Warum machst du das mit Javascript? Erzeuge serverseitig ein fertiges img-Tag.
Die Validierung des Files muss natürlich auch komplett serverseitig stattfinden ... und eine Dateiendung sagt absolut nichts über den Inhalt der Datei aus!
Hallo onemorenerd
Ich prüfe schon genau ob das vermeindliche bild auch ein bild ist und nicht etwa eine php-datei mit der endung jpg :-)
zum bleistift so:
$format=getimagesize($upload_pic);
if($format[2]==2) # Prüfen ob die Datei wirklich ein echtes JPG-Bild ist!
Mit JS wollte ich das machen, damit der user nicht 1min warten muß bis das 3,1MB bild hochgeladen ist...daher vor dem upload die bildvorschau per javascript local, ok?
Mit JS wollte ich das machen, damit der user nicht 1min warten muß bis das 3,1MB bild hochgeladen ist...daher vor dem upload die bildvorschau per javascript local, ok?
Du kommst mit JS nicht an die Datei.
Vergiss es!
Du kommst mit JS nicht an die Datei.
Höchstens an den Pfad, und den könnte man dann mit file://-Protokoll im src-Attribut eines IMG-Objektes verwenden ...
Ist zwar vom Denkansatz her richtig, aber aktuelle Browser wie bspw. FireFox machen einem da in Defaulteinstellung auch einen Strich durch die Rechnung.
Denn das könnte man u.U. nutzen um zu überprüfen, ob auf dem Client bestimmte Pfade/Dateien existieren - und das darf mit Mitteln von HTML und JS nicht sein.
|
-
- |