Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Formular versenden (https://www.delphipraxis.net/62436-%5Bphp%5D-formular-versenden.html)

PierreB 4. Feb 2006 13:09


[PHP] Formular versenden
 
Und nochmal muss ich mit einer Websprachen-Frage stören:

Ein Formular, welches 4 Textfelder und 3 Radiobuttons beinhaltet, soll per E-Mail versendet werden. Dank faux funktioniert das alles auch schon sehr gut, nur leider wird in der E-Mail nicht mitgesendet welcher der RadioButtons "gecheckt" ist. Kann sich das vielleicht mal einer der PHP Experten angucken und den Fehler finden ? Vielen Dank,

Code:
<?php
  if ($_POST['sent'])
  {
    $_POST['name'] = trim($_POST['name']);
    $_POST['mail'] = trim($_POST['mail']);
    $_POST['site'] = trim($_POST['site']);
    $_POST['text'] = trim($_POST['text']);
    $_POST['method'] = trim($_POST['method']);
    $msg = '';
    if (empty($_POST['name']))
      $msg .= "Kein Name angegeben.
\n";
    if (empty($_POST['mail']))
      $msg .= "Keine E-Mail angegeben.
\n";
    else if (! ereg('^([A-Za-z0-9\.\_\-]{2,})@([A-Za-z0-9\.\_\-]{2,}\.[A-Za-z]{2,3})$', $_POST['mail']))
      $msg .= "Keine g&uuml;ltige E-Mail angegeben.
\n";
    /*if (empty($_POST['site']))
      $msg .= "Keine Website angegeben.
\n";*/
    if (empty($_POST['text']))
      $msg .= "Keinen Text angegeben.
\n";
    if (empty($_POST['method']))
      $msg .= "Keine Antwortm&ouml;glichkeit angegeben.
\n";
    switch ($_POST['method'])
    {
      case 'mail':
        $_POST['method'] = 'E-Mail';
      case 'tel':
        $_POST['method'] = 'Telefon';
      case 'fax':
        $_POST['method'] = 'Fax';
    }
    if ($msg == '')
    {
      $to = 'xxxx@xx.de';
      $subject = "Betreff";
      $text = "Name: $_POST[name]\n";
      $text .= "E-Mail: $_POST[mail]\n";
      $text .= "Website: $_POST[site]\n";
      $text .= "Text: $_POST[text]\n";
      $text .= "Methode: $_Post[method]";
      $mail_sent = mail($to, $subject, $text);
    }
  }
?>
<html>
<head>
<style type="text/css">
body {font-family: "Verdana";}
.feld {background-color: #CCCCCC;color: #000000;border-color: #000000;border-style:solid; border-width:1px;Font-Family:Verdana;Font-Size:11px;}
</style>
</head>
<body bgcolor="#F8F8FF">
<?php
  if ((! $_POST['sent']) || ($_POST['sent'] && $msg != ''))
  {
      echo "<div class=\"err\">$msg</div>
\n";
?>
<form action="<?php echo $_SERVER['html_SELF']; ?>" method="post">
<table>
  <tr>
    <td><font face="Verdana" size="2">Name:</font></td>
    <td><input type="text" class="feld" name="name" value="<?php echo $_POST['name']; ?>"></td>
  </tr>
  <tr>
    <td><font face="Verdana" size="2">E-Mail:</font></td>
    <td><input type="text" class="feld" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
  </tr>
  <tr>
    <td><font face="Verdana" size="2">Website:</font></td>
    <td><input type="text" class="feld" name="site" value="<?php echo $_POST['site']; ?>"></td>
  </tr>
  <tr>
    <td><font face="Verdana" size="2">Text:</font></td>
    <td><textarea cols="45" class="feld" rows="10" name="text"><?php echo $_POST['text']; ?></textarea></td>
  </tr>
    <tr>
    <td><font face="Verdana" size="2">Antwort per:</font></td>
    <td>
      <font size="1">
        <input type="radio" name="method" value="mail" <?php echo (($_POST['method'] == 'mail' || empty($_POST['method'])) ? ('checked') : ('')); ?>>E-Mail


        <input type="radio" name="method" value="tel" <?php echo (($_POST['method'] == 'tel') ? ('checked') : ('')); ?>>Telefon (bitte separat angeben)


        <input type="radio" name="method" value="fax" <?php echo (($_POST['method'] == 'fax') ? ('checked') : ('')); ?>>Fax (bitte separat angeben)
      </font>
    </td>
  </tr>
  <tr>
    <td></td>
    <td><input type="hidden" name="sent" value="1"><input type="submit" value="Absenden"> <input type="reset" value="L&ouml;schen"></td>
  </tr>
</table>
</form>
<?php
  }
  else
  {
    if ($mail_sent)
      echo "

Vielen Dank f&uuml;r Ihre R&uuml;ckmeldung, wir werden uns schnellstmöglich bei Ihnen melden.</p>\n";
    else
    {
      echo "

Beim Versenden der Nachricht trat leider ein Fehler auf!</p>\n";
      echo "

Sie können die folgende Nachricht einfach per Mail an <a href=\"mailto:$to\">[i]$to[/i]</a> mit dem Betreff [i]$subject[/i] senden:</p>\n";
      echo "<textarea cols=\"45\" rows=\"10\">$text</textarea>";
    }
  }
?>



</body>
</html>

jfheins 4. Feb 2006 13:13

Re: [PHP] Formular versenden
 
Mach das mal so:
Code:
 $text = "Name: " . $_POST['name'];
      $text .= "\nE-Mail: " . $_POST['mail'];
      $text .= "\nWebsite: " . $_POST['site'];
      $text .= "\nText: " . $_POST['text'];
      $text .= "\nMethode: " . $_POST['method'];
;)

PierreB 4. Feb 2006 13:17

Re: [PHP] Formular versenden
 
Ich hab zwar gar keine Ahnung von PHP aber wenn ich das richtig verstehe ändert dein Code doch nur das der Zeilenumbruch vor dem neuen Wert geschieht, oder ? Was soll das bringen ? Oder irre ich mich jetzt ? :gruebel:

jfheins 4. Feb 2006 13:21

Re: [PHP] Formular versenden
 
Zum einen habe ich den Zugriff auf $_POST aus den Anfühtungszeichen geholt, dann habe ich noch den Wert in einfache Anfürungszeichen geschreiben und schließlich habe ich beim letzten mal Post groß geschrieben ;)

faux 4. Feb 2006 13:24

Re: [PHP] Formular versenden
 
Ich denke das mit den Anführungszeichen ist egal, denn der Rest funktioniert ja auch. ;)
Ich würde mal tippen, dass hier die Shift-Taste geklemmt hat. ;)
$_Post != $_POST

Grüße
Faux

PierreB 4. Feb 2006 13:32

Re: [PHP] Formular versenden
 
So Männers, habs mal probiert, klappt leider immer noch nicht, egal was ich auswähle es kommt immer "Fax" in der Mail an. :-(

faux 4. Feb 2006 13:34

Re: [PHP] Formular versenden
 
:oops:

Da fehlt das break im switch:

Code:
switch ($_POST['method'])
{
  case 'mail':
    $_POST['method'] = 'E-Mail';
    break;
  case 'tel':
    $_POST['method'] = 'Telefon';
    break;
  case 'fax':
    $_POST['method'] = 'Fax';
    break;
}

PierreB 4. Feb 2006 13:39

Re: [PHP] Formular versenden
 
Nochmal vielen Dank an alle, jetzt gehts perfekt. :cheers:

jfheins 4. Feb 2006 13:56

Re: [PHP] Formular versenden
 
Zitat:

Zitat von faux
Ich denke das mit den Anführungszeichen ist egal, ...

Dazu, von der php-Website:
Zitat:

Sie sollten immer Anführungszeichen für einen String-Literal-Index eines Arrays benutzen. Zum Beispiel sollten Sie $foo['bar'] und nicht $foo[bar] benutzen. Aber warum ist $foo[bar] falsch? Vieleicht kennen Sie folgende Syntax aus alten Skripts:

Code:
<?php
$foo[bar] = 'Feind';
echo $foo[bar];
// usw
?>
Es ist falsch, funktioniert aber. Warum ist es dann falsch? Der Grund ist, dass dieser Code statt eines Strings ('bar'- beachten Sie die Anführungszeichen) eine undefinierte Konstante (bar) enthält und PHP in Zukunft Konstanten definieren könnte, die, unglücklicherweise für Ihren Code, den gleichen Namen verwenden. Es funktioniert, weil PHP einen bloßen String (ein String ohne Anführungszeichen, der keinem bekannten Symbol entpricht) automatisch in einen String umwandelt, der den bloßen String enthält. Wenn beispielsweise keine Konstante namens bar definiert ist, ersetzt es PHP durch den String 'bar' und verwendet diesen.
Im Endeffekt: Kann man machen, soll man aber nicht ...

PierreB 4. Feb 2006 14:08

Re: [PHP] Formular versenden
 
Zitat:

Im Endeffekt: Kann man machen, soll man aber nicht ...
Ok ich habs noch geändert, danke für den Hinweis. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz