Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Wert bleibt nicht gesetzt [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wert bleibt nicht gesetzt


 
RamonaS
06-07-2009, 15:12 
 
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!

 
combie
06-07-2009, 15:14 
 
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?

 
piratos
06-07-2009, 15:21 
 
Wäre ja auch die Wurzel des übelsten Alptraums !


Dann würde so manche Spitzbuben Danke sagen.

 
Wyveres
06-07-2009, 15:22 
 
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.

 
RamonaS
06-07-2009, 15:36 
 
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
...
...

 
wahsaga
06-07-2009, 15:41 
 
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 .

 
combie
06-07-2009, 15:46 
 
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.

 
RamonaS
06-07-2009, 16:20 
 
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>

 
RamonaS
06-07-2009, 16:23 
 
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

 
RamonaS
06-07-2009, 16:27 
 
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.

 
combie
06-07-2009, 16:37 
 
....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!

 
RamonaS
06-07-2009, 20:50 
 
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?

 
combie
06-07-2009, 21:38 
 
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!

 
wahsaga
07-07-2009, 00:07 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:26 Uhr.