Bei Upload Name mitsenden PHP
Von: , 12.01.2010 03:35 Uhr
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
<form method="post" action="upload.php" enctype="multipart/form-data">
<p class="post">Datei auswählen</p><input type="file" name="uploadfile" size="7"/><p class="post">Dein Name</p><input name="Name" size="25" type="text"/><p class="post">Sicherheitscode</p><p class="post"> <img style="vertical-align:middle;" src="captcha_src/capmaker.php" alt="tattoo"/> <input name="cap" type="text" size="7"/></p><p class="post"><input type="submit" value="Datei hochladen"/></p><br/>
</form>
Das Inputfeld "Name" habe ich ja einfach hinbekommen..nun das Actionformular:<br><br>
<?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='[E-Mail-Adresse entfernt]';
$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. <br/>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].'<br>';}}
} //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<=time())[E-Mail-Adresse entfernt]
##########################
$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!=""){
// Prüfen ob IP schon vorhanden
if(file_exists('ipsperre/'.$ip1)){$fehler=1; $ausgabe=$e[6].'<br>';}
//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 <tattoofan uploadformular>");
# 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 <tattoofan uploadformular>","-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 '<br><a href="javascript:history.back();">zurück</a><br>';
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].'<br>'; $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].'<br>'; $fehler=1;}
if(!in_array($mime, $from_mime)){$errnumbers.=$e[2].'<br>'; $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].'<br>'; $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].'<br>'; $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].'<br>'; $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;}
?>
<head>
<meta http-equiv="refresh" content="3; URL=http://www.provider.de/galerie/">
</head>
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
