zero-dragon: Hilfe beim Kontaktformular

Hi @ all
habe einige Probleme mit meinem Kontaktformular( das man hier: bplaced.rene171188.net/de/kontakt.php einsehen kann) Ich brauche ganz dringend unterstützung mit der Mail die mir zugesandt wirdt und zwar wie setze ich dort brakes ein wo ich versucht habe welche einzusetzen( genauso mit den Leerzeichen).
Und ie bekomme ich es hin, dass gewisse Felder vor dem Senden überprüft werden, ob dort auch was drinne steht?

hier der Code:

  
<?php  
			$v0 = $_POST ["anrede"];  
			$v1 = $_POST ["anrede"];  
			$v2 = $_POST ["titel"];  
			$v3 = $_POST ["name"];  
			$v4 = $_POST ["vorname"];  
			$v5 = $_POST ["firma"];  
			$v6 = $_POST ["email"];  
			$v7 = $_POST ["telefon"];  
			$v8 = $_POST ["fax"];  
			$v9 = $_POST ["betreff"];  
			$v10 = $_POST ["nachricht"];  
			$datum = date("d.m.Y");  
			$uhrzeit = date("H:i");  
			$mitteilung="  
Am $datum wurde eine Nachricht über das Kontaktformular versendet.  
Inhalt:  
Name: ".$v0."".$v1."&nbsp;".$v2."&nbsp;".$v3."&nbsp;".$v4."  
Firma: ".$v5."  
E-Mail: ".$v6."  
Telefon: ".$v7."  
Fax: ".$v8."  
<br />  
Betreff ".$v9."  
<br />  
<br />  
Nachricht: ".$v10."  
<br />  
<br />  
Mit freundlichen Grüßen";  
			$mail="m.haapamaeki@gmx.de";  
			$send=$_POST['s'];  
			function random($name_laenge) {  
				$zeichen = "abcedfhiklmnorstuvwxzöäüABCDEFGHIJKLMNOPRTSUVWXYZÖÄÜ0123456789";  
				$name_neu = "";  
				mt_srand ((double) microtime() * 1000000);  
				for ($i = 0; $i < $name_laenge; $i++ ) {  
					$name_neu .= $zeichen{mt_rand (0,strlen($zeichen))};  
				}  
				return $name_neu;  
			}  
			$zufall = random(4);  
			$zufall2 = $zufall;  
			$code = $zufall2;  
  
			if(($send!="1"))  
			{  
		?>  
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="application/x-www-form-urlencoded" name="kontakt">  
  <label>  
    <input type="radio" name="radio" id="anrede" value="anrede" />  
    Herr</label>  
  <label>  
    <input type="radio" name="radio" id="anrede" value="anrede" />  
    Frau</label>  
    <br />  
    <br />  
  <label>Titel  
    <select name="titel" class="eingabe" id="titel">  
      <option value=""></option>  
<option value="Bischof">Bischof</option>  
<option value="Dr.">Dr.</option>  
<option value="Dr. Dr.">Dr. Dr.</option>  
<option value="Dr. habil.">Dr. habil.</option>  
<option value="Dr. Ing.">Dr. Ing.</option>  
<option value="Dr. med.">Dr. med.</option>  
<option value="Dr. med. vet.">Dr. med. vet.</option>  
<option value="Dr. med. dent.">Dr. med. dent.</option>  
<option value="Dr. rer. nat.">Dr. rer. nat.</option>  
<option value="Dr. Ing. h. c.">Dr. Ing. h. c.</option>  
<option value="Dr. phil. i. h. h. c.">Dr. phil. i. h. h. c.</option>  
<option value="Freifrau">Freifrau</option>  
<option value="Freiherr">Freiherr</option>  
<option value="Graf">Graf</option>  
<option value="Pfarrer">Pfarrer</option>  
<option value="Prof. Dr.">Prof. Dr.</option>  
<option value="Prof. Dr. med.">Prof. Dr. med.</option>  
<option value="Prof. Dr. rer. nat.">Prof. Dr. rer. nat.</option>  
<option value="Prof. Dr.-Ing.">Prof. Dr.-Ing.</option>  
<option value="Prof.">Prof.</option>  
    </select>  
  </label>  
    <br />  
    <br />  
  <label>Name  
    <input name="name" type="text" class="eingabe" id="name" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>Vorname  
    <input name="vorname" type="text" class="eingabe" id="vorname" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>firma  
    <input name="firma" type="text" class="eingabe" id="firma" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>E-Mail  
    <input name="email" type="text" class="eingabe" id="email" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>Telefon  
    <input name="telefon" type="text" class="eingabe" id="telefon" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>Fax  
    <input name="fax" type="text" class="eingabe" id="fax" size="30" />  
  </label>  
    <br />  
    <br />  
  <label>Betreff  
    <input name="betreff" type="text" class="eingabe" id="betreff" size="30" />  
  </label>  
    <br />  
    <br />  
  <label><span class="text">Ihre Mitteilung</span>  
<textarea name="nachricht" cols="42" rows="6" id="nachricht"></textarea>  
  </label>  
        <div class="sicherheitscode"><?php echo "$code" ?></span>  
					&nbsp;&nbsp;&nbsp;  
<input type='text' name='captcha'>  
					<input type='hidden' name='captchaCheck' value='<?php echo "$code" ?>'>  
					<br />&Uuml;bertragen Sie bitte den Code in das Feld</div>  
  
      <button type="submit">Senden</button>  
      <input type="hidden" value="1" name="s" />  
</form>  
		<?php  
			} else {  
				$captcha = $_POST["captcha"];  
			$captchaCheck = $_POST["captchaCheck"];  
			  if($captcha==""||$captcha!=$captchaCheck) {  
				echo "<script type='text/javascript'>  
				alert('Bitte beantworten Sie die Sicherheitsabfrage korrekt!');  
				history.back(1);  
				</script>";  
				exit;  
			}  
			  $send=0;  
			  if(mail($mail,"",$mitteilung,"from:Kontakt |"))  
			  {  
			    echo "<p><strong>Ihre E-Mail wurde gesendet.</strong></p>";  
			    echo "<p><a href=".$_SERVER['PHP_SELF'].">Zurück zum Formular</a></p>";  
			  }else{  
			    echo "<p><strong>Es ist ein Fehler aufgetreten!</strong></p>";  
			    echo "<p><a href=".$_SERVER['PHP_SELF'].">Zurück zum Formular</a></p>";  
			  }  
			}  
		?>  

LG,
Mika

  1. PS: zusätzlich noch die Fragen: wieso kann das Formular die Anrede nicht erkennen, also in meiner Mail steht dann nicht Herr oder Frau.
    Und wieso bekomme ich eig. immer automatisch die selbe Mail zugeschickt, habe gestern ein wenig rumprobiert un seit dem sendet mir der Server die selbe Nachricht c.a. 200 mal am tag dabei ist das alte formular garnicht mehr drinne

    LG

  2. Hi!

    Hi @ all
    habe einige Probleme mit meinem Kontaktformular

    Vielleicht kann Ingo dir weiterhelfen:

    * Einfachster, sicherer und universeller Formmailer
    * Captchas sind Blödsinn - Alternativen gegen Spam

    FG Ulysses

  3. Hi,

      	$v0 = $\_POST ["anrede"];  
      	$v1 = $\_POST ["anrede"];  
    

    Zweimal das Feld anrede?

    Name: ".$v0."".$v1."&nbsp;".$v2."&nbsp;".$v3."&nbsp;".$v4."

    Und auch zweimal eingefügt ...

    Warum kopierst Du die Felder aus $_POST überhaupt um, statt direkt dort $_POST einzusetzen, wo Du es brauchst?

    <input type="radio" name="radio" id="anrede" value="anrede" />
        Herr</label>
      <label>
        <input type="radio" name="radio" id="anrede" value="anrede" />
        Frau</label>

    Daß hier immer "anrede" übermittelt wird, ist doch klar, schließlich ist der value immer "anrede".

    <option value="Bischof">Bischof</option>
    <option value="Dr.">Dr.</option>
    <option value="Dr. Dr.">Dr. Dr.</option>
    <option value="Dr. habil.">Dr. habil.</option>
    <option value="Dr. Ing.">Dr. Ing.</option>
    <option value="Dr. med.">Dr. med.</option>
    <option value="Dr. med. vet.">Dr. med. vet.</option>
    <option value="Dr. med. dent.">Dr. med. dent.</option>
    <option value="Dr. rer. nat.">Dr. rer. nat.</option>
    <option value="Dr. Ing. h. c.">Dr. Ing. h. c.</option>
    <option value="Dr. phil. i. h. h. c.">Dr. phil. i. h. h. c.</option>
    <option value="Freifrau">Freifrau</option>
    <option value="Freiherr">Freiherr</option>
    <option value="Graf">Graf</option>
    <option value="Pfarrer">Pfarrer</option>
    <option value="Prof. Dr.">Prof. Dr.</option>
    <option value="Prof. Dr. med.">Prof. Dr. med.</option>
    <option value="Prof. Dr. rer. nat.">Prof. Dr. rer. nat.</option>
    <option value="Prof. Dr.-Ing.">Prof. Dr.-Ing.</option>
    <option value="Prof.">Prof.</option>

    Was passiert, wenn ein Freiherr Professor wird?
    Oder andere Kombinationen wie Bischof mit Doktortitel usw.
    Braucht es den Titel bei einem Kontaktformular überhaupt?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  4. Hello,

    whois internic.net: No match for domain "RENE171188.NET".

    C:>ping RENE171188.NET
    Ping-Anforderung konnte Host "RENE171188.NET" nicht finden. Überprüfen Sie den Namen, und versuchen Sie es erneut.

    ist das eine Dyn-DNS-Adresse?

    Und was meinst Du mit "brakes"?
    Das sind übersetzt "Bremsen"

    Meintest Du vielleicht "brackets"?

    Was beabsichtigst Du mit dieser Zeile?

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="application/x-www-form-urlencoded" name="kontakt">

    Ist der Encryption-Type hier bewusst von Dir gewählt worden?
    Bist Du Dir über die XSS-Gefahr von $_SERVER['PHP_SELF'] im Formular bewusst?

    Das Thema "Optionen und Alternativen in Formularen" haben ja Andere hier schon angesprochen. Wenn Du unterschiedliche Datenaspekte aus den Post-Parametern in Datentypen im Script verwandeln willst, musst Du erst einmal wissen, welche Variablen Du erwartest und in welchen Typ sie konvertierbar wsein sollen. PHP macht bereits Variablen aus den Parametern, aber weist ihnen allen den Typ "String" (Skalar) zu. Nur solche Parameter, die mit [] im Formular gekennzeichnet wurden, werden in Arrays verpackt. Die einzelnen Elemente erhalten aber auch wieder den Typ "String".

    Es liegt nun an Dir:

    1. Skalare Größen von den Arrays zu trennen
    2. Die Umwandlungsvorschriften für jedes einzelne Element festzulegen, anzuwenden
       und zu überprüfen, ob sie erfolgreich waren.
    3. eine eigene, manipulationssicher eingebrachte Vergeleichsstruktur bereit zu halten,
       mit deren Hilfe Du die erhaltenen Werte prüfst auf:

    3a. durften sie überhaupt gesendet werden?
       3b. konnte sie erfolgreich in den Zieltyp umgewandelt werden?
       3c. liegt der ermittelte Wert im Gültigkeitsbereich?
       3d. sind alle erwarteten Werte übermittelt worden?

    Lass es mich bitte mal so zusammenfassen:

    Du willst ungeheuer viel in deinem Script erreichen, hast es aber bisher noch nicht einmal geschafft, einzelne Aufgaben in Funktionen zu verpacken. Außerdem solltest Du Steuerflusskontrolle (also die Entscheidungsstruktur) und Datenverarbeitung voneinandr trennen, soweit es geht.

    Wenn Du das geschafft hast, lohnt es sich, die bis dahin entstandenen Bausteine einzeln zu diskutieren und zu verbessern, vielleicht sogar, das Ganze dann mit OOP zu redesignen. Dazu solltest Du aber die einzelnen Aufgaben erst einmal identifizieren können und sauber voneinander trennen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de