| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

06-07-2009, 15:12
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Wert bleibt nicht gesetzt
Hallo,
Ich habe ein formular, da hats textfelder, textarea und ein upload für ein bild drin:
PHP-Code:
<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!
|

06-07-2009, 15:14
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
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?
|

06-07-2009, 15:21
|
|
|
Zitat:
Zitat von combie
Wäre ja auch die Wurzel des übelsten Alptraums !
|
Dann würde so manche Spitzbuben Danke sagen.
|

06-07-2009, 15:22
|
|
Wyveres
Registrierter Benutzer
|
|
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
|
|
OffTopic:
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.
|

06-07-2009, 15:36
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
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"?
PHP-Code:
...
...
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
...
...
|

06-07-2009, 15:41
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von RamonaS
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.
Zitat:
|
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.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

06-07-2009, 15:44
|
|
hoangatt
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 1
|
|
move_uploaded_file() = schiebe das File in neue Location
$uploadpic sollte ein Ordner-pfad sein .
|

06-07-2009, 15:46
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Ich kriege Pickel bei den ganzen @ da im Code!
|

06-07-2009, 16:04
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
Zitat von RamonaS
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.
|

06-07-2009, 16:20
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von onemorenerd
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:
PHP-Code:
<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>
|

06-07-2009, 16:23
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von hoangatt
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
|

06-07-2009, 16:27
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
Zitat:
Zitat von wahsaga
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.
|

06-07-2009, 16:37
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
....das könnte den einen oder anderen ärgern/überfordern.
|
Ja!
|

06-07-2009, 17:41
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
Zitat von RamonaS
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!
|

06-07-2009, 20:50
|
|
RamonaS
Registrierter Benutzer
|
|
Registriert seit: Mar 2009
Beiträge: 177
|
|
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:
PHP-Code:
$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?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|