AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

[PHP] Formular versenden

Ein Thema von PierreB · begonnen am 4. Feb 2006 · letzter Beitrag vom 4. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2   
PierreB
(Gast)

n/a Beiträge
 
#1

[PHP] Formular versenden

  Alt 4. Feb 2006, 14:09
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>
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:13
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'];
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:17
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:21
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
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:24
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#6

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:32
So Männers, habs mal probiert, klappt leider immer noch nicht, egal was ich auswähle es kommt immer "Fax" in der Mail an.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:34


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;
}
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#8

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:39
Nochmal vielen Dank an alle, jetzt gehts perfekt.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 14:56
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 ...
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#10

Re: [PHP] Formular versenden

  Alt 4. Feb 2006, 15:08
Zitat:
Im Endeffekt: Kann man machen, soll man aber nicht ...
Ok ich habs noch geändert, danke für den Hinweis.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
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