Christoph: Fehler in Variable

Hi Forum,

ich seh vor lauter Bäumen den Wald nicht mehr....

Bei meiner HP hab ich ein Kontaktformular, da wo man lustige Daten eingeben kann usw...

ok dafür hab ich Code gebastelt der meiner Meinung nach auch gehen sollte, was er aber nicht tut. :(

ein kleiner Auszug;
if(isset($_GET['action']))
{
 switch($_GET['action'])
 {
  case 'absenden':
  $mail = "christoph@gahmann.com";
  $headers  ="From: $_POST['vorname'] $_POST['nachname'] <$_POST['email']>\r\n";
  $message .="Vorname: $_POST['vorname']\n";
  $message .="Nachname: $_POST['nachname']\n\n";
  $message .="Email: $_POST['email']\n";
  $message .="Homepage: $_POST['homepage']\n";
  $message .="Nachricht: $_POST['nachricht']\n\n";
  $message .= "----------------------------------------\n";
  @$send=mail($mail,"Konaktaufnahme",$message,$headers);
  $content='Vielen Dank';
  break;
 }
}
else
{
 function content()
 {
  ?>
hier beginnt dann der html Aufbau wo das Formular sichtbar ist und die ganzen input Felder stehen.

Ok wenn ich die Seite aufrufe kommt:
Parse error: parse error, expecting T\_STRING' or T_VARIABLE' or `T_NUM_STRING' in der Zeile da wo $headers  ="From: $_POST['vorname'] $_POST['nachname'] <$_POST['email']>\r\n"; steht!
Nur wo ist mein Fehler?

Danke, wenn mir jemand helfen könnte, wäre lieb!

LG Christoph

  1. Hallo Christoph,

    $headers  ="From: $_POST['vorname'] $_POST['nachname'] <$_POST['email']>\r\n";
    Parse error: parse error, expecting T\_STRING' or T_VARIABLE' or `T_NUM_STRING' in der Zeile da wo $headers  ="From: $_POST['vorname'] $_POST['nachname'] <$_POST['email']>\r\n"; steht!
    Nur wo ist mein Fehler?

    schreib das mal so um:

    $headers = 'From: '.$_POST['vorname'].' '.$_POST['nachname'].' <'.$_POST['email'].">\r\n";

    Das sollte funktionieren. Beachte den bewussten Einsatz von " und '. ABER VORSICHT: Du verwendest Formulardaten ohne diese Vorher auf Plausibilität zu prüfen!!! Das ist ein schweres Sicherheitsloch. Du solltest ALLE Daten aus Formularen prüfen, ob diese auch sinnvoll sind.

    viele Grüße
      Achim Schrepfer

    --
    "Wer noch nie einen Fehler gemacht hat, der hat sich noch nie an etwas Neuem versucht."
    (Albert Einstein)
    1. Hallo Christoph,

      Hallo Achim

      schreib das mal so um:

      $headers = 'From: '.$_POST['vorname'].' '.$_POST['nachname'].' <'.$_POST['email'].">\r\n";

      Nicht ganz habs alles umgeschrieben mit dem '. usw... dann gings.

      Das sollte funktionieren. Beachte den bewussten Einsatz von " und '. ABER VORSICHT: Du verwendest Formulardaten ohne diese Vorher auf Plausibilität zu prüfen!!! Das ist ein schweres Sicherheitsloch. Du solltest ALLE Daten aus Formularen prüfen, ob diese auch sinnvoll sind.

      Kannst du mir da mal ein kleines Beispiel geben? Vielleicht raff ich grad nicht was du direkt meinst, sorry...

      viele Grüße
        Achim Schrepfer

      Danke und LG Christoph

      1. Ei guude wie?

        Kannst du mir da mal ein kleines Beispiel geben? Vielleicht raff ich grad nicht was du direkt meinst, sorry...

        Du solltest vorher prüfen, ob die E-Mail-Adresse eine solche auch ist (mindestens: xx@yyy.zz), ob die URL für die Homepage "http://" und mindestens einen Punkt enthält, ob irgendwo HTML-Tags wie bspw. <script> oder <style> vorkommen, etc.
        Traue niemals den Eingaben Deiner Besucher... >8|

        LG ausm Hesseland
        Lemmy

        http://www.olison.com

        --
        Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
        1. Ei guude wie?

          Ei guude was? kommst du aus Frankfurt/Main?

          Du solltest vorher prüfen, ob die E-Mail-Adresse eine solche auch ist (mindestens: xx@yyy.zz), ob die URL für die Homepage "http://" und mindestens einen Punkt enthält, ob irgendwo HTML-Tags wie bspw. <script> oder <style> vorkommen, etc.
          Traue niemals den Eingaben Deiner Besucher... >8|

          Jo das stimmt allerdings. Auch wenns nur meine private HP ist, werd ich mal schaun was man da so alles machen kann!

          LG auch aus dem Hessenland ;)

          LG ausm Hesseland
          Lemmy

          Christoph

          http://www.olison.com

          1. Hallo,

            Jo das stimmt allerdings. Auch wenns nur meine private HP ist, werd ich mal schaun was man da so alles machen kann!

            das hat im übrigen nichts damit zu tun, ob Deine Homepage privat ist. Als Provider würde ich potenziell unsichere Skripten sofort bei Entdeckung stilllegen. Solche Skriptfehler können nämlich die Sicherheit des gesamten Servers beeinträchtigen.

            viele Grüße
              Achim Schrepfer

            --
            "Wer noch nie einen Fehler gemacht hat, der hat sich noch nie an etwas Neuem versucht."
            (Albert Einstein)
            1. Hallo,

              Hallo

              das hat im übrigen nichts damit zu tun, ob Deine Homepage privat ist. Als Provider würde ich potenziell unsichere Skripten sofort bei Entdeckung stilllegen. Solche Skriptfehler können nämlich die Sicherheit des gesamten Servers beeinträchtigen.

              Glaubst du der Provider bei mehreren tausend Domains sich die Scripte durchschaut? Glaub ich eher weniger. Naja, habs aber mal auf die Plausibilität überprüfen lassen und mir auch das zu Herzen genommen was die PHP Faq darüber geschrieben hat. Denke nun das es jetzt sicherer sein müsste. Also ich hoffe es ;)

              viele Grüße
                Achim Schrepfer

              LG Christoph

              1. Hallo,

                Als Provider würde ich potenziell unsichere Skripten sofort bei Entdeckung stilllegen.
                Glaubst du der Provider bei mehreren tausend Domains sich die Scripte durchschaut? Glaub ich eher weniger.

                ein Massenhoster wird das wahrscheinlich nicht tun. Unsere Firma hingegen macht das schon (ca. 100 Webs pro Server). Natürlich erfolgt auch hier die Prüfung stichprobenartig und teilweise durch Skripten unterstützt. Aber darum geht es primär nicht. Die Mehrheit der Forumsbenutzer hier pflegt auch einen gewissen Idealismus. Und in Sachen serverseitiger Programmierung sieht das u.a. eben so aus, dass die Skripten (halbwegs) sicher programmiert werden, was ja generell ein sinnvolles Vorhaben ist, oder? Und deshalb weise ich auf offensichtliche Sicherheitslücken hin, selbst wenn es für einen Privatmann von untergeordnetem Interesse ist (was es aber nicht sein sollte).

                viele Grüße
                  Achim Schrepfer

                --
                "Wer noch nie einen Fehler gemacht hat, der hat sich noch nie an etwas Neuem versucht."
                (Albert Einstein)
  2. Hi Christoph

    $headers  ="From: $_POST['vorname'] $_POST['nachname'] <$_POST['email']>\r\n";
      $message .="Vorname: $_POST['vorname']\n";

    usw.

    Ich hatte den Fehler schon auch, es hat mir geholfen, die Variablen aus den Anführungszeichen zu nehmen, ohne dass ich Dir erklären kann, warum...

    z.b.
    $headers  ="From: ".$_POST['vorname']." ".$_POST['nachname']." <".$_POST['email'].">\r\n";