php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.01.2009, 23:09  
Neuer Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 14
Atsinganos befindet sich auf einem aufstrebenden Ast
Standard Kontaktformular - Meinungen

Hallo,

ich brauche mal Eure Meinung.

Hier mal einen Auszug meines PHP-Code.
PHP-Code:
<?php
//erstmal Variablen definieren
$pagename="test.php";
$error=$name=$plz=$ort=$strasse=$nr=$fon=$email=$UPFILE=$mitteilungen="";
$pdfpfad 'order/';

// URL zum Uploadverzeichnis
$URL 'http://www.meine_website/uploader/order';

// max. Uploadgroesse in KB
$max_upl_size 1000;

// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben
$arr_erlaube_dateityp = array(pdf);

// an wen geht die Mail ?
$empfaenger="ich@online.de";

if(isset(
$_POST['senden'])) {
    
// es wurde abschicken gedrückt, also erst mal die Felder holen
    
$name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
    
$plz=get_magic_quotes_gpc() ? stripslashes($_POST['plz']) : $_POST['plz'];
    
$ort=get_magic_quotes_gpc() ? stripslashes($_POST['ort']) : $_POST['ort'];
    
$strasse=get_magic_quotes_gpc() ? stripslashes($_POST['strasse']) : $_POST['strasse'];
    
$nr=get_magic_quotes_gpc() ? stripslashes($_POST['nr']) : $_POST['nr'];
    
$fon=get_magic_quotes_gpc() ? stripslashes($_POST['fon']) : $_POST['fon'];
    
$email=get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
    
$UPFILE=get_magic_quotes_gpc() ? stripslashes($_POST['UPFILE']) : $_POST['UPFILE'];
            
    
//Mitteilungen setzen sich aus allen Eingaben zusammen
    
$mitteilungen=get_magic_quotes_gpc() ? stripslashes($_POST['mitteilungen']) : $_POST['mitteilungen'];
    
    
//Form-Attacken verhindern (suche nach \r\n oder \n)
    
    
if(strpos($name,"\r\n")>|| strpos($name,"\n")>0) {
        
DebugAttack(substr($name,strpos($name,"\r\n")));
        
$name="";
    }
    if(
strpos($plz,"\r\n")>|| strpos($plz,"\n")>0) {
        
DebugAttack(substr($plz,strpos($plz,"\r\n")));
        
$plz="";
    }
    if(
strpos($ort,"\r\n")>|| strpos($ort,"\n")>0) {
        
DebugAttack(substr($ort,strpos($ort,"\r\n")));
        
$ort="";
    }
    if(
strpos($strasse,"\r\n")>|| strpos($strasse,"\n")>0) {
        
DebugAttack(substr($strasse,strpos($strasse,"\r\n")));
        
$strasse="";
    }
    if(
strpos($nr,"\r\n")>|| strpos($nr,"\n")>0) {
        
DebugAttack(substr($nr,strpos($nr,"\r\n")));
        
$nr="";
    }
    if(
strpos($fon,"\r\n")>|| strpos($fon,"\n")>0) {
        
DebugAttack(substr($fon,strpos($fon,"\r\n")));
        
$fon="";
    }
    if(
strpos($email,"\r\n")>|| strpos($email,"\n")>0) {
        
DebugAttack(substr($email,strpos($email,"\r\n")));
        
$email="";
    }
    if(
strpos($UPFILE,"\r\n")>|| strpos($UPFILE,"\n")>0) {
        
DebugAttack(substr($UPFILE,strpos($UPFILE,"\r\n")));
        
$UPFILE="";
    }
        
    
// wir setzen einen Flag, um Fehler zu registrieren
    
$ok=true;
    
    
//jetzt werden die Felder überprüft
    
if ((!(preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$name))) && (strlen($name)>3) || $name=="")
    {
        
$err[0]=true//Fehler merken
        
$ok=false;    //Fehlerflag setzen
        
$error.='Bitte kontrollieren Sie den angegebenen Namen.<br>'// Fehlertext
    
}
    
    
    if ((!(
preg_match("/^[0-9]{5}$/",$plz))) && (strlen($plz)<4) || $plz=="")
    {
        
//PLZ ist ungültig
        
$err[1]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Postleitzahl.<br>';
    }
    
    if ((!(
preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$ort))) && (strlen($ort)>3) || $ort=="")
    {
        
//Ort ist ungültig
        
$err[2]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie den angegebenen Ort.<br>';
    }
    
    if ((!(
preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$strasse))) && (strlen($strasse)>3) || $strasse==""
    {
        
//Strasse ist ungültig
        
$err[3]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Strasse.<br>';
    }
    
    if ((!(
preg_match("/^[a-zA-Z0-9]+$/s",$nr))) && (strlen($nr)>1) || $nr==""
    {
        
//Nr ist ungültig
        
$err[4]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Nummer.<br>';
    }
    
    
    if ((!(
preg_match("/^[0-9\+\(\)\/\-\s]+$/",$fon))) && (strlen($fon)>5) || $fon=="")
    {
        
//Telefonnummer ist ungültig
        
$err[5]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Telefonnummer.<br>';
    }
    
    if ((!(
preg_match("/^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$/",$email))) && (strlen($email)>3) || $email=="")
    {
        
//email-Adresse ist ungültig
        
$err[6]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
    }
    
    
// Upload-Feld überprüfen
        
if (empty($UPFILE)) {
               
$err[7]=true;
            
$ok=false;
            
$error.='Bitte kontrollieren Sie das Feld Dateianhang.<br>';
    }
    
    if (!isset(
$_POST['senden'])) {

    
// Uploadform ausgeben    
    
    
} else {
    
//-----------------------------------------------------------------//
    // Upload ausfuehren
    //-----------------------------------------------------------------//
    
    
$erlaubte_extensionen join(', ',$arr_erlaube_dateityp);
    
    
// Uploaddurchlauf Start
    
for ($i=0$i<count($_FILES['UPFILE']['name']); $i++) {
    
    if (
$_FILES['UPFILE']['name'][$i] == '') {
    continue;
    }
    
    
// Zeichenfilter
    
$File strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#''___________');
    
    
// Dateiendung ermitteln
    
$punkt strrpos($File'.');
    
$laenge strlen($File);
    
$endung strtolower(substr($File, -($laenge $punkt 1)));
    
$dname substr($File0, -($laenge $punkt 1));
    
    
// Fehlerausgabe wenn Dateiendung nicht erlaubt
    
if (!in_array($endung$arr_erlaube_dateityp)) {
        
//Falsche Dateiendung
        
$err[8]=true;
        
$ok=false;
        
$error.="Die Dateiendung <b>$endung</b> ist nicht erlaubt.<br>";
        continue;
    }
        
    
// Dateigroessencheck
    
if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size 1024)) {
        
$zugross round($_FILES['UPFILE']['size'][$i]/10242);
        
$err[9]=true;
        
$ok=false;
        
$error.="Datei zu gro&szlig;<br>";
        continue;
    }
    
    switch(
$_FILES['UPFILE']['error'][$i]) {
        case 
0:
        break;
        case 
1:
        
$err[10]=true;
        
$ok=false;
        
$error.="Die Datei ist zu gross<br>";
        continue 
2;
        break;
        case 
2:
        
$err[11]=true;
        
$ok=false;
        
$error.="Die Dateigr&ouml;&szlig;e  &uuml;bersteigt das erlaubte Limit von $max_upl_size KB <br>";
        continue 
2;
        break;
    }
    
    
$dateipfad_name $pdfpfad.$File;
    
    
    
// hochgeladene Daeien speichern
    
move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $dateipfad_name); 
    
        
// Erfolgs-Meldung ausgeben
        
echo "Der Upload war erfolgreich";
   } 
 }
        
    
// ist alles ok ? dann senden
Wie schätzt Ihr das so von der Sicherheit ein?
Hättet Ihr noch Verbesserungsvorschläge?

Noch ein Problem:
Wo integriere ich am besten die Upload-Fehlermeldung (7), die das Feld überprüft, ob es leer ist. Zur Zeit ist es so, wenn ich alle Felder ausfülle und wegschicke, dann lade ich zwar die Datei hoch, aber es kommt Fehlermeldung(7) und blockiert mir meinen Formmailer.

Ich danke Euch.
Atsinganos ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.01.2009, 23:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ohne Sicherheitsüberlegungen anzustellen nur so viel: Dein Code ist hochgradig ineffektiv: Ständig doppelst Du Bedingungen, anstatt sie zusammenzufassen.
Bsp 1. Es gibt nur eine get_magic_quotes_gpc Einstellung:

PHP-Code:
    $name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
    
$plz=get_magic_quotes_gpc() ? stripslashes($_POST['plz']) : $_POST['plz']; 
vs.
PHP-Code:
if (get_magic_quotes_gpc()) {
  
$namestripslashes($_POST['name']);
  
$plz=stripslashes($_POST['plz']);
  }
else {
  
$name$_POST['name'];
  
$plz=$_POST['plz'];
  } 
noch besser (DRY Prinzip)
PHP-Code:
$setting = array (
  
'name' => 'name' ,
  
'plz' => 'plz'
  
);

if (
get_magic_quotes_gpc()) {
  foreach (
$setting as $varname => $key) {
    $
$varname stripslashes ($_POST[$key]);
    }
  }
else {
  foreach (
$setting as $varname => $key) {
    $
$varname $_POST[$key];
    }
  } 
Bsp 2:
PHP-Code:
    if(strpos($name,"\r\n")>|| strpos($name,"\n")>0) {
        
DebugAttack(substr($name,strpos($name,"\r\n")));
        
$name="";
    } 
- \r\n enthält \n - Abfrage ist also doppelt
- strpos \r\n wird doppelt ausgeführt
- Position 0 ist auch ein gültiger Offset (und ungleich FALSE), wird also nicht erkannt
- Attacke wäre hinreichendes Abbruchkriterium. Die anderen Abfragen könnte man sich dann komplett sparen und einfach das Script beenden.

Zitat:
//jetzt werden die Felder überprüft
Ja. Und unter Umständen wurden die vorher gerade auf "" gesetzt (Attacke). Weder ist das Feedback dann angemessen noch nachvollziehbar.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (19.01.2009 um 23:27 Uhr).
nikosch ist offline  
Alt 20.01.2009, 10:40  
Neuer Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 14
Atsinganos befindet sich auf einem aufstrebenden Ast
Standard Kontaktformular - Meinungen

Danke für Deine ausführliche Beschreibung. Werde diesbezüglich mal einiges überarbeiten.
Fällt Euch vielleicht noch mehr auf?
Atsinganos ist offline  
Alt 20.01.2009, 10:50  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Bist du dir sicher, dass du unbedingt willst, das jemand der das Kontaktformular auswählt auch eine Datei hochladen muss?

Und was sich das:
PHP-Code:
// Uploaddurchlauf Start
    
for ($i=0$i<count($_FILES['UPFILE']['name']); $i++) {
    
    if (
$_FILES['UPFILE']['name'][$i] == '') {
    continue;
    } 
bringen soll verstehe ich auch nicht, da es sowieso nur einmal ausgeführt wird, selbst wenn 2 oder mehr Dateien hochgeladen werden...

Meines Wissens nach sieht ein Mehrfachupload Feld so aus:
Code:
<input type="file" name="UPFILE[]" />
folglich sieht das array folgendermassen aus:
PHP-Code:
array(
  
=> array(
    
'name' => '...',
    
'error'  => '...',
    
'tmp_name' => '...',
    
// Weitere elemente
  
),
  
=> array(
    
'name' => '...',
    
'error'  => '...',
    
'tmp_name' => '...',
    
// Weitere elemente
  
),
); 
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 20.01.2009, 12:58  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
bringen soll verstehe ich auch nicht, da es sowieso nur einmal ausgeführt wird, selbst wenn 2 oder mehr Dateien hochgeladen werden...
Da solltest Du Dich dann aber nochmal in continue und break einlesern.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.01.2009, 13:00  
Neuer Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 14
Atsinganos befindet sich auf einem aufstrebenden Ast
Standard Kontaktformular - Meinungen

Hallo,

danke für die Tipps. Die Kopplung der Kontaktdaten mit einem Upload ist gewollt. Aber natürlich nur mit einem.

Hier nochmal mein veränderter Code mit Mailfunktion. An der Fehlermeldung arbeite ich noch. Die ist noch nicht fertig.

PHP-Code:
<?php
//erstmal Variablen definieren
$pagename="test.php";
$error=$name=$plz=$ort=$strasse=$nr=$fon=$email=$UPFILE=$mitteilungen="";
$pdfpfad 'order/';

// URL zum Uploadverzeichnis
$URL 'http://www.meine_website/uploader/order';

// max. Uploadgroesse in KB
$max_upl_size 1000;

// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben
$arr_erlaube_dateityp = array(pdf);

// an wen geht die Mail ?
$empfaenger="ich@online.de";

if(isset(
$_POST['senden'])) {
    
// es wurde abschicken gedrückt, also erst mal die Felder holen
    
if (get_magic_quotes_gpc()) {
        
$name=  stripslashes($_POST['name']);
        
$plz=  stripslashes($_POST['plz']);
        
$ort=  stripslashes($_POST['ort']);
        
$strasse=  stripslashes($_POST['strasse']);
        
$nr=  stripslashes($_POST['nr']);
        
$fon=  stripslashes($_POST['fon']);
        
$email=  stripslashes($_POST['email']);
        
$UPFILE=  stripslashes($_POST['UPFILE']);
        }
    else {
        
$name$_POST['name'];
        
$plz$_POST['plz'];
        
$ort$_POST['ort'];
        
$strasse$_POST['strasse'];
        
$nr$_POST['nr'];
        
$fon$_POST['fon'];
        
$email$_POST['email'];
        
$UPFILE$_POST['UPFILE'];
        }
            
    
//Mitteilungen setzen sich aus allen Eingaben zusammen
    
$mitteilungen=get_magic_quotes_gpc() ? stripslashes($_POST['mitteilungen']) : $_POST['mitteilungen'];
    
    
//Form-Attacken verhindern (suche nach \r\n oder \n)
    
    
if(strpos($name,"\r\n")>|| strpos($name,"\n")>0) {
        
DebugAttack(substr($name,strpos($name,"\r\n")));
        
$name="";
    }
    if(
strpos($plz,"\r\n")>|| strpos($plz,"\n")>0) {
        
DebugAttack(substr($plz,strpos($plz,"\r\n")));
        
$plz="";
    }
    if(
strpos($ort,"\r\n")>|| strpos($ort,"\n")>0) {
        
DebugAttack(substr($ort,strpos($ort,"\r\n")));
        
$ort="";
    }
    if(
strpos($strasse,"\r\n")>|| strpos($strasse,"\n")>0) {
        
DebugAttack(substr($strasse,strpos($strasse,"\r\n")));
        
$strasse="";
    }
    if(
strpos($nr,"\r\n")>|| strpos($nr,"\n")>0) {
        
DebugAttack(substr($nr,strpos($nr,"\r\n")));
        
$nr="";
    }
    if(
strpos($fon,"\r\n")>|| strpos($fon,"\n")>0) {
        
DebugAttack(substr($fon,strpos($fon,"\r\n")));
        
$fon="";
    }
    if(
strpos($email,"\r\n")>|| strpos($email,"\n")>0) {
        
DebugAttack(substr($email,strpos($email,"\r\n")));
        
$email="";
    }
    if(
strpos($UPFILE,"\r\n")>|| strpos($UPFILE,"\n")>0) {
        
DebugAttack(substr($UPFILE,strpos($UPFILE,"\r\n")));
        
$UPFILE="";
    }
        
    
// wir setzen einen Flag, um Fehler zu registrieren
    
$ok=true;
    
    
//jetzt werden die Felder überprüft
    
if ((!(preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$name))) && (strlen($name)>3) || $name=="")
    {
        
$err[0]=true//Fehler merken
        
$ok=false;    //Fehlerflag setzen
        
$error.='Bitte kontrollieren Sie den angegebenen Namen.<br>'// Fehlertext
    
}
    
    
    if ((!(
preg_match("/^[0-9]{5}$/",$plz))) && (strlen($plz)<4) || $plz=="")
    {
        
//PLZ ist ungültig
        
$err[1]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Postleitzahl.<br>';
    }
    
    if ((!(
preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$ort))) && (strlen($ort)>3) || $ort=="")
    {
        
//Ort ist ungültig
        
$err[2]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie den angegebenen Ort.<br>';
    }
    
    if ((!(
preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$strasse))) && (strlen($strasse)>3) || $strasse==""
    {
        
//Strasse ist ungültig
        
$err[3]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Strasse.<br>';
    }
    
    if ((!(
preg_match("/^[a-zA-Z0-9]+$/s",$nr))) && (strlen($nr)>1) || $nr==""
    {
        
//Nr ist ungültig
        
$err[4]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Nummer.<br>';
    }
    
    
    if ((!(
preg_match("/^[0-9\+\(\)\/\-\s]+$/",$fon))) && (strlen($fon)>5) || $fon=="")
    {
        
//Telefonnummer ist ungültig
        
$err[5]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene Telefonnummer.<br>';
    }
    
    if ((!(
preg_match("/^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$/",$email))) && (strlen($email)>3) || $email=="")
    {
        
//email-Adresse ist ungültig
        
$err[6]=true;
        
$ok=false;
        
$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
    }

    
// Upload-Feld überprüfen
        
if (empty($UPFILE)) {
               
$err[7]=true;
            
$ok=false;
            
$error.='Bitte kontrollieren Sie das Feld Dateianhang.<br>';
    } 
    
    if (!isset(
$_POST['senden'])) {

    
// Uploadform ausgeben    
    
    
} else {
    
//-----------------------------------------------------------------//
    // Upload ausfuehren
    //-----------------------------------------------------------------//
    
    
$erlaubte_extensionen join(', ',$arr_erlaube_dateityp);
    
    
// Zeichenfilter
    
$File strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#''___________');
    
    
// Dateiendung ermitteln
    
$punkt strrpos($File'.');
    
$laenge strlen($File);
    
$endung strtolower(substr($File, -($laenge $punkt 1)));
    
$dname substr($File0, -($laenge $punkt 1));
    
    
// Fehlerausgabe wenn Dateiendung nicht erlaubt
    
if (!in_array($endung$arr_erlaube_dateityp)) {
        
//Falsche Dateiendung
        
$err[8]=true;
        
$ok=false;
        
$error.="Die Dateiendung <b>$endung</b> ist nicht erlaubt.<br>";
    }
        
    
// Dateigroessencheck
    
if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size 1024)) {
        
$zugross round($_FILES['UPFILE']['size'][$i]/10242);
        
$err[9]=true;
        
$ok=false;
        
$error.="Datei zu gro&szlig;<br>";
    }
    
    
$dateipfad_name $pdfpfad.$File;
    
    
// hochgeladene Daeien speichern
    
move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $dateipfad_name); 
    
        
// Erfolgs-Meldung ausgeben
        
echo "Der Upload war erfolgreich";
   } 
 }
        
    
// ist alles ok ? dann senden
     
if($ok)
    {        
        
// --------------------------------------------------------------------------------
    // Wurde das Script bisher nicht abgebrochen, wurde das Formular korrekt ausgefüllt
    // --------------------------------------------------------------------------------
    
    // Template mit dem Mailbody laden und für den Versand vorbereiten
        
$mailbody file_get_contents'ordermailbody.txt' );
    
// Platzhalter mit den Benutzereingaben ersetzen
        
$mailbody str_replace'###FIRMA###'htmlspecialchars$firma ), $mailbody );
        
$mailbody str_replace'###NAME###'htmlspecialchars$name ), $mailbody );
        
$mailbody str_replace'###PLZ###'htmlspecialchars$plz ), $mailbody );
        
$mailbody str_replace'###ORT###'htmlspecialchars$ort ), $mailbody );
        
$mailbody str_replace'###NR###'htmlspecialchars$nr ), $mailbody );
        
$mailbody str_replace'###FON###'htmlspecialchars$fon ), $mailbody );
        
$mailbody str_replace'###EMAIL###'$email$mailbody );
        
$mailbody str_replace'###MITTEILUNGEN###'nl2brhtmlspecialchars$mitteilungen ) ), $mailbody );
    
    
// Mail Header erstellen
        
$mailheader  "From: Mustermann<noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
        
$mailheader .= "Reply-To: " .$name"<" .$email">\r\n";
        
$mailheader .= "Return-Path: noreply@" .$_SERVER['SERVER_NAME']. "\r\n";
        
$mailheader .= "MIME-Version: 1.0\r\n";
        
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
        
$mailheader .= "Content-Transfer-Encoding: 8bit\r\n";
        
$mailheader .= "Message-ID: <" .time(). " order@" .$_SERVER['SERVER_NAME']. ">\r\n";
        
$mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";
        
        
$subject="Bestellung vom ".date("d.m.Y");
    
    
// Email versenden
        
if (@mail$empfaenger$subject$mailbody$mailheader ))
    {
        
// Bei erfolgreichem Versand Bestätigung verschicken
        
$mailheader  "From: Mustermann<mail@muster.de>\r\n";
        
$mailheader .= "Reply-To: Mustermann<mail@muster.de>\r\n";
        
$mailheader .= "Return-Path: muster@" .$_SERVER['SERVER_NAME']. "\r\n";
        
$mailheader .= "MIME-Version: 1.0\r\n";
        
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
        
$mailheader .= "Content-Transfer-Encoding: 8bit\r\n";
        
$mailheader .= "Message-ID: <" .time(). " order@" .$_SERVER['SERVER_NAME']. ">\r\n";
        
$mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";
        
        
// Inhalt der Bestätigung
        
$mailbody 'Vielen Dank für Ihre Email. Wir werden uns in Kürze bei Ihnen melden.';

        
// Bestätigung verschicken
        
if (@mail$email"Die Firma Max Mustermann bedankt sich"$mailbody$mailheader ))
        {
            
//Alles ok, Seite neuladen (Reloadsperre)
            
header("Location:$pagename?success");
        } 
        else 
        {
            
$error='<h3>Fehler beim Mailen aufgetreten</h3>';
        }
    } 
    else 
    {
       
// Fehler ausgeben
        
$error='<p class="error">'.$error.'</p>';
    }
    
}
?>
Das Problem mit dem Upload-Feld habe ich immer noch. Also wenn ich alle Daten eintrage, schickt er mir zwar die Datei weg, aber bringt mir beim Reload die Fehlermeldung, dass der Dateianhang leer ist. Das wiederum blockiert meine Mailfunktion. Habt Ihr vielleicht noch ein Tipp?
Atsinganos ist offline  
Alt 20.01.2009, 13:48  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Kannst Du DebugAttack mal posten, oder ist die zu groß?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.01.2009, 14:28  
Neuer Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 14
Atsinganos befindet sich auf einem aufstrebenden Ast
Standard Kontaktformular - Meinungen

Krieg ich irgendwie nicht hin.
Atsinganos ist offline  
Alt 20.01.2009, 14:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Was?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.01.2009, 14:57  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Da solltest Du Dich dann aber nochmal in continue und break einlesern.
Ähh Nikosch, hast du überhaupt meinen Beitrag gelesen? Wenn ja, dann guck dir doch mal sein for Konstrukt an, dann weißt du warum ich das geschrieben habe

Und was continue und break machen, sollte ich als alter hase schon wissen...

Edit #1:
Zitat:
Zitat von Atsinganos Beitrag anzeigen
Das Problem mit dem Upload-Feld habe ich immer noch. Also wenn ich alle Daten eintrage, schickt er mir zwar die Datei weg, aber bringt mir beim Reload die Fehlermeldung, dass der Dateianhang leer ist. Das wiederum blockiert meine Mailfunktion. Habt Ihr vielleicht noch ein Tipp?
Dann ließ du dir auch noch mal meinen Beitrag durch.

Damit du genau siehst wie dein $_FILES-Array aussieht kannst du ja mal zu Testzwecken:
PHP-Code:
var_dump$_FILES ); 
reinschreiben
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."

Geändert von tomtaz (20.01.2009 um 15:00 Uhr).
tomtaz ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kontaktformular mit PHP kim160266 PHP Tipps 2009 2 08.01.2009 10:13
Kontaktformular grand PHP Tipps 2008 5 30.09.2008 14:42
Kontaktformular: wo is der Fehler? Mick_Sebutia PHP Tipps 2008 16 15.09.2008 15:09
Kontaktformular mit Spamschutz und include Navigation? chicco4u PHP Tipps 2008 1 11.08.2008 09:52
IE6 Kontaktformular, Probleme mit Variablen Meijestic PHP Tipps 2008 3 07.07.2008 19:29
Kontaktformular plus 3 Attachments funzt net catmoon PHP Tipps 2008 2 25.06.2008 10:15
[Erledigt] Kontaktformular - bitte helft mir celine70 PHP Tipps 2008 3 19.05.2008 11:28
Spam Problem mit Kontaktformular djrace PHP Tipps 2007 9 02.01.2006 12:37
Kontaktformular - Sieht klasse aus, aber verschickt nix! :-( PHP Tipps 2005-2 15 06.10.2005 19:24
Kontaktformular vor Fremdzugriff schützen PHP Tipps 2005-2 8 17.09.2005 10:30
Sehr simples Kontaktformular - Prinzip imported_Ben Beitragsarchiv 2 02.08.2005 22:41
[Erledigt] kontaktformular mit bild PHP-Fortgeschrittene 1 16.02.2005 11:13
Problem mit Kontaktformular? PHP Tipps 2004-2 6 13.12.2004 18:48
Kontaktformular - Nachricht wurde verschickt PHP Tipps 2004 4 22.10.2004 09:18
Kontaktformular verschicken PHP Tipps 2004 6 08.06.2004 21:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php preg_match \\xc0-\\xc2, atsinganos, php mail xc0, Überprüfung auf formattacken, zeichenfilter preg_match, \\xc0-\\xc2\\xc8-\\, form-attacken verhindern, stripslashes and substr, dateiendung xdb, kontaktformular doppelt reloadsperre, php debugattack

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum