Anzeige

Warum geht das nicht ?

Warum geht das nicht ? | PSD-Tutorials.de

Erstellt von M4tman, 06.12.2006.

  1. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    Hi,
    Hab mal n frage, ich bin gerade dabei PHP zu lernen, hab mir ein Buch geholt und lerne daraus, zum anfang wollte ich mal ein ganz Simpels Kontakt-Formular erstellen.
    Könntet ihr mal gucken was daran falsch ist, warum ich die Mail nicht bekomme ?
    [php:1:3552ca81f3]


    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    </head>
    <body>
    <?php


    mail("meineem@il.de","test01Contact",

    // Felder //
    "Nickname: $name1 \n
    Email: $mail1 \n
    Text: $text \n",

    // Von //
    "From: test01");
    ?>
    <center>
    <h2>Ein Contact Formular</h2>
    <form method="post" action="<? $php_self ?>">
    <TABLE border=0 style="WIDTH: 237px; HEIGHT: 105px">


    <TR>
    <TD>


    Name:</P></TD>
    <TD><input name="name1" id="name1" ></TD></TR>
    <TR>
    <TD>Email:&</TD>
    <TD><INPUT
    id="email1 ></TD></TR>


    <TR>

    <TD>Text: </TD >
    <TD><textarea rows="
    name=email1 cols="2" text? 2? name?></TD></TR>
    <TR>
    <TD>Text:</TD>
    <TD><TEXTAREA name="eingabetext" rows="5" id="text" name="text"></TEXTAREA>
    </TD></TR>
    </TABLE>
    <input type="submit" value="Abschicken" />
    </form>
    <CENTER></CENTER>
    </body>
    </html>
    [/php:1:3552ca81f3]
    Danke
     
    #1      
  2. NicoB

    NicoB Hat es drauf

    Dabei seit:
    22.07.2005
    Beiträge:
    3.491
    Geschlecht:
    weiblich
    Warum geht das nicht ?
    Erstmal würde ich dem Absend-Button einen namen geben:
    [php:1:852c06e33e]<input type="submit" value="Los »" name="sendbutton">[/php:1:852c06e33e]

    Dann definieren wir den PHP-Bereich ein wenig anders:
    [php:1:852c06e33e]<?php
    IF($_POST["sendbutton"]){ #mache folgendes nur, wenn der button gedrückt wurde

    $inhalt = 'Nickname: $_POST["name1"] \n
    Email: $_POST["mail1"] \n
    Text: $_POST["text"] \n'; #inhalt

    $abs = "From: test01"; #Absender

    $erfolg = mail("meineem@il.de",$betreff,$inhalt,$abs);
    IF($erfolg) echo 'Die E-Mail wurde verschickt.'; #wenn email verschickt, dann schreibe dies auch
    }
    ?>[/php:1:852c06e33e]

    Liegt wahrscheinlich daran, dass die register_globals aus sind. Dann kannst du nicht einfach POST-Variablen mit $name ansprechen, sondern z.B. mit $_POST["name"]
     
    #2      
  3. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    danke erstmal,
    Wenn ich es dann ausprobieren will kommt folgende fehlermeldung:

    Parse error: syntax error, unexpected T_EXIT in /usr/export/www/vhosts/funnetwork/hosting/t4d/send/post01/contact.htm on line 24

    Zeile 24 : [php:1:d46d1d7de3]IF($erfolg) echo 'Die E-Mail wurde verschickt.';[/php:1:d46d1d7de3]
     
    #3      
  4. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    Warum geht das nicht ?
    [php:1:abaa892482]IF($erfolg){ echo 'Die E-Mail wurde verschickt.';}[/php:1:abaa892482]
     
    #4      
  5. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    Es kommt die gleiche Fehlermeldung :

    Parse error: syntax error, unexpected T_EXIT in /usr/export/www/vhosts/funnetwork/hosting/t4d/send/post01/contact.htm on line 24

    ???

    Was tun ?
     
    #5      
  6. DocUhu

    DocUhu Guest

    Warum geht das nicht ?
    ... on line 24:

    Dann suche man Zeile 24, kopiere 23-25 und poste den entsprechenden Code hier ;)

    Code (Text):
    1. <html>
    2. <head>
    3.     <title></title>
    4.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    5.  
    6. </head>
    7. <body>
    8. <?php
    9. IF($_POST["sendbutton"]){ #mache folgendes nur, wenn der button gedrückt wurde
    10.  
    11. $inhalt = 'Nickname: $_POST["name1"] \n
    12. Email: $_POST["mail1"] \n
    13. Text: $_POST["text"] \n'; #inhalt
    14.  
    15. $abs = "From: test01"; #Absender
    16.  
    17. $erfolg = mail("meineem@il.de",$betreff,$inhalt,$abs);
    18. IF($erfolg) echo 'Die E-Mail wurde verschickt.'; #wenn email verschickt, dann schreibe dies auch
    19. }
    20. ?>
    21. <center>
    22. <h2>Ein Contact Formular</h2>
    23. <form method="post" action="<? $_SERVER['PHP_SELF']; ?>">
    24. <TABLE border=0 style="WIDTH: 237px; HEIGHT: 105px">
    25.  
    26.  
    27.   <TR>
    28.     <TD>
    29.      
    30.  
    31. Name:</P></TD>
    32.     <TD><input name="name1" id="name1" ></TD></TR>
    33.   <TR>
    34.     <TD>Email:&</TD>
    35.     <TD><INPUT
    36.       id="email1 ></TD></TR>
    37.      
    38.    
    39.     <TR>
    40.  
    41.     <TD>Text: </TD >
    42.  <TD><textarea rows="
    43.       name=email1 cols="2" text? 2? name?></TD></TR>
    44.   <TR>
    45.     <TD>Text:</TD>
    46.     <TD><TEXTAREA name="eingabetext" rows="5" id="text" name="text"></TEXTAREA>
    47. </TD></TR>
    48. </TABLE>
    49. <input type="submit" value="Los »" name="sendbutton">
    50. </form>
    51. <CENTER></CENTER>
    52. </body>
    53. </html>
    Edit: PHP -> Code sonst unterschlägt das Forum wieder einiges :eek:
     
    #6      
  7. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    so bidde :razz:
    [php:1:ccec8bba7f]$erfolg = mail("em@il.de",$betreff,$inhalt,$abs);
    IF($erfolg){ echo 'Die E-Mail wurde verschickt.';}
    ?>
    [/php:1:ccec8bba7f]
     
    #7      
  8. DocUhu

    DocUhu Guest

    Warum geht das nicht ?
    Sodele, hoffe es funktioniert und es lag daran, daß $betreff nicht definiert war:

    Code (Text):
    1. <html>
    2. <head>
    3.     <title></title>
    4.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    5.  
    6. </head>
    7. <body>
    8. <?php
    9. IF($_POST["sendbutton"]){ #mache folgendes nur, wenn der button gedrückt wurde
    10.  
    11. $inhalt = "Nickname: " . $_POST["name1"] . "\n";
    12. $inhalt.= "Email: " . $_POST["mail1"] . "\n";
    13. $inhalt.= "Text: " . $_POST["text"] . "\n";
    14.  
    15. $abs = "From: test01"; #Absender
    16. $betreff = "Nachricht vom Kontaktformular"; #Betreff
    17.  
    18.  
    19. $erfolg = mail("meineem@il.de",$betreff,$inhalt,$abs);
    20. }
    21. ?>
    22. <h2>Ein Contact Formular</h2>
    23. <form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
    24. <TABLE border=0 style="WIDTH: 237px; HEIGHT: 105px">
    25.  
    26.  
    27.   <TR>
    28.     <TD>Name:</TD>
    29.     <TD><input  name="name1" id="name1" type ="text"></TD></TR>
    30.   <TR>
    31.     <TD>Email:&</TD>
    32.     <TD><input  name="email1" id="email1" type ="text"></TD></TR>
    33.   <TR>
    34.     <TD>Text:</TD>
    35.     <TD><TEXTAREA name="eingabetext" rows="5" id="text" name="text"></TEXTAREA>
    36. </TD></TR>
    37. </TABLE>
    38. <input type="submit" value="Abschicken"  name="sendbutton">
    39. </form>
    40. </body>
    41. </html>
     
    #8      
  9. kojoty

    kojoty Guest

    Warum geht das nicht ?
    Ich will ja nicht klugscheissern..

    Ich will ja nicht klugscheissern..

    aber bei solchen Formularen wo man den ganzen Inhalt der von der Webseite nicht prüft und dann per mail() weitersendet kann es schnell sein, das dich ein spanrobot aufsucht.

    Der versucht dann z.B sowas..

    http://de.wikipedia.org/wiki/E-Mail-Injektion

    das hatte ich auch vor kurzem.
    Also mal ne kurze Zusammenfassung.
    Der Robot gibt in ein Eingabefeld ungefähr sowas ein .. "meineemail@gmx.de \n Bcc:testhack@geheim.de!

    Jetzt wenn der Bot erfolgreich eine Email an testhack@geheim.de erhält, kann er dein Formular für Spawn verwenden.

    Das wäre natürlich sehr schlecht für deine Webseite.

    man kann entweder was mit einer Session machen.. also kucken wie schnell das formular ausgefüllt worden ist.. z.B 3 Sek wäre viel zu schnell.

    Mit Regulären Ausdrücken arbeiten.. prüfen ob ein @ usw drin ist oder // gleich rausschmeissen.

    Mit Session und Ausdrücken hab ich das gemacht.. oder hald noch mit einem Bild .. also der Zahlencode den der Benutzer eingeben muss. Das nennt sich Captcha.

    http://de.wikipedia.org/wiki/Captcha

    das machen die meisten heutzutage.

    mfg Kojoty

    hier gibts ein gutes Absendeformular und die erklären das ganze auch besser wie ich ^^
    http://www.heise.de/security/artikel/66815
     
    #9      
  10. DocUhu

    DocUhu Guest

    Warum geht das nicht ?
    ... immer schön step by step ;)
     
    #10      
  11. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Warum geht das nicht ?
    Warum so kompliziert, wenn mail() true oder false schon liefert ?

    [php:1:3179587d8a]
    if ( mail("em@il.de", $betreff, $inhalt, $abs) )
    echo 'Die E-Mail wurde verschickt.';
    [/php:1:3179587d8a]
     
    #11      
  12. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    Die eine Fehlermeldung ist nun schon einmal weg,jetzt kommt aber die nächste:

    Parse error: syntax error, unexpected T_VARIABLE in /usr/export/www/vhosts/funnetwork/hosting/t4d/send/post01/contact.htm on line 16

    Zeile 15, 16 17:
    [php:1:54720b35a9]// Felder //
    $inhalt = "Nickname: " $_POST["name1"] "\n";
    $inhalt. = "Email: " . $_POST["mail1"] "\n;"[/php:1:54720b35a9]

    Wo muss ich denn die Variable $index bestimmen ? nicht im <form> Tag ?

    ...omg viel schwerer als ich dachte ...
    :D
     
    #12      
  13. DocUhu

    DocUhu Guest

    Warum geht das nicht ?
    ... na, dann vergleiche doch einfach mal :razz:

    [php:1:6784fadd0f]
    $inhalt = "Nickname: " $_POST["name1"] "\n";
    $inhalt. = "Email: " . $_POST["mail1"] "\n;" [/php:1:6784fadd0f]

    und

    [php:1:6784fadd0f]$inhalt = "Nickname: " . $_POST["name1"] . "\n";
    $inhalt. = "Email: " . $_POST["mail1"] . "\n"; [/php:1:6784fadd0f]

    Grüße
     
    #13      
  14. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    aso ja ^^ denkfehler...

    Hmm ... gerade habe ich gelernt das man ein ";" am ende immer Platzieren muss und jetzt:

    Parse error: syntax error, unexpected ';' in /usr/export/www/vhosts/funnetwork/hosting/t4d/send/post01/contact.htm on line 14

    Line 14:
    [php:1:ad3100436c]
    $inhalt = "Nickname: " . $_POST["name1"] . "\n" ;
    [/php:1:ad3100436c]

    Was hab ich denn nun schon wieder falsch gemacht ?
     
    #14      
  15. Schrottie

    Schrottie Schrottie

    Dabei seit:
    06.08.2006
    Beiträge:
    58
    Geschlecht:
    männlich
    Ort:
    Dortmund
    Software:
    -
    Kameratyp:
    -
    Warum geht das nicht ?
    IN der angegebenen Zeile ist kein Syntaxfehler. Es würde Sinn machen wenn du das aktuelle Script noch mal posten könntest damit man den überblick hat.

    Noch ein Hinweis

    abs ist eine PHP-Funktion


    Es ist immer eine potenziele Fehlerquelle wenn der Variablenname identisch ist mit einer Funktion.
     
    #15      
  16. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Warum geht das nicht ?
    [php:1:a718cfb9e2]
    <?php
    if(isset($_POST['neuerkontakt']) AND $_POST['neuerkontakt'] == 1) {
    // In diesem Beispiel kannst du noch etwas basteln, um die Ausgabe der Mail zu verbessern....

    // Prüfen ob Name angegeben wurde
    if(isset($_POST['fname']) AND $_POST['fname'] != '') { $name = htmlspezialchars($_POST['fname']); } else { $fehler = 1; }
    // Prüfen ob E-Mail-Adresse vorhanden ist
    if(isset($_POST['femail']) AND $_POST['femail'] != '') {
    // Prüfen ob E-Mail-Adresse korrekt ist
    if(preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i", $_POST['femail'])) {
    // Alle HTML-Bestandteile rausnehmen, falls vorhanden
    $sender_mail = htmlspezialchars($_POST['fname']);
    }
    else { $fehler = 2; }
    } else $fehler = 3; }
    // Prüfen ob Testinhalt vorhanden ist
    if(isset($_POST['ftext']) AND $_POST['ftext'] != '') {
    // HTML-Bestandteile entfernen
    $f_texta = htmlspezialchars($_POST['ftext']);
    // Alternativ kann man die Mittelung kürzen auf eine Anzahl von Zeichen
    $zeichen = strlen($_POST['ftext'];
    // die 255 kann korrigiert werden....
    if($zeichen > 255) { $fehler = 4; }
    else { $f_text = $f_texta; }
    }
    else { $fehler = 5; }

    // Ist kein Fehler vorhanden, dann mache folgendes....
    if(!isset($fehler) AND $fehler < 1) {
    $absender_der_mail = "FROM: <";
    $absender_der_mail .= "deine_emailadresse@domain.de";
    $absender_der_mail .= ">";
    $formsender_adress = $sender_mail;
    $betreff_des_formu = "Hier gebe einen Text als Betreff für die E-Mail ein.";
    $textmitteilung = $f_text;

    // Mailfunktion nutzen
    mail($formsender_adress,$betreff_des_formu,$textmitteilung,$absender_der_mail);
    header("Location dateiname_zum_dank.html");
    exit();
    }
    }
    ?>
    <html>
    <head>
    <title>Kontaktformular mal anderst</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    </head>
    <body>
    <center>
    <h2>Ein Contact Formular</h2>
    <?php
    if(isset($fehler) AND $fehler == 1) { echo "<p align=\"center\">Du hast deinen Namen nicht angegeben!</p>"; }
    if(isset($fehler) AND $fehler == 2) { echo "<p align=\"center\">Deine E-Mail-Adresse ist nicht korrekt!</p>"; }
    if(isset($fehler) AND $fehler == 3) { echo "<p align=\"center\">Du hast keine E-Mail-Adresse angegeben!</p>"; }
    if(isset($fehler) AND $fehler == 4) { echo "<p align=\"center\">Deine Mitteilung ist zu lang.</p>"; }
    if(isset($fehler) AND $fehler == 5) { echo "<p align=\"center\">Du hast keine Mitteilung verfasst!</p>"; }
    ?>
    <form method="post" action="meinedatei.php">
    <input type="hidden" name="neuerkontakt" value="1" />
    <table border=0 style="WIDTH: 237px; HEIGHT: 105px">
    <tr>
    <td>

    Name:</p></td>
    <td><input name="fname" size="35" value="<?php if(isset($_POST['fname'])) { echo $_POST['fname']; } ?>" id="name1" /></td>
    </tr><tr>
    <td>Email:&</td>
    <td><input type="text" name="femail" size="35" value="<?php if(isset($_POST['femail'])) { echo $_POST['femail']; } ?>" /></td>
    </tr><tr>
    <td>Text:</td>
    <td><textarea name="ftext" rows="5" cols="40" value="<?php if(isset($_POST['ftext'])) { echo $_POST['ftext']; } ?>"><?php if(isset($_POST['ftext'])) { echo $_POST['ftext']; } ?></textarea></td>
    </tr><tr>
    <td colspan="2"><p align="center"><input type="submit" value="senden" /></p></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    [/php:1:a718cfb9e2]

    Hier kann man natürlich noch Verbesserungen vornehmen und daraus lernen.....
     
    #16      
  17. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Warum geht das nicht ?
    Liegt das am Forum, oder sind hier gleich mehrere Zeilen falsch ?
     
    #17      
  18. DocUhu

    DocUhu Guest

    Warum geht das nicht ?
    War bei mir auch schon ein paar Mal, liegt am Forum, sobald innerhalb vom Html PHP eingefügt wird werden "<?" gekillt.

    Deswegen benutze ich lieber den "Code"- anstelle des "PHP"-Buttons... da sind mir solche Fehler noch nicht aufgefallen.

    Grüße
     
    #18      
  19. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Warum geht das nicht ?
    Achso, danke für die Info.
     
    #19      
  20. M4tman

    M4tman booN

    Dabei seit:
    15.02.2006
    Beiträge:
    201
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    2ndEditor
    Kameratyp:
    Handy
    Warum geht das nicht ?
    Also echt danke für die Antworten, und für den Code,
    mir geht es erstmal nicht so um das Kontakt-Formular, sonst könnte ich mir ja gleich einen Kompletten Code runterladen, mir geht es erstmal darum das ich es verstehe,
    in dem Code den ihr jetzt gepostet habt sind sachen drinn die ich noch garnicht so kenne und nicht gant zu interpretieren weis,
    Wollt jetzt eigendlich nur wissen was jetzt an meinen speziell falsch ist, das es nicht geht.
    Ich hoffe ihr versteht worauf ich hinnaus will.

    Hier nochmal die Code:
    [php:1:288a9fc431]
    <html>
    <head>
    <title>>Ein Contact Formular</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <?php
    IF($_POST["sendbutton"]){

    mail("meine@email.de","$betreff",


    $inhalt = "Nickname: " . $_POST["name1"] . "\n" ;
    $inhalt. = "Email: " . $_POST["mail1"] . "\n" ;
    $inhalt. = "Text: " . $_POST["text"] . "\n" ;


    $abs = "From: test01";
    $betreff = "Nachricht vom Kontaktformular";

    if ( mail("meine@email.de", $betreff, $inhalt, $abs) )
    echo 'Die E-Mail wurde verschickt.';
    ?>
    <center>
    <h2>Ein Contact Formular</h2>
    <form method="post" name="inhalt" action="<? $php_self ?>">
    <TABLE border=0 style="WIDTH: 237px; HEIGHT: 105px">


    <TR>
    <TD>


    Name:</P></TD>
    <TD><input name="name1" id="name1" ></TD></TR>
    <TR>
    <TD>Email:&</TD>
    <TD><INPUT
    id="email1 ></TD></TR>


    <TR>


    <TD>Text: </TD >
    <TD><textarea rows="
    name=email1 cols="2" text? 2? name?></TD></TR>
    <TR>
    <TD>Text:</TD>
    <TD><TEXTAREA name="eingabetext" rows="5" id="text" name="text"></TEXTAREA>
    </TD></TR>
    </TABLE>
    <input type="submit" value="Abschicken" name="sendbutton" />
    </form>
    </body>
    </html>[/php:1:288a9fc431]
     
    #20      
Seobility SEO Tool
x
×
×