Fabian: Kontaktformular/ Echo-Alert macht nicht was er soll!

hallo,

und wieder einmal jemand der eigentlich keine ahnung hat, und "da-irgendwie-reingeraten-ist", tut mir leid.

also mein problem ist, dass wenn man mein kontaktformular inkorrekt ausfüllt, die hinweise (alert, echo php) nicht vor der eigentlichen site auftauchen sondern vor weißem bzw. grauem hintergrund. ein übliches problem wie es scheint. aber ich kriegs nicht gebacken, hab alles versucht.

die vorlage stammt hier her: html.de

hier der code fürs php:

  
  
<?php  
  
$anrede = $_POST['anrede'];  
$name = $_POST['name'];  
$firstname = $_POST['firstname'];  
$mail = $_POST['mail'];  
  
$street = $_POST['street'];  
$plz = $_POST['plz'];  
$ort = $_POST['ort'];  
  
$country = $_POST['country'];  
$phonenumber = $_POST['phonenumber'];  
  
$thema = $_POST['thema'];  
$termin = $_POST['termin'];  
  
  
  
$send = $_POST['send'];  
  
function checkEmail( $mail )  
{  
    $nonascii      = "\x80-\xff";  
    $nqtext        = "[^\\\\$nonascii\015\012\"]";  
    $qchar         = "\\\\[^$nonascii]";  
    $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';  
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";  
    $user_part     = "(?:$normuser|$quotedstring)";  
    $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';  
    $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';  
    $dom_tldpart   = '[a-zA-Z]{2,5}';  
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";  
    $pattern       = "$user_part\@$domain_part";  
  
    if (!preg_match( "/$pattern$/", $mail ))  
    {  
        return FALSE;  
    }  
    else  
    {  
        return TRUE;  
    }  
	  
	  
	  
	  
	  
}  
  
if(isset($send)){  
  
  if ($name == "") {  
    echo "<script type=\"text/javascript\"> alert(\"Sie haben Ihren Namen nicht angegeben!\");</script>";  
		  
  } elseif ($firstname == "") {  
    echo "<script type=\"text/javascript\"> alert(\"Sie haben Ihren Namen nicht angegeben!\");</script>";  
	  
  } elseif (!checkEmail( $_REQUEST['mail'] )) {  
    echo "<script type=\"text/javascript\"> alert(\"Die angegebene Email Adresse ist nicht gueltig!\");</script>";  
	  
  } else {  
  
  
  
  
$datum = date("d.m.Y");  
  $uhrzeit = date("H:i");  
  $datum=$datum ."-". $uhrzeit ."Uhr";  
  
  
  
    $ich = "mail@fabiankuenzel.de";  
  $betreffemail = "Kontaktformular";  
  $text =  
  
  "Anrede: ".$anrede."  
  Name: ".$name."  
  Vorname: ".$firstname."  
  
  E-Mail: ".$mail."  
  Strasse, Nr.: ".$street."  
  PLZ: ".$PLZ."  
  ORT: ".$ort."  
  
  Land: ".$country."  
  Telefon: ".$phonenumber."  
  Rückruf: ".$termin."  
  
  
  Thema: ".$thema."  
  Sendedatum: ".$datum."  
  
  
  
  ";  
  mail($ich, $betreffemail, $text,  
  "From: Absender <Absenderemail>");  
  echo"Ihre Nachricht wurde erfolgreich verschickt! <br>";  
  
echo"<script type=\"text/javascript\"> alert(\"Ihre Nachricht wurde erfolgreich verschickt!\");</script>";  
  
  
  
}  
}  
?>

hier der code fürs formular (leider tabellenlastig - ging nicht anders)

<form action="Kontakt.php" target="_self" method="post" enctype="multipart/form-data" name="contact" id="contact" type="text/plain">  
    <div style="WIDTH: 940px; padding: 0px 0px 0px 0px;" id="contact">  
  
      <table width="940" border="0" align="center" cellpadding="0" cellspacing="0" class="label_dialog" style="WIDTH: 100%;">  
      <tbody>  
  
    <tr style="WIDTH: 100%; HEIGHT: 30px">  
	<td width="453" height="30"><div id="anrede_label">Anrede*</div></td>  
  
	<td style="WIDTH: 313px"><select name="anrede" style="FLOAT: left; width: 470px;" onChange="axpw_changeSelect(this);">  
    <option selected>Bitte wählen</option>  
    <option>Frau</option> <option>Herr</option></select>  
	<input id="txt_anrede" type="hidden"></td></tr>  
  
  
	<tr style="HEIGHT: 30px">  
    <td width="453">  
    <div id="txt_name_label">Name*</div></td>  
    <td><input name="name" style="WIDTH: 470px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
    <tr style="HEIGHT: 30px">  
    <td width="453">  
	<div id="txt_vorname_label">Vorname*</div></td>  
    <td><input name="firstname" style="WIDTH: 470px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
    <tr style="HEIGHT: 30px">  
    <td width="453">  
    <div id="txt_mail_label">E-Mail*</div></td>  
    <td><input name="mail" style="WIDTH: 470px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
    <tr style="HEIGHT: 30px">  
    <td width="453">  
    <div id="txt_strasse_label">Strasse, Nr.</div></td>  
    <td><input name="street" style="WIDTH: 470px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
    <tr style="HEIGHT: 30px">  
    <td width="453">  
    <div id="txt_plz_label">PLZ, Ort</div></td>  
    <td width="487"><input name="PLZ" class="label_dialog_plz"  id="txt_plz" style="WIDTH: 233px; background-color: #F6F1DD; height: 25px;">  
	<input name="ort" style="WIDTH: 233px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
	<tr style="HEIGHT: 30px">  
    <td width="453">  
    <div id="txt_telefon_label">Telefon</div></td>  
    <td colspan=""><select style="FLOAT: left; width: 231px;" onChange="axpw_changeSelect(this);" name="country">  
    <option selected>Bitte wählen</option>  
    <option>DE</option> <option>AT</option> <option>CH</option> <option>LU</option> <option>LI</option></select>  
    <input id="txt_country" type="hidden">  
  
    <input name="phonenumber" style="WIDTH: 232px; background-color: #F6F1DD; height: 25px;"></td></tr>  
  
	<tr style="WIDTH: 100%; HEIGHT: 30px">  
  	<td width="453" style="WIDTH: 85px">  
    <div id="txt_termin_label">Anliegen | Thema | Sonstiges</div></td>  
  	<td style="WIDTH: 335px"><span class="sendContact" style="WIDTH: auto">  
    <textarea name="thema" id="thema" style="width:470px; background-color:#F6F1DD"></textarea>  
  	</span></td></tr>  
  
  
	<tr style="WIDTH: 100%; HEIGHT: 30px">  
 	 <td width="453" style="WIDTH: 85px">  
 	 <div id="txt_rtermin_label"><span style="WIDTH: 335px">Rückruf in der Zeit von - bis erbeten</span></div></td>  
 	 <td style="WIDTH: 335px"><input name="termin" style="WIDTH: 470px; background-color:#9BEA96; height: 25px;"> </td></tr>  
  
	<tr style="WIDTH: 100%; HEIGHT: 30px">  
	<td colspan="2" class="sendContact" style="WIDTH: auto">  
	  <br>  
	<input type="submit" name="send" id="send" value="Abesnden" style="width:920px; text-align:center; background-color:#000; color:#FFF">  
	</td></tr></tbody></table>  
  
      *Die   markierten Felder sind Pflichtfelder.  
  
    </div>  
  
  
  
     </form>

ich studiere eigentlich was ganz anderes. hab mit dreamweaver angefangen und verdien halt ein bisschen geld damit. wäre toll wenn ihr mir helfen könntet.

die site is auf meinem testserver der uni.

bin gespannt wo der fehler liegt

  1. Mahlzeit Fabian,

    also mein problem ist, dass wenn man mein kontaktformular inkorrekt ausfüllt, die hinweise (alert, echo php) nicht vor der eigentlichen site auftauchen sondern vor weißem bzw. grauem hintergrund.

    Ich ahne bzw. befürchte etwas.

    ein übliches problem wie es scheint. aber ich kriegs nicht gebacken, hab alles versucht.

    Alles ganz sicher nicht.

    die vorlage stammt hier her: html.de

    Warum wendest Du Dich nicht an den Ersteller dieser Vorlage(n)?

    $anrede = $_POST['anrede'];

    Diese Zeile ist - genauso wie die folgenden - überflüssig und gefährlich. Entsorge sie *RESTLOS* und arbeite lieber im eigentlichen Code direkt mit $_POST ... ansonsten handelst Du Dir einen Haufen Sicherheitslücken ein!

    if ($name == "") {
        echo "<script type="text/javascript"> alert("Sie haben Ihren Namen nicht angegeben!");</script>";

    Meine Ahnung bzw. Befürchtung von oben hat sich soeben bestätigt. Du gibst einfach so mitten ins Nichts mal ein <script>-Element mit darin enthaltenem Javascript-Code aus? Und dann wunderst Du Dich, dass zu diesem Zeitpunkt noch keine (Rest-)Seite im Browser angezeigt wird?

    Informiere Dich zum Thema EVA-Prinzip!

    <div style="WIDTH: 940px; padding: 0px 0px 0px 0px;" id="contact">

    CSS-Angaben gehören ins Stylesheet und nicht ins Element!

    <td width="453" height="30"><div id="anrede_label">Anrede*</div>

    Für so etwas gibt es extra das Element <label>.

    ich studiere eigentlich was ganz anderes. hab mit dreamweaver angefangen und verdien halt ein bisschen geld damit.

    Nein. Du verdienst es nicht. Du bekommst es vielleicht, aber Du verdienst es nicht. Leute, die mit dem Nightmareweaver zusammengeschusterte Seiten "verkaufen", sollten eigentlich gar nichts dafür bekommen. Allerhöchstens Stockschläge. Oder Peitschenhiebe. (1)

    wäre toll wenn ihr mir helfen könntet.

    Wenn Du uns™ ein bisschen von dem bisschen Geld abgibst ... ansonsten wäre das eine ziemliche Frechheit, meinst Du nicht?

    bin gespannt wo der fehler liegt

    Layer 8.

    (1) In den See, in den See mit einem Gewicht an den Füßen wäre dann aber doch zu hart.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi!

      $anrede = $_POST['anrede'];

      Diese Zeile ist - genauso wie die folgenden - überflüssig und gefährlich. Entsorge sie *RESTLOS* und arbeite lieber im eigentlichen Code direkt mit $_POST ... ansonsten handelst Du Dir einen Haufen Sicherheitslücken ein!

      Was ist denn daran sicherheitslückig? Das umkopieren ist überflüssig. Es hat aber eigentlich nur den Nachteil, Übersichtlichkeit durch die Einführung einer Reihe weiterer Variablen zu verringern und die Komplexität unnötig zu erhöhen. Zudem ist es in diesem Fall nur Mehrarbeit, denn die Werte werden anschließend nur ein einziges Mal verwendet. Sicherheitslücken kommen durch das Umkopieren jedenfalls nicht automatisch zustande. Man muss dann schon noch die notwendigen Maskierungen beim Einfügen in andere Kontexte vergessen. Aber den Kontextwechsel muss man generell beachten, nicht nur mit Eingabewerten.

      Lo!

      1. Mahlzeit dedlfix,

        Was ist denn daran sicherheitslückig?

        Daran selbst nichts. Aber wenn man im weiteren Code-Verlauf nicht $name, sondern $_POST['name'] verwendet, zündet der in Brain 1.0 integrierte "Achja-ich-muss-ja-Kontextwechsel-beachten-und-immer-alle-notwendigen-Maskierungen-vornehmen"-Trigger zuverlässiger.

        Aber den Kontextwechsel muss man generell beachten, nicht nur mit Eingabewerten.

        Wie wahr, wie wahr. Aber genau das wird durch das direkte Verwenden von $_GET, $_POST usw. erleichtert - gerade bei "Anfängern".

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hi!

          Aber wenn man im weiteren Code-Verlauf nicht $name, sondern $_POST['name'] verwendet, zündet der in Brain 1.0 integrierte "Achja-ich-muss-ja-Kontextwechsel-beachten-und-immer-alle-notwendigen-Maskierungen-vornehmen"-Trigger zuverlässiger.

          Soweit die Annahme. Er muss aber immer zünden, nicht nur bei Eingabewerten. HTML-Code an sich beispielsweise ist für eine Datenbank kein Problem, man muss nur Anführungszeichen beachten. Wenn aber dieses HTML wieder aus dem DBMS kommt, ist der "$_POST-Trigger" nicht mehr da. Trotzdem muss man beim Einfügen in den HTML-Kontext die Behandlung der HTML-eigenen Zeichen beachten, sonst kann diese Lücke indirekt über den DBMS-Umweg ausgenutzt werden. Dieser Ablauf, vom Anwender ins DBMS und später ins HTML (nebst aller kleinen Schritte), ist zumindest für Anfänger schon recht komplex. Er darf sich da nicht in falscher Sicherheit wiegen, nur weil sein "Trigger-Auslöser" nicht da ist. Aus Sicherheittechnischer Sicht muss der Trigger nur Kontextwechsel und nicht Eingabedatenbehandlung lauten. Letztere braucht man aus fachlicher Sicht.

          Aber den Kontextwechsel muss man generell beachten, nicht nur mit Eingabewerten.
          Wie wahr, wie wahr. Aber genau das wird durch das direkte Verwenden von $_GET, $_POST usw. erleichtert - gerade bei "Anfängern".

          Mag sein, aber das ist nicht ausreichend genug. Deswegen sehe ich das nicht als besonders gutes Kriterium an.

          Lo!

          1. Mahlzeit dedlfix,

            Er muss aber immer zünden, nicht nur bei Eingabewerten.

            Das weißt Du. Das weiß ich. Das wissen viele andere (hier im Forum und anderswo). Es gibt aber immer wieder viel zu viele Leute, denen das nicht so bewusst ist. Und denen fällt bei einem

            $sql = "SELECT foo FROM bar WHERE id = ".$_POST['id'];

            meistens eher auf, dass dort ja mit potentiell unsicheren Werten gearbeitet wird und man diese noch speziell behandeln sollte als bei einem

            $sql = "SELECT foo FROM bar WHERE id = $id";

            Schau Dir nur die ständigen Fragestellungen hier im Forum zu genau diesem Thema an ...

            Es geht mir nicht (und ging mir nie) darum, dass alles gut wird, wenn man nur dieses unsinnige Umkopieren lässt. Und natürlich hast Du Recht, dass Kontextwechsel *IMMER*!!!111einseinsELF beachtet werden müssen.

            Mir ging es nur darum, es Anfängern zu erleichtern, daran auch zu denken. Und da hilft IMHO das Eine beim Anderen ...

            Mag sein, aber das ist nicht ausreichend genug. Deswegen sehe ich das nicht als besonders gutes Kriterium an.

            Mag sein, aber ich finde, man sollte es Anfängern so gut es geht erleichtern, guten und sicheren Code zu schreiben. Dazu gehört natürlich, ihnen von Beginn an beizubringen, Kontextwechsel zu beachten - diese sind aber gerade für Anfänger nicht immer leicht zu erkennen.

            Dazu gehört aber außerdem, ihnen dieses unsägliche Umkopieren abzugewöhnen. Und wenn das schon bewirkt, dass sie beim Zusammenbasteln von Strings, bei dem Kontextwechsel zu beachten sind, stutzig werden, dann erleichtert ihnen das dann, dort richtig(er) zu handeln.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hi!

              Er muss aber immer zünden, nicht nur bei Eingabewerten.
              Das weißt Du. Das weiß ich. Das wissen viele andere (hier im Forum und anderswo). Es gibt aber immer wieder viel zu viele Leute, denen das nicht so bewusst ist.

              Dann bring ihnen das gleich richtig bei. Sonst wiegen sie sich nur in falscher Sicherheit.

              Und denen fällt bei einem
              $sql = "SELECT foo FROM bar WHERE id = ".$_POST['id'];
              meistens eher auf, dass dort ja mit potentiell unsicheren Werten gearbeitet wird und man diese noch speziell behandeln sollte als bei einem
              $sql = "SELECT foo FROM bar WHERE id = $id";

              Ja, weil ihnen häufig nur erzählt wird "Eingabedaten sind böse". Nein, sind sie nicht. Der nicht beachtete Kontextwechsel ist der Übeltäter - mit allen Arten von Datenquellen.

              Mir ging es nur darum, es Anfängern zu erleichtern, daran auch zu denken. Und da hilft IMHO das Eine beim Anderen ...

              Guter Vorsatz, nur eben weiterhin mit anderen Sicherheitslücken.

              Mag sein, aber ich finde, man sollte es Anfängern so gut es geht erleichtern, guten und sicheren Code zu schreiben. Dazu gehört natürlich, ihnen von Beginn an beizubringen, Kontextwechsel zu beachten - diese sind aber gerade für Anfänger nicht immer leicht zu erkennen.

              Ich weiß, das Thema ist jedoch so komplex, dass man nicht beliebig vereinfachen kann. Mir ist bewusst, dass sehr viele die Einfachheit lieben und mit komplexen Dingen ihre Schwierigkeiten haben - geht mir prinzipiell nicht anders - aber Vereinfachungen sind oft ein Kompromiss, der irgendwo Abstriche machen muss. Bei der Sicherheit ist das allerdings bedenklich.

              Lo!

              1. ich wollte ja hier gar keine gemüter erregen. ich mache das eigentlich nur, weil der dem die firma gehört ansonsten keinen kennt der's kann und er mir halt optisch vertraut. egal. danke für die vielen kommentare.

                also beide codesegmente der php. und der html code stehen in ein und dem selben dokument. das eine im head das andere eben im body.

                anscheinend ist das tutorial dass ich verwendet habe ja wohl nicht das beste. kennt noch jemand eines das besser funktioniert und mir vielleicht umfangreicher erklärt was ich da gerade in den dreamweaver tippe?

                dann mache ich das schritt für schritt nochmal.

                besten dank

                ps. mir ist schon aufgefallen dass im tutorial von einem code-typ zum anderen gewechselt wird. und das kam mir auch spanisch vor. habe bloß kein einfacheres gefunden.

                1. Hi!

                  ich wollte ja hier gar keine gemüter erregen. ich mache das eigentlich nur, weil der dem die firma gehört ansonsten keinen kennt der's kann und er mir halt optisch vertraut. egal. danke für die vielen kommentare.

                  Mach dir mal keine Sorgen um uns. Manchmal muss man unter Wissenden "ausfechten" wie man dieses Wissen am besten zur Weitergabe aufbereitet.

                  also beide codesegmente der php. und der html code stehen in ein und dem selben dokument. das eine im head das andere eben im body.

                  Der PHP-Code kann komplett vor dem HTML-Teil stehen. Das ist vor allem für solche Fälle wichtig, wenn mit HTTP-Header-beeinflussenden Funktionen gearbeitet wird (z.B: setcookie(), header()). Zudem kommst du damit dem EVA-Prinzip ein Stück näher. Erst _E_ingabedaten auf fachlich gültigen Inhalt testen (gegebenenfalls vorher aus einer Transportsicherung befreien - ist bei PHP meist nicht nötig). Anschließend die _V_erarbeitung, also das was man auch als Geschäftslogik bezeichnet. In dem Teil werden beispielsweise Datenbanken befragt oder Daten gespeichert und die für die Ausgabe relevanten Werte zusammengetragen. Zum Schluss kommt die _A_usgabe und die ermittelten Werte werden in feststehende Textteile eingebettet.

                  anscheinend ist das tutorial dass ich verwendet habe ja wohl nicht das beste. kennt noch jemand eines das besser funktioniert und mir vielleicht umfangreicher erklärt was ich da gerade in den dreamweaver tippe?

                  Formmailer sind eine sehr häufig verwendete Funktionalität. Da sollte sich einiges finden lassen. Der Formmailer-Beitrag in SELFHTML aktuell ist gerade nicht verfügbar, weil der Server defekt ist.
                  Als allgemeine Qualitätsmerkmale würde ich heranziehen:

                  • unnötiges Umkopieren von $_POST-Werten in einfache Variablen unterbleibt
                  • veraltete Funktionen
                  • das Tutorial erklärt den Aufbau anhand der Vorgehensweisen EVA-Prinzip und Affenformular
                  • Kontextwechsel werden beachtet
                  • Es können immer Fehler auftreten. Eine robustes Script/Programm berücksichtigt das und wertet sie aus. Zudem sollte die Alternative im Fehlerfall für den Anwender einen Nutzen bringen und ihm aufzeigen, wie er doch noch ans Ziel kommt. Fehlerbehandlung ist mitunter umfangreicher als die eigentliche Geschäftslogik und sprengt leicht den Tutorial-Rahmen. Zumindest angedeutet sollte sie sein und Erklärungen, was hauptsächlich schief gehen kann, sollten vorhanden sein.
                  • Verzicht auf eine umfangreiche Email-Format-Prüfung. Die schließen meist gültige Adressen aus und helfen nicht die Bohne gegen ungültige Adressen im validen Format.

                  ps. mir ist schon aufgefallen dass im tutorial von einem code-typ zum anderen gewechselt wird. und das kam mir auch spanisch vor. habe bloß kein einfacheres gefunden.

                  Das html.de-Tutorial, das du im OP verlinkt hast, wechselt genau einmal. Aber anscheinend ist das nicht das, was du meinst, denn du hast anderen Code in deinem OP. Die Frage ist, was mit dem Wechsel bezweckt wird. Erklärt das Tutorial eher mit Augenmerk auf eine gute Script-Struktur oder mehr anhand der Abläufe aus Anwendersicht oder mit einer anderen Herangehensweise? Oder missachtet es alle guten Prinzipien und wirft wirklich alles durcheinander?

                  Lo!

                2. Mahlzeit Fabian,

                  kennt noch jemand eines das besser funktioniert und mir vielleicht umfangreicher erklärt was ich da gerade in den dreamweaver tippe?

                  Zusätzlich zu dedlfix' Antwort: PHP entwickelt man nicht im Nightmareweaver. Punkt. Ausrufezeichen!

                  Du mauerst 'ne Wand ja auch nicht auf 'nem Tapeziertisch ...

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. @@Fabian:

    nuqneH

    und wieder einmal jemand der eigentlich keine ahnung hat, und "da-irgendwie-reingeraten-ist", tut mir leid.

    „Die Dissertation verfassen
    Unser wichtigstes Anliegen ist es, Sie bei dieser äußerst zeitaufwändigen Aufgabe wirkungsvoll zu unterstützen. Unsere Leistungen als Ghostwriter Agentur […]“

    Was soll das? Ihr züchtet von Guttenbergs?

    Ich würde an deiner Stelle zusehen, dass ich da irgendwie wieder rausgerate.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo,

      Unser wichtigstes Anliegen ist es, Sie bei dieser äußerst zeitaufwändigen Aufgabe wirkungsvoll zu unterstützen. Unsere Leistungen als Ghostwriter Agentur […]
      Was soll das? Ihr züchtet von Guttenbergs?

      sieht so aus - nur echt mit dem Deppenleerzeichen. ;-)

      Ciao,
       Martin

      --
      Der geistige Horizont ist der Abstand zwischen Brett und Hirn.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. @@Fabian:

    nuqneH

    function checkEmail( $mail )

    BTW, diese Funktion akzeptiert gültige E-Mail-Adressen wie bspw. ivan@россия.рф nicht.

    if (!preg_match( "/$pattern$/", $mail ))
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }

    Wer schreibt solchen Unsinn?

    „Wenn es nicht stimmt, sag dass es nicht stimmt, ansonsten sag, dass es stimmt!“

    Das drückt man einfacher aus: „Sag, ob es stimmt!“:

    return preg_match( "/$pattern$/", $mail );

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. hallo, danke für die tipps bis dato,

      der erste war am hilfreichsten!

      nun zum rest:

      erstens, ich bin nicht für den inhalt verantwortlich, aber auf der site geht es um die vermittlung von doktorvätern, beispielsweise in jena dauert eine promotion drei jahre länger weil eine professorin auf 32 doktoranten kommt. das was die machen is zumindest rechtlich abgesichert.

      das mit dem geld, ok, ich dachte hier geht es darum jemandem beim verstehen zu helfen.

      tut mir leid, mit ein paar und zwanzig braucht man einfach kohle.

      1. Hi!

        das mit dem geld, ok, ich dachte hier geht es darum jemandem beim verstehen zu helfen.

        tut mir leid, mit ein paar und zwanzig braucht man einfach kohle.

        Mit ein ppar und dreissig und entsprechendem Fachwissen braucht man die auch. Bekommt man aber nicht... Ist natuerlich immer schwer zu verstehen.

        Antworten die dein Problem betreffen und dir helfen sollten, es zu loesen hast Du auch bekommen. Der Rest: Wenn Du mal fertig studiert und nur nen mieselig bezahlten Job hast und dauernd kommt jemand der keine Ahnung davon hat, aber dafuer Geld bekommt und dich fragt, wie gehts Dir dann?

        --
        Vergesst Chuck Norris.
        Sponge Bob kann unter Wasser grillen!
      2. Mahlzeit fabian,

        das mit dem geld, ok, ich dachte hier geht es darum jemandem beim verstehen zu helfen.

        Ja - grundsätzlich schon. Wenn man dann aber als Teilnehmer liest, dass jemand trotz mangelndem Grundverständnis für seine lieblos zusammengestoppelten "Seiten" Geld bekommt und jetzt hier auf Hilfe zum Geldverdienen (und nicht Hilfe zur Selbsthilfe) hofft, stößt das einfach ein bisschen sauer auf ... vor allem, wenn - wie Steel schilderte - man selbst für den gefühlten Apfel samt Ei arbeiten soll.

        tut mir leid, mit ein paar und zwanzig braucht man einfach kohle.

        Gegen "Kohle für Leistung" ist ja auch nichts zu sagen - gegen "Kohle für heiße Luft" schon.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. jemand trotz mangelndem Grundverständnis für seine lieblos zusammengestoppelten "Seiten" Geld bekommt und jetzt hier auf Hilfe zum Geldverdienen (und nicht Hilfe zur Selbsthilfe) hofft, stößt das einfach ein bisschen sauer auf ... vor allem, wenn - wie Steel schilderte - man selbst für den gefühlten Apfel samt Ei arbeiten soll.

          man mädels, entspannt euch ;-) es ist so offensichtlich, dass ihr frustriert seid. sucht euch doch einfach andere hobbies als fragestellende zu beleidigen in welchem post auch immer ihr könnt. es gibt ja glücklicherweise auch hier personen, die auf gestellte fragen antworten und nicht den weisen erhabenen itfachmann raushängen lassen, der auch noch allgemeine verhaltensregelen mitgibt, nachdem er sich zur kommentarreaktion herab gelassen hat.

          es ist doch ganz einfach: das netz ist voll von antworten, das weiß JEDER. manche menschen können eben am besten selber lernen, indem sie youtube videos gucken, manche lesen api dokus oder tutorials oder bücher und manche, surpsrise surprise, verstehen dinge am besten wenn sie sie direkt mit anderen teilen und eine menschlich formulierte erklärung dazu erhalten. und heyho disco, wenn ihr soviel arbeitet und so wenig bekommt, dass ihr frustriert seid, dann antwortet doch gar nicht erst auf so "banale" posts. ob der fragesteller damit geld verdient oder nicht kann euch so derbe egal sein.

          ihr habt doch auch nicht mit 20 schon alle tutorials dieser welt gelesen und habt beim jobeinstieg immer alles sofort vom gehirn in die hand im texteditor runtergecoded oder was? oder habt ihr wirklich nie kollegen gefragt oder euch sonstwie helfen lassen?

          achtung pseudo (aber bestimmt korrigiert mich hier einer, ders nicht lassen kann): wenn ärger in the brain while reading post--> leave post, smile and step to next one.. oder so.

          hach, das verstehe wer will. das ist ne ganz eigene mentalität, über die es sich fast lohnt satirische kolumnen zu verfassen. ggf. gibt es einen link :-)

          1. @@sho:

            nuqneH

            manche lesen api dokus oder tutorials oder bücher

            Manche ersparen sich das Lesen von Büchern lieber …

            und manche, surpsrise surprise, verstehen dinge am besten wenn sie sie direkt mit anderen teilen

            … und manche, surpsrise surprise, kommen am besten zu ihrem Doktortitel, wenn sie sie ihre Dissertation mit anderen teilen – sprich: von anderen schreiben lassen.

            Dabei mag ich nicht behilflich sein.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
        2. @@EKKi:

          nuqneH

          tut mir leid, mit ein paar und zwanzig braucht man einfach kohle.

          Gegen "Kohle für Leistung" ist ja auch nichts zu sagen

          Doch. Es kommt drauf an, worin die Leistung besteht. Niemand sollte der Kohle willen eine Leistung erbringen, die er mit seinem Gewissen nicht vereinbaren kann.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
  4. also mein problem ist, dass wenn man mein kontaktformular inkorrekt ausfüllt, die hinweise (alert, echo php) nicht vor der eigentlichen site auftauchen sondern vor weißem bzw. grauem hintergrund. ein übliches problem wie es scheint. aber ich kriegs nicht gebacken, hab alles versucht.

    ---

    Hi Fabian,
    der Code ist korrekt und funktioniert auch.
    Das was du siehst ist einfach eine weiße Seite, weil es so gewollt ist.
    Ich muss schon sagen, dass dieses Kontaktformular keine gute usability hat.
    Und wenn du das schon nicht richtig verstehst, dann wird es der OttonormalBenutzer erst recht nicht verstehen.

    Annahme: Ich gehe mal davon aus, dass du eine Datei mit dem HTML-Tabellen-Code angelegt hast (nennen wir sie einfach mal index.html). Korrigier mich bitte wenn ich falsch liege. Dann existiert eine zweite Datei Namens "Kontakt.php" in dem der PHP-Code drin steht. Diesen Dateinamen hast du ja im Form-Tag Action-Attribut angegeben, deswegen gehe ich davon aus.

    Was passiert nun als nächstes?

    Du füllst das Kontaktformular (index.html) aus und sendest die Formulardaten nun an die Kontakt.php-Datei.

    Kontakt.php verarbeitet die Kontaktdaten und bemerkt nun, dass die Email falsch eingegeben wurde und erzeugt einen Javascript Alert.

    Die Kontakt.php-Datei funktioniert also korrekt, ist aber extrem Userunfreundlich, da der User jetzt nämlich weiß, dass er etwas falsch gemacht hat, aber eine "weißen"(leere) Website angezeigt bekommt.

    Was dem User nicht gesagt wird ist, dass er auf den Browser-Zurück-Button klicken muss, um wieder auf die Kontaktformular-Seite zu gelangen. Und je nach Browsereinstellung sind evtl. auch die bereits vorher ausgefüllten Felder leer.

    Mein Tipp: Such dir einfach ein anderes OnlinekontaktScript oder investier etwas Zeit und  modifizier die Kontakt.php-Datei oder versuche selber eins zu Programmieren oder schau ob du jemanden kennst der dir eines Programmiert.

    Gruß Metalgurke