PHP Formular -> Mail

Blubberstrahl

Newbie
Dabei seit
Aug. 2009
Beiträge
4
Seas, ich hab für die HP von ner bekannten erstmals mit php rumgespielt und das Reservierungsformular mit php ausgewertet (habs vorher mit action="mailto:..." gemacht, aber das is ja ein bissl umständlich auf user-seite)

Das Script steht soweit ja auch und schickt mir die Mail mit den Daten. Allerdings werden die Umlaute aus den Textfeldern komisch enkodiert (obwohl ich überall utf-8 angegeben hab).

Desweiteren ist meine Rangehensweise doch recht umständlcih, ich übergebe jedes einzelne POST per Hand an eine Variable, das muss doch auch einfacher gehen, immerhin ist POST ja schon ein array, wenn ich das richtig verstanden hab.

Und die Sicherheit macht mir Sorgen, ich kann in die Textfelder html-tags einarbeiten und will gar nich wissen, was man damit alles anstellen kann :(

hier der code:
PHP:
<?php 
header ('Content-type: text/html; charset=UTF-8');
// wohin
$empfaenger        = "test@bayrischer-hof-breisach.de"; 
$error            = "";
$pagename        =$_SERVER['PHP_SELF'];

function getmailtext($strMailtext){
    $txt=get_magic_quotes_gpc() ? stripslashes($strMailtext) : $strMailtext; 
    return $txt;
}

// Felder holen und überprüfen
$vorname	= isset($_POST['vorname']) ? getmailtext($_POST['vorname']) : ''; 
$nachname	= isset($_POST['nachname']) ? getmailtext($_POST['nachname']) : ''; 
$strasse 	= isset($_POST['strasse']) ? getmailtext($_POST['strasse']) : '';
$nummer		= isset($_POST['nummer']) ? getmailtext($_POST['nummer']) : '';
$plz		= isset($_POST['plz']) ? getmailtext($_POST['plz']) : '';
$ort		= isset($_POST['ort']) ? getmailtext($_POST['ort']) : '';
$phone		= isset($_POST['phone']) ? getmailtext($_POST['phone']) : '';
$email		= isset($_POST['email']) ? getmailtext($_POST['email']) : ''; 
$personen	= isset($_POST['personen']) ? getmailtext($_POST['personen']) : ''; 
$zimmer		= isset($_POST['zimmer']) ? getmailtext($_POST['zimmer']) : ''; 
$anreise	= isset($_POST['anreise']) ? getmailtext($_POST['anreise']) : ''; 
$abreise	= isset($_POST['abreise']) ? getmailtext($_POST['abreise']) : ''; 
$besonderheiten = isset($_POST['besonderheiten']) ? getmailtext($_POST['besonderheiten']) : ''; 


// nur die Felder ausgeben, die auch ausgefüllt werden (müssen)
function getField($fo){
$gibaus = "";
    if(isset($fo)){
        $gibaus = $fo."\n";
        }
return $gibaus;
}

// Formular ist abgescickt und die Eingaben werden überprüft
if(isset($_POST['abschicken'])) { 
       
    //Form-Attacken verhindern (suche nach \r\n oder \n) 
    if(strpos($vorname,"\r\n")>0 || strpos($vorname,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($nachname,"\r\n")>0 || strpos($nachname,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($strasse,"\r\n")>0 || strpos($strasse,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($nummer,"\r\n")>0 || strpos($nummer,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($plz,"\r\n")>0 || strpos($plz,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($ort,"\r\n")>0 || strpos($ort,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($phone,"\r\n")>0 || strpos($phone,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($personen,"\r\n")>0 || strpos($personen,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
/*	if(strpos($zimmer,"\r\n")>0 || strpos($zimmer,"\n")>0) { 
    die("YUCK FU!!!!");
    } */ 
	if(strpos($anreise,"\r\n")>0 || strpos($anreise,"\n")>0) { 
    die("YUCK FU!!!!");
    } 
	if(strpos($abreise,"\r\n")>0 || strpos($abreise,"\n")>0) { 
    die("YUCK FU!!!!");
    }
/*	if(strpos($besonderheiten,"\r\n")>0 || strpos($besonderheiten,"\n")>0) { 
    die("YUCK FU!!!!");
    } */
    // Feldvalidierung
    
    $ok=true; 
    //jetzt werden die Felder überprüft 
    if (strlen($vorname)<3) // der Name muss mindestens 3 Zeichen haben 
    { 
        $err[0]=true; //Fehler merken 
        $ok=false;    //Fehlerflag setzen 
        $error.='Bitte geben Sie Ihren Namen an. (mindestens 3 Zeichen)<br>'; // Fehlertext 
    } 
    
   if (strlen($nachname)<3) // der Nachname muss mind. 3 Zeichen haben
    { 
        $err[1]=true; //Fehler merken 
        $ok=false;    //Fehlerflag setzen 
        $error.='Bitte geben Sie einen Nachnamen von mind. 3 Zeichen ein.<br>'; // Fehlertext 
    } 
    
    if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="") 
    { 
        //email-Adresse ist ungültig 
        $err[2]=true; 
        $ok=false; 
        $error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>'; 
    } 
   
    
    // ist alles ok ? dann senden 
    if($ok) 
    { 

// ausgefüllte Daten via php versenden    
$sender            ="Aus der Webseite";
$sendermail        =trim($email);
$subject         = "Mail aus Webseite - Nachricht vom ".date("d.m.Y");
$header         = "From: $sender <$sendermail>\r\n";
//$header .= "Cc: meine@garten.de\r\n";
$header .= "Reply-to: <$sendermail>\r\n";
$header .= "Return-path: <$sendermail>\r\n";
$header .= 'X-Mailer: PHP/' . phpversion() . "\n"; 
$header .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n"; 
$header .= "Content-type: text/html\n";

// Mailtext definieren
 $mailtext = '<html>
    <head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        <table width="200" border="1">
  <tr>
    <td>Vorname</td>
    <td>'.getField($vorname).'</td>
  </tr>
  <tr>
    <td>Nachname</td>
    <td>'.getField($nachname).'</td>
  </tr>
  <tr>
    <td>Stra&szlig;e</td>
    <td>'.getField($strasse)." ".getField($nummer).'</td>
  </tr>
  <tr>
    <td>PLZ</td>
    <td>'.getField($plz).'</td>
  </tr>
  <tr>
    <td>Ort</td>
    <td>'.getField($ort).'</td>
  </tr>
  <tr>
    <td>Telefonnr</td>
    <td>'.getField($phone).'</td>
  </tr>
  <tr>
    <td>Email</td>
    <td>'.getField($email).'</td>
  </tr>
  <tr>
    <td>Anzahl Personen</td>
    <td>'.getField($personen).'</td>
  </tr>
  <tr>
    <td>Gew&uuml;nschter Zimmertyp</td>
    <td>'.getField($zimmer).'</td>
  </tr>
  <tr>
    <td>Anreisetag</td>
    <td>'.getField($anreise).'</td>
  </tr>
  <tr>
    <td>Abreisetag</td>
    <td>'.getField($abreise).'</td>
  </tr>
  <tr>
    <td>Besonderheiten</td>
    <td>'.getField($besonderheiten).'</td>
  </tr>
</table>
    </body>
</html>
';
 
        //Mail verschicken 
        if (@mail($empfaenger, $subject, $mailtext, $header)) { 
            //Alles ok, Seite neuladen 
            header("Location:$pagename?success"); 
            //falls kein Header gesendet werden kann, dann mit javascript 
echo '<script type="text/javascript">document.location.href="'.$pagename.'?success"</script>'; 
            exit; 
        } else { 
            $error='<h3>Fehler beim Mailen aufgetreten</h3>'; 
        } 

    } else { 
        // Fehler ausgeben 
        $error='<h3>Fehler bei der Eingabe</h3><p class="error">'.$error.'</p>'; 
    } 
} 
?> 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Reservierungsformular</title>
</head>

<body>
<h1> 
  <?php 
if($error!="") echo $error; 
if(isset($_GET['success'])) { 
    //Erfolgsnachricht ausgeben 
    echo '<p>Vielen Dank für Ihre Reservierungsanfrage. Sie wurde erfolgreich verschickt.</p>
			Bitte beachten Sie, dass die Reservierung erst verbindlich ist, wenn Sie von uns eine Rückmeldung erhalten haben'; 
} else { 
    // Form ausgeben 
?> 
</h1> 
<table border="0" cellspacing="0" cellpadding="0" width="305">
	  
	  <tr>
        <td class="pageName">Reservierungen</td>
	    </tr>
      <tr>
        <td class="bodyText">
        <form action="<?php echo $pagename;?>" method="post" name="formmailer"> 
						<br>
						<table width="259" border="0" cellspacing="2" cellpadding="0">
							<tr>
								<td><label>Vorname*</label></td>
								<td><input type="text" value="<?php echo $vorname;?>" name="vorname" size="25" border="0" <?php if(isset($err[0])) echo  'class="fehler"';?>></td>
							</tr>
							<tr>
								<td><label>Nachname*</label></td>
								<td><input type="text" name="nachname" size="25" border="0" value="<?php echo $nachname;?>" <?php if(isset($err[1])) echo  'class="fehler"';?>></td>
							</tr>
							<tr>
								<td><label>Stra&szlig;e</label></td>

								<td><input type="text" name="strasse" id="strasse" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Nummer</label></td>
								<td><input name="nummer" type="text" id="nummer" size="5" border="0"></td>
							</tr>
							<tr>
								<td><label>PLZ</label></td>

								<td><input name="plz" type="text" id="plz" size="5" maxlength="5" border="0"></td>
							</tr>
							<tr>
								<td><label>Wohnort</label></td>
								<td><input name="ort" type="text" id="ort" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Telefonnummer<br>

										(F&uuml;r R&uuml;ckfragen)</label></td>
								<td><input name="phone" type="text" id="phone" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>E-mail Adresse*</label></td>
								<td><input name="email" value="<?php echo $email;?>" type="text" id="email" size="24" <?php if(isset($err[2])) echo  'class="fehler"';?>></td>
							</tr>

							<tr>
								<td><label>Wieviele Personen? </label></td>
								<td><input type="text" name="personen" size="2" border="0"></td>
							</tr>
							<tr>
								<td><label>Gew&uuml;nschter Zimmer-Typ:
										<p><font size="-2">Es stehen zur Auswahl:<br>
												- Einzelzimmer ohne Dusche<br>

												- Einzelzimmer mit Dusche<br>
												- Doppelzimmer ohne Dusche<br>
												- Doppelzimmer mit Dusche<br>
												- Doppelzimmer mit Dusche und Balkon</font><br>
										</p>
										<p></p>
									</label></td>

								<td><textarea name="zimmer" rows="9" cols="40"></textarea></td>
							</tr>
							<tr>
								<td><label>Anreisetag</label></td>
								<td><input type="text" name="anreise" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Abreisetag</label></td>

								<td><input type="text" name="abreise" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Besonderheiten (zB TV auf Zimmer)</label></td>
								<td><textarea name="besonderheiten" rows="4" cols="40"></textarea></td>
							</tr>
							<tr>
								<td colspan="2">Bitte &uuml;berpr&uuml;fen Sie vor dem Abschicken nochmals alle Angaben, die Sie gemacht haben.</td>
							</tr>
							<tr>
							  <td colspan="2">Mit * markierte Felder sind Pflicht</td>
						  </tr>
							<tr>
								<td><input type="submit" class="button" value="Reservierungsanfrage abschicken" name="abschicken" border="0"> </td>
								<td><input type="reset" value="Alle Felder leeren" border="0"></td>
							</tr>
						</table>
<br>
					</form>
</td>
      </tr>
	  
	</table>
<?php 
} 
?> 	  
</body>
</html>


Wär nett wenn mir jmd weiterhelfen könnt, bin in Sachen PHP noch totaler Newbie
 

Blubberstrahl

Newbie
Ersteller dieses Themas
Dabei seit
Aug. 2009
Beiträge
4
super, genau sowas hab ich gesucht :)

jetzt aber meine durch Faulheit motivierte Frage: Wie erstell ich so ein verkacktes array, das die POST Daten alle der Reihe nach in Variablen speichert?
Das Array könnt ich ja dann durch strip_tags durchlaufen lassen, oder?
 

Blubberstrahl

Newbie
Ersteller dieses Themas
Dabei seit
Aug. 2009
Beiträge
4
also soll ich einfach
PHP:
$a=array_map("strip_tags",$_POST);
machen um die html und php codes rauszukriegen?

(Hab grad keinen php-parser da, bin in der uni. aber der code müsste eig stimmen, oder?)
(und kann ich dann mit $_a['vorname'] weiterrbeiten, oder geht das dann nicht?)
 
Zuletzt bearbeitet: (nachtrag)

Blubberstrahl

Newbie
Ersteller dieses Themas
Dabei seit
Aug. 2009
Beiträge
4
erstmal sorry für doppelpost, aber mein letzter ist schon ein bisschen her :)

so, hier erstmal mein neuer code:
PHP:
<?php 
date_default_timezone_set('Europe/Berlin');
include("../error.php5");
//header ('Content-type: text/html; charset=UTF-8');

// versuch, HTML, JS und co zu entfernen

function boeseweg($sSource, $aAllowedTags = array(), $aDisabledAttributes = array(..*snip*..))
    {
        if (empty($aDisabledAttributes)) return strip_tags($sSource, implode('', $aAllowedTags));
		$suchmuster = '/<(.*?)>/ie';
		$ersetzungen = "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(". implode('|', $aDisabledAttributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'";
		$zuersetzendes = strip_tags($sSource);

        return preg_replace($suchmuster, $ersetzungen, $zuersetzendes, -1, $count);
    }


$empfaenger        = "test@bayrischer-hof-breisach.de"; 
$error            = "";
$pagename        =$_SERVER['PHP_SELF'];


function getmailtext($strMailtext){
    $txt=get_magic_quotes_gpc() ? boeseweg($strMailtext) : ''; 
    return $txt;
}

// Felder holen und überprüfen
foreach($_POST as $k=>$v) {
	$$k=htmlentities(getmailtext($v));
	}


// nur die Felder ausgeben, die auch ausgefüllt wurden
function getField($fo){
$gibaus = "";
    if(isset($fo)){
        $gibaus = $fo."\n";
        }
return $gibaus;
}

// Formular ist abgescickt und die Eingaben werden überprüft
if(isset($_POST['abschicken'])) { 
       
    // Feldvalidierung
    
    $ok=true; 
    //jetzt werden die Felder überprüft 
    if (strlen($vorname)<3) // der Name muss mindestens 3 Zeichen haben 
    { 
        $err[0]=true; //Fehler merken 
        $ok=false;    //Fehlerflag setzen 
        $error.='Bitte geben Sie Ihren Namen an. (mindestens 3 Zeichen)<br>'; // Fehlertext 
    } 
    
   if (strlen($nachname)<3) // der Nachname muss mind. 3 Zeichen haben
    { 
        $err[1]=true; //Fehler merken 
        $ok=false;    //Fehlerflag setzen 
        $error.='Bitte geben Sie einen Nachnamen von mind. 3 Zeichen ein.<br>'; // Fehlertext 
    } 
    
    if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="") 
    { 
        //email-Adresse ist ungültig 
        $err[2]=true; 
        $ok=false; 
        $error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>'; 
    } 
   
    
    // ist alles ok ? dann senden 
    if($ok) 
    { 

// ausgefüllte Daten via php versenden    
$sender            ="Aus der Webseite";
$sendermail        =trim($email);
$subject         = "Mail aus Webseite - Nachricht vom ".date("d.m.Y");
$header         = "From: $sender <$sendermail>\r\n";
//$header .= "Cc: meine@garten.de\r\n";
$header .= "Reply-to: <$sendermail>\r\n";
$header .= "Return-path: <$sendermail>\r\n";
$header .= 'X-Mailer: PHP/' . phpversion() . "\n"; 
$header .= 'X-Sender-IP: ' . $_SERVER['REMOTE_ADDR'] . "\n"; 
$header .= "Content-type: text/html\n";

// Mailtext definieren
 $mailtext = '<html>
    <head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        <table width="200" border="1">
  <tr>
    <td>Vorname</td>
    <td>'.getField($vorname).'</td>
  </tr>
  <tr>
    <td>Nachname</td>
    <td>'.getField($nachname).'</td>
  </tr>
  <tr>
    <td>Stra&szlig;e</td>
    <td>'.getField($strasse)." ".getField($nummer).'</td>
  </tr>
  <tr>
    <td>PLZ</td>
    <td>'.getField($plz).'</td>
  </tr>
  <tr>
    <td>Ort</td>
    <td>'.getField($ort).'</td>
  </tr>
  <tr>
    <td>Telefonnr</td>
    <td>'.getField($phone).'</td>
  </tr>
  <tr>
    <td>Email</td>
    <td>'.getField($email).'</td>
  </tr>
  <tr>
    <td>Anzahl Personen</td>
    <td>'.getField($personen).'</td>
  </tr>
  <tr>
    <td>Gew&uuml;nschter Zimmertyp</td>
    <td>'.getField($zimmer).'</td>
  </tr>
  <tr>
    <td>Anreisetag</td>
    <td>'.getField($anreise).'</td>
  </tr>
  <tr>
    <td>Abreisetag</td>
    <td>'.getField($abreise).'</td>
  </tr>
  <tr>
    <td>Besonderheiten</td>
    <td>'.getField($besonderheiten).'</td>
  </tr>
</table>
    </body>
</html>
';
 
        //Mail verschicken 
        if (@mail($empfaenger, $subject, $mailtext, $header)) { 
            //Alles ok, Seite neuladen 
            header("Location:$pagename?success"); 
            //falls kein Header gesendet werden kann, dann mit javascript 
echo '<script type="text/javascript">document.location.href="'.$pagename.'?success"</script>'; 
            exit; 
        } else { 
            $error='<h3>Fehler beim Mailen aufgetreten</h3>'; 
        } 

    } else { 
        // Fehler ausgeben 
        $error='<h3>Fehler bei der Eingabe</h3><p class="error">'.$error.'</p>'; 
    } 
}


?> 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>1SEND_POST1</title>
</head>

<body>
 
  <?php 
if($error!="") echo $error; 

if(isset($_GET['success'])) { 
    //Erfolgsnachricht ausgeben 
    echo '<p>Vielen Dank für Ihre Reservierungsanfrage. Sie wurde erfolgreich verschickt.</p>
			Bitte beachten Sie, dass die Reservierung erst verbindlich ist, wenn Sie von uns eine Rückmeldung erhalten haben'; 
} else { 
    // Form ausgeben 

?> 


<table border="0" cellspacing="0" cellpadding="0" width="305">
	  
	  <tr>
        <td class="pageName">Reservierungen</td>
	    </tr>
      <tr>
        <td class="bodyText">
        <form action="<?php echo $pagename;?>" method="post" name="formmailer"> 
						<br>
						<table width="259" border="0" cellspacing="2" cellpadding="0">
							<tr>
								<td><label>Vorname*</label></td>
								<td><input type="text" value="<?php echo $vorname;?>" name="vorname" size="25" border="0" <?php if(isset($err[0])) echo  'class="fehler"';?>></td>
							</tr>
							<tr>
								<td><label>Nachname*</label></td>
								<td><input type="text" name="nachname" size="25" border="0" value="<?php echo $nachname;?>" <?php if(isset($err[1])) echo  'class="fehler"';?>></td>
							</tr>
							<tr>
								<td><label>Stra&szlig;e</label></td>

								<td><input type="text" name="strasse" id="strasse" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Nummer</label></td>
								<td><input name="nummer" type="text" id="nummer" size="5" border="0"></td>
							</tr>
							<tr>
								<td><label>PLZ</label></td>

								<td><input name="plz" type="text" id="plz" size="5" maxlength="5" border="0"></td>
							</tr>
							<tr>
								<td><label>Wohnort</label></td>
								<td><input name="ort" type="text" id="ort" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Telefonnummer<br>

										(F&uuml;r R&uuml;ckfragen)</label></td>
								<td><input name="phone" type="text" id="phone" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>E-mail Adresse*</label></td>
								<td><input name="email" value="<?php echo $email;?>" type="text" id="email" size="24" <?php if(isset($err[2])) echo  'class="fehler"';?>></td>
							</tr>

							<tr>
								<td><label>Wieviele Personen? </label></td>
								<td><input type="text" name="personen" size="2" border="0"></td>
							</tr>
							<tr>
								<td><label>Gew&uuml;nschter Zimmer-Typ:
										<p><font size="-2">Es stehen zur Auswahl:<br>
												- Einzelzimmer ohne Dusche<br>

												- Einzelzimmer mit Dusche<br>
												- Doppelzimmer ohne Dusche<br>
												- Doppelzimmer mit Dusche<br>
												- Doppelzimmer mit Dusche und Balkon</font><br>
										</p>
										<p></p>
									</label></td>

								<td><textarea name="zimmer" rows="9" cols="40"></textarea></td>
							</tr>
							<tr>
								<td><label>Anreisetag</label></td>
								<td><input type="text" name="anreise" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Abreisetag</label></td>

								<td><input type="text" name="abreise" size="24" border="0"></td>
							</tr>
							<tr>
								<td><label>Besonderheiten (zB TV auf Zimmer)</label></td>
								<td><textarea name="besonderheiten" rows="4" cols="40"></textarea></td>
							</tr>
							<tr>
								<td colspan="2">Bitte &uuml;berpr&uuml;fen Sie vor dem Abschicken nochmals alle Angaben, die Sie gemacht haben.</td>
							</tr>
							<tr>
							  <td colspan="2">Mit * markierte Felder sind Pflicht</td>
						  </tr>
							<tr>
								<td><input type="submit" class="button" value="Reservierungsanfrage abschicken" name="abschicken" border="0"> </td>
								<td><input type="reset" value="Alle Felder leeren" border="0"></td>
							</tr>
						</table>
<br>
					</form>
</td>
      </tr>
	  
	</table>
<?php 
 } 
?> 	  
</body>
</html>
die $aDisabledArguments hab ich beschnitten, das reisst sonst brutal das Layout auseinander ^^
aber ich hab folgende JS-Actions entfernt:
'onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmoveout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'

wie ihr vlt seht, les ich das $_POST nun mit foreach aus, nach dem, was ich so alles gelesen hab erschien mir das am sinnvollsten, da ich die neue Variable gleich durch meine "Bereinigungsfunktion" schicken kann. Und das noch alles in einem Rutsch.

Ich hab mir die boeseweg() sozusagen "geklaut", und da ich die ganzen PHP Operatoren partout nich blick (ein paar inzwischen ja schon, aber nach was zum Henker sucht
PHP:
$suchmuster = '/<(.*?)>/ie';
oder
PHP:
$ersetzungen = "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(". implode('|', $aDisabledAttributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'";

wüsst ich gerne, was das alles jetzt genau heisst oder aber gerne nen link dazu (hab mir nen Wolf gegoogelt nach Operatoren, aber das wird wohl der falsche Ausdruck für sein, oder?).

Das mit dem array_map und dann strip_tags hab ich irgendwie nich hinbekommen, hab wohl irgendwas irgendwo vergessen :) (obwohl ich immernoch der Meinung bin, dass der code aus meinem letzten Post doch eig funktionieren müsste?)

aber so funzt das auch prima, ich denke das müsste ok sein, oder?


Jetzt hab ich aber immernoch das Problem, dass die Umlaute komisch angezeigt werden... (ich schau mir die mails über den webmailer von 1und1 an, und egal, welche Kodierung ich im Browser für die Seite einstelle, die Umlaute bleiben unlesbar... Wüsst ich wenigstens, mit welcher Kodierung die gesendet werden, könnte ich ja die Umlaute umwandeln in die entsprechende.

Wie ihr seht, hab ich noch viele Fragen, auch wenn mein Script jetzt eig. funktioniert.

Ein letztes noch: Ist das schlimm (sicherheitstechnisch), dass mein errorlog jedesmal beim aufruf der seite meint, dass name, vorname und email nicht definiert sind? woher das kommt ist mir klar, nur wollt ich halt wissen, ob man dadurch mist bauen kann.

So, langer Text, kurzer Sinn:
-Warum sind die Umlaut nicht korrekt
-Ist die Sicherheit ausreichend (einmal die Fkt boeseweg() und einmal den Aufruf von den nicht definierten Variablen.

Danke schonma für eure Geduld bis hierher zu lesen, wenn jetzt noch jmd ne Antwort auf meine Fragen weiss, bin ich happy :)
 
Top