Christian: Werte werden nicht übergeben

Hy Leute,

ich hab gegoogelt und auch einige Foren durchstöbert aber nicht wirklich das gefunden was mir weiter hilft.

Folgendes.
Ich hab ein ganz normales Formular mit PHP Elementen

<form action="http://www.vb-schmaranzer.at/templates/Schmaranzer/forms/email2.php" method="post">  
      <table width="575" border="0" cellspacing="0" cellpadding="00">  
  
<tr>  
<td width="86">Empf&auml;nger:</td>  
          <td width="489">    <?php  
     if($_GET['empfaenger']!=""){  
   echo '<input name="empfaenger" type="text" id="empfaenger" value="'.$_GET['empfaenger'].'@xxxx.at" disabled="disabled" size="35"/>';  
   }  
   else  
   echo'<input name="empfaenger" type="text" id="empfaenger" value="office@xxx.at" disabled="disabled" size="35" />';  
    ?></td>

Das ganze wird wie gewohnt via POST übertragen.
Das PHP-Script welches die Email verschicken soll schaut so aus

function mailform(){  
 $empfaenger=$_POST['empfaenger'];  
 mail("$empfaenger","$betreff","$message","$absender");  

Ich bekomme nun eine Meldung das kein Empfänger zu finden ist.

Wo liegt hier das Problem?
Bin um jede konstruktive Hilfe dankbar.

  1. n'abend,

    if($_GET['empfaenger']!=""){

    1. bist du sicher, dass du hier $_GET befragen willst?
    2. bist du dir sicher, dass dieser Wert - mit Sicherheit - existiert? Prüfe mit isset(), ob das Array-Element auch wirklich existriert, bevor du es ansprichst

    echo '<input name="empfaenger" type="text" id="empfaenger" value="'.$_GET['empfaenger'].'@xxxx.at" disabled="disabled" size="35"/>';

    schon wieder $_GET?

    weiterhin schönen abend...

    --
    #selfhtml hat ein Forum?
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. n'abend,

      if($_GET['empfaenger']!=""){

      1. bist du sicher, dass du hier $_GET befragen willst?

      Ja bin ich mir, weil normalerweise ist es leer, nur wenn in der Teamübersicht auf den Maillink geklickt wird, wird ein Teil der Emailadresse mit get übermittelt.

      1. bist du dir sicher, dass dieser Wert - mit Sicherheit - existiert? Prüfe mit isset(), ob das Array-Element auch wirklich existriert, bevor du es ansprichst

      Wenn es nicht existiert, gibts ja noch immer die else-Anweisung.

      Wenn ich mir die fertig generierte Seite anschaue, gibt es einen Empfängerwert im Formular, nur beim Abesenden funktionierts nicht

      1. n'abend,

        Wenn es nicht existiert, gibts ja noch immer die else-Anweisung.

        Mir ging es eigentlich darum, dass du nicht auf Variablen zugreifen sollst, die möglicherweise nicht vorhanden sind. Das ist unsauberste <del>Programmierung</del><ins>Verhackstückelung von Sonderzeichen</ins>.

        weiterhin schönen abend...

        --
        #selfhtml hat ein Forum?
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
  2. Hallo Christian,

    nach dem Hinweis von Globe zu isset() noch zwei weitere Anmerkungen:

    echo '<input name="empfaenger" type="text" id="empfaenger" value="'.$_GET['empfaenger'].'@xxxx.at" disabled="disabled" size="35"/>';

    hier schreibst Du Eingaben von außen ungefiltert in HTML. Du solltest die
    Eingabe entsprechend aufbereiten, d.h. gemäß HTML-Kontext behandeln.

    $empfaenger=$_POST['empfaenger'];
    mail("$empfaenger","$betreff","$message","$absender");

    hier schreibst Du Eingaben von außen ungeprüft, ungefiltert und unbehandelt
    (dafür aber überflüssigerweise umkopiert und in unnötige Anführungszeichen
    gesetzt) in einen Mail-Kontext. Die Spammer werden es Dir danken.

    Freundliche Grüße

    Vinzenz

  3. Hello,

    und für die Fehlersuche hast Du bestimmt auch error_reporting(E_ALL) gersetzt?
    Gibt es da keine Notices?

    <form action="http://www.vb-schmaranzer.at/templates/Schmaranzer/forms/email2.php" method="post">

    <table width="575" border="0" cellspacing="0" cellpadding="00">

    <tr>
    <td width="86">Empf&auml;nger:</td>
              <td width="489">    <?php
         if($_GET['empfaenger']!=""){
       echo '<input name="empfaenger" type="text" id="empfaenger" value="'.$_GET['empfaenger'].'@xxxx.at" disabled="disabled" size="35"/>';
       }
       else
       echo'<input name="empfaenger" type="text" id="empfaenger" value="office@xxx.at" disabled="disabled" size="35" />';
        ?></td>

    
    >   
    > Das ganze wird wie gewohnt via POST übertragen.  
    > Das PHP-Script welches die Email verschicken soll schaut so aus  
      
      
    echo "<pre>\n";  
    echo htmlspecialchars(print\_r($\_POST,1));  
    echo "</pre>\n";  
      
      
    
    > ~~~
    
    function mailform(){  
    
    >  $empfaenger=$_POST['empfaenger'];  
    >  mail("$empfaenger","$betreff","$message","$absender");  
    > 
    
    

    Ich bekomme nun eine Meldung das kein Empfänger zu finden ist.

    Wo liegt hier das Problem?
    Bin um jede konstruktive Hilfe dankbar.

    Wenn Du wirklich Hilfe willst, müsstest Du uns erst einmal die ganze Wahrheit erzählen.
    Was treibst Du in dem Script sonst noch?
    Woher bekommst Du eine Meldung, dass kein Empfänger zu finden ist?

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)