Bei Upload Name mitsenden PHP

Guten Tag,

Ich habe folgendes Problem. Ich habe ein Uploadformular, wo ich den Besuchern meiner Seite die Möglichkeit gebe, ein Bild hochzuladen. Das klappt auch alles wunderbar. Nun möchte ich aber noch, das der User seinen Namen eingeben muss und der mir dann ebenfalls in der Mail mitgeschickt wird. Ich hab schon sehr viel getestet, komme aber nicht weiter.

Hier das Uploadformular

Datei auswählen Dein Name Sicherheitscode  

Das Inputfeld „Name“ habe ich ja einfach hinbekommen…nun das Actionformular:

<?php $zielordner='upload/'; // ggf. Schreibrechte (CHMOD) erteilen!
$upload\_limitieren=0; // mögliche Werte 0 und 1 (aus/an) $upload\_groesse=500; // in Kilobyte $mailsenden=1; // mögliche Werte 0 und 1 (aus/an) $emailadresse='[[email protected]](mailto:[email protected])'; $betreff='Neuer Upload'; $captcha\_verwenden=1; // mögliche Werte 0 und 1 (aus/an) $ip\_sperre=0; // mögliche Werte 0 und 1 (aus/an) $ip\_sperrzeit=10; // in Minuten $erlaubte\_dateiendungen=array('jpg','jpeg','gif','png'); $erlaubte\_mimetypen=array("text/plain","image/pjpg","image/pjpeg","image/gif","image/jpg","image/peng","image/jpeg","image/bmp","image/x-windows-bmp","image/tiff","image/x-tiff","application/plain", "application/x-photoshop","application/octet-stream","application/postscript","application/xms-word","application/mspowerpoint","application/powerpoint","application/vnd.ms-powerpoint","application/x-mspowerpoint","application/excel","application/x-excel","application/vnd.ms-excel","application/x-msexcel","application/zip","application/x-zip","application/x-compressed","application/x-zip-compressed","audio/mid","audio/mp3","application/x-winamp-plugin","interface/x-winamp-skin","audio/x-mp3"); $e[0]="Uploadfehler: Die erlaubte Dateigröße $upload\_groesse kb ist überschritten"; $e[1]="Uploadfehler: Die Dateiendung ist nicht erlaubt."; $e[2]="Uploadfehler: Der Mime-Typ der Datei ist fehlerhaft oder wird nicht unterstützt."; $e[3]="Beim Upload ist ein Fehler aufgetreten."; $e[4]="Uploadfehler: Keine Datei ausgewählt oder unbestimmter Fehler aufgetreten"; $e[5]="Der Sicherheitscode (Captcha) ist nicht korrekt"; $e[6]="Die IP-Sperre ist für $ip\_sperrzeit Minuten aktiv."; $e[200]="Der Upload war erfolgreich. Dein Bild wird nach erfolgreicher Prüfung freigeschalten. Du wirst in 3 Sekunden weitergeleitet. Sollte das nicht funktinieren, klicke bitte auf zurück."; $datum=date("d.m.Y"); $uhrzeit=date("H:i"); $ausgabe=''; if($captcha\_verwenden==1){ session\_start(); if(isset($\_POST['cap'])){$eingabe=mig($\_POST['cap']); if($eingabe=="" || $eingabe!=$\_SESSION['cod']){$fehler=1; $ausgabe=$e[5].' ';}} } //endcaptchaprüfung if($ip\_sperre==1){ ########################## $ip\_sperrzeit\_sec=$ip\_sperrzeit\*60; // Ordner ipsperre durchscannen $oeffnevz = openDir('ipsperre'); while($filename = readDir($oeffnevz)){ if($filename != "." && $filename != ".."){ // datei entfernen if(file\_exists('ipsperre/'.$filename)){$tsofthefile=filemtime('ipsperre/'.$filename)+$ip\_sperrzeit\_sec; // fileatime funkt. scheinbar bei MS nicht richtig daher filemtime if($tsofthefile';} //speichern (erst nach erfolgreichem Upload) /\* $nix=''; $iplog = fopen('ipsperre/'.$ip1, "w+"); fwrite($iplog, $nix); fclose($iplog); \*/ } ########################## } //endipsperre if(!isset($fehler)){ $uploadresult=dotheupload('uploadfile', $zielordner, $upload\_limitieren, $upload\_groesse, $erlaubte\_dateiendungen, $erlaubte\_mimetypen, $e, $ip\_sperre); ## das dotheupload spuckt Array aus ## [0] wert 0 = Feld nicht gefüllt, kein Upload vorgenommen wert 1= Upload vorgenommen ## [1] wert 0 = Upload nicht erfoglreich wert 1= Upload erfolgreich ## [2] pfad und dateiname ## [3] string mit gesammelten Fehlermeldungen ## [4] Dateiendung (ohne Punkt) #print\_r($uploadresult); if($uploadresult[0]==1){//Uploaddatei vorhanden if($uploadresult[1]==0){$ausgabe.=$uploadresult[3];} else{ ############################### ## Mailsenden if($mailsenden==1 && $emailadresse!="" && $betreff!=""){ $mailtext=" Upload ausgeführt am $datum, $uhrzeit Uhr Datei: $uploadresult[2] "; @mail($emailadresse, $betreff, $mailtext, $Name, "\nFrom: $emailadresse "); # manche Provider fordern aus Spamschutzgründen einen Zusatz (-f) im Mailbefehl. Sollte der # Mailversand trotz mailsenden=1 nicht funktionieren, entfernen Sie das Rautesymbol (#) vor dem # folgenden Mailbefehl: # @mail($emailadresse, $betreff, $mailtext, $Name, "\nFrom: $emailadresse ","-f $emailadresse"); ############# /\* $testmail = fopen("mail.txt", "w+"); fwrite($testmail, $mailtext); fclose($testmail); \*/ ############# } //endmailsenden ################################ $ausgabe.=$e[200];} }else{$ausgabe.=$e[4];} } //Fehler bei Captcha oder IP vorhanden echo $ausgabe; echo ' [zurück](javascript:history.back();) '; function dotheupload($feldname, $zielpfad, $upload\_limitieren, $size\_kb, $allowed\_endings=array(), $from\_mime=array(), $e=array(),$ip\_sperre){ $errnumbers=''; $ucffeldname=ucfirst($feldname); if($upload\_limitieren==1){ //Limitierung eingeschaltet if($\_FILES[$feldname]['size'] \> (1000\*$size\_kb)){$errnumbers.=$e[0].' '; $fehler=1;} } if(!$\_FILES[$feldname]['name']){$fehler=1; $interner\_hinweis=0; /\* Uploadfeld nicht gefüllt \*/ }else{ $interner\_hinweis=1;} if(!$\_FILES[$feldname]['error'] && !isset($fehler)){ // $endung = strrchr($\_FILES[$feldname]['name'],'.'); // sucht das letzte Vorkommen e. Punktes $endung\_mp = strtolower($endung); // Endung mit Punkt $endung = str\_replace(".", "", strtolower($endung)); // Punkt weg $mime = $\_FILES[$feldname]['type']; ## Prüfung ob erlaubte Dateiendung okay geht if(!in\_array($endung, $allowed\_endings)){$errnumbers.=$e[1].' '; $fehler=1;} if(!in\_array($mime, $from\_mime)){$errnumbers.=$e[2].' '; $fehler=1;} $zielname=str\_replace($endung\_mp, "", $\_FILES[$feldname]['name']); ## Sonderzeichen rausfiltern $zielname= strtolower(preg\_replace('/[^a-zA-Z0-9\_.+-]/', '', $zielname)); $pfile=$zielpfad.$zielname.'.'.$endung; if(!isset($fehler)){ ## falls vorhanden, suffix dran, wieder prüfen $i=0; while(file\_exists($pfile)){ $pfile=$zielpfad.$zielname.'\_'.$i.'.'.$endung; $i++;} ## ODER ## checken ob eine so benannte datei schon existiert #if(file\_exists($pfile)){$errnumbers.=$e[3].' '; $fehler=1;} } if(!isset($fehler)){ ## uploadvorgang @move\_uploaded\_file($\_FILES[$feldname]['tmp\_name'], $pfile); @chmod($pfile, 0644); ## datei exisitert nicht? if(!file\_exists($pfile)){$errnumbers.=$e[3].' '; $fehler=1;} ## wenn Datei exitiert, aber Dateigröße 0Byte, dann weglöschen und ERROR ausgeben. if (get\_size($pfile)=="0"){@unlink($pfile); $errnumbers.=$e[3].' '; $fehler=1; } } // wenn bis hierher kein Fehler dann alles roger! if(!isset($fehler)){$result=1; session\_start(); session\_unset(); session\_start(); ########################## if($ip\_sperre==1){ $ip1=$\_SERVER['REMOTE\_ADDR']; if($ip1==""){if(getenv(HTTP\_X\_FORWARDED\_FOR)){ $ip=getenv('HTTP\_X\_FORWARD\_FOR');}else{$ip=getenv('REMOTE\_ADDR');}} if($ip1!=""){$nix=''; $iplog = fopen('ipsperre/'.$ip1, "w+"); fwrite($iplog, $nix); fclose($iplog); }} ########################## } else {$result=0;} ########################## } $ergebnisse=array( '0' =\> $interner\_hinweis, '1' =\> $result, '2' =\> $pfile, '3' =\> $errnumbers, '4' =\> $endung ); return $ergebnisse; } //endfunction function get\_size($path) { if(!is\_dir($path))return filesize($path); $dir = opendir($path); while($file = readdir($dir)) { if(is\_file($path."/".$file))$size+=filesize($path."/".$file); if(is\_dir($path."/".$file) && $file!="." && $file !="..")$size +=get\_size($path."/".$file); } return $size; } function mig($get){ $get=htmlentities(strip\_tags($get)); $get=trim($get); return $get;} ?\> Wo kommt jetzt der Befehl für den Namen rein? Muss es eine "IF-Anweisung" sein? Ich habe es schon probiert, aber irgendwie komme ich da nicht weiter, da es ein fertiges Script war. Vielen Dank für die Mühe

Guten Tag,

Ich habe folgendes Problem. Ich habe ein Uploadformular, wo
ich den Besuchern meiner Seite die Möglichkeit gebe, ein Bild
hochzuladen. Das klappt auch alles wunderbar. Nun möchte ich
aber noch, das der User seinen Namen eingeben muss und der mir
dann ebenfalls in der Mail mitgeschickt wird. Ich hab schon
sehr viel getestet, komme aber nicht weiter.

[…]

Wo kommt jetzt der Befehl für den Namen rein? Muss es eine
„IF-Anweisung“ sein? Ich habe es schon probiert, aber
irgendwie komme ich da nicht weiter, da es ein fertiges Script
war.

Vielen Dank für die Mühe

Ich verstehe das Problem nicht ganz. Sie haben ein Formular mit einem Upload-Feld und einem Text-Feld. Sie übergeben das Formular mit POST. Bei der Auswertung des Formulars im Script stehen die Daten unter $_FILES bzw. $_POST zur Verfügung. Ihr Textfeld hat den Namen „cap“. Dementsprechend können Sie im Script die Nutzereingabe aus $_POST[„cap“] auslesen und auch per Mail weiterleiten.
Oder was haben Sie vor?

Beste Grüße,
Sebastian Flad

Hallo,

Wenn der Name in der Email mitgesendet werden soll, kannst du den Wert aus dem Feld in eine Variable eintragen.

Die Variable sollte in der „IF-Anweisung“ sein wo du das Formular absendest ( if(isset($_POST){ … } ).

Und bei ## Mailsenden trägst du in den Text die Variable $name o.a. ein.

Falls dies nicht funktioniert, kann ich dir gerne Hilfe über icq geben: 203994833

mfg


Hallo,

Wenn der Name in der Email mitgesendet werden soll, kannst du
den Wert aus dem Feld in eine Variable eintragen.

Die Variable sollte in der „IF-Anweisung“ sein wo du das
Formular absendest ( if(isset($_POST){ … } ).

Hier habe ich nun das eingegeben:
session_start();
if(isset($_POST[‚name‘]));
if(isset($_POST[‚cap‘])){$eingabe=mig($_POST[‚cap‘]);
if($eingabe=="" || $eingabe!=$_SESSION[‚cod‘]){$fehler=1; $ausgabe=$e[5].’
';}}

Und bei ## Mailsenden trägst du in den Text die Variable $name
o.a. ein.

Und das habe ich hier gemacht:

Mailsenden

if($mailsenden==1 && $emailadresse!="" && $betreff!=""){

$mailtext="

Upload ausgeführt am $datum, $uhrzeit Uhr durch $name
Datei: $uploadresult[2]

";

Falls dies nicht funktioniert, kann ich dir gerne Hilfe über
icq geben: 203994833

mfg

Leider hab ich kein ICQ, aber es tut sich dort nichts. Ich kann zwar beim Upload den Namen eingeben, (Feldname ist Name), aber es wird nichts angezeigt!?! Wo liegt mein Denkfehler? Ich bin ein bisschen überfordert.

MfG


Hier habe ich nun das eingegeben:
session_start();
if(isset($_POST[‚name‘]));
if(isset($_POST[‚cap‘])){$eingabe=mig($_POST[‚cap‘]);
if($eingabe=="" || $eingabe!=$_SESSION[‚cod‘]){$fehler=1;
$ausgabe=$e[5].’
';}}

Ist nicht richtig :smiley:

Du musst dort wo du Überprüfst ob das Formular abgesendet wurde die Variable vergeben.

Oder trag genau davor, wo die Email generiert wird, bzw. der Email-Text in eine Variable geschrieben wird, die Variable $name so ein:

$name = $_POST[‚Name‘];

Damit sollte es eigentlich funktionieren :wink:

Guten Tag,
in die auf der Seite muss
aber hast du ja soweit und dann in der php datei musst du den Namen wieder empfangen:
$nick = $_POST[„nick“]; einfach oben nach

Guten Tag,
in die auf der Seite muss
aber hast du ja soweit und dann in der php datei musst du den Namen wieder empfangen:
$nick = $_POST[„nick“]; einfach oben nach

Hallo

Danke für die Mühe

Ich habs. habe die Anweisung:
if(isset($_POST[„name“]))
{
$name = $_POST[„name“];
}

eingegeben. Es funktioniert

Danke

Hallo Paul

PEREKT!!!

Danke, es funktioniert :smile:

MfG, Nico

hallo

ich bedanke mich recht herzlich. es klappt nun wunderbar. danke für die mühe und die geduld. :smile:

MfG, Nico

Kein problem :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]