Ankündigung

Einklappen
Keine Ankündigung bisher.

Mail problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mail problem

    Also ch ahbe folgendes Problem.
    ich habe eine Art Mailscript geschreiben.

    PHP-Code:
    <html>

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

    <body bgcolor="#FFFFFF">

    <form method="POST">
    <center>

    <table width="380" border="0">
    <tr><td align="right" width="200">Name:</td><td colspan="2">
      <input type="text" size="20" name="T1" value=""></td></tr>
    <tr><td align="right" width="200">Baustelle:</td><td colspan="2">
      <input type="text" size="20" name="T2" value=""></td><tr>
    <tr><td align="right" width="200">Kostenstelle-Projektnummer:</td><td colspan="2">
      <input type="text" size="20" name="T3" value=""></td></tr>
    <tr><td colspan="3"></td></tr>
    <tr><td align="right">Lieferrant:</td><td>
      <input type="text" size="20" name="T4" value=""></td><td>
      <input type="checkbox" name="C1" value="ON"></td></tr>
    <tr><td align="right">und/oder Ger&auml;tepool:</td><td>
      <input type="text" size="20" name="T5" value=""></td><td>
      <input type="checkbox" name="C2" value="ON"></td></tr>
    <tr><td align="right">Liefertermin:</td><td>
      <input type="text" size="20" name="T6" value=""></td><td>
      <input type="checkbox" name="C3" value="ON"></td></tr>
    <tr><td align="right">Einsatzdauer:</td><td>
      <input type="text" size="20" name="T7" value=""></td><td><span style="color:#FF0000">[b][i]![/i][b]</span></td></tr>
    </table> 






    <table border="0" cellspacing="0">
    <tr>
     <td align="right">Ger&auml;t:</td><td>
     <input type="text" size="20" name="T8" value=""><input type="checkbox" name="C4" value="ON"></td>
     <td colspan="2"></td>
    </tr>
    <tr>
     <td align="right">Einsatzdauer:</td><td>
     <input type="text" size="20" name="T9" value=""><input type="checkbox" name="C5" value="ON"></td>
     <td align="right">Verbrauchsmaterial:</td><td>
     <input type="text" size="20" name="T10" value=""><input type="checkbox" name="C6" value="ON">
    </tr>
    <tr>
     <td></td><td>(von - bis)</td>
     <td align="right">Menge:</td><td>
     <input type="text" size="20" name="T11" value=""><input type="checkbox" name="C7" value="ON"></td>
    </tr>
    <tr>
     <td colspan="2"></td>
     <td align="right">Lieferrant:</td><td>
     <input type="text" size="20" name="T12" value=""><input type="checkbox" name="C8" value="ON"></td>
    </tr>
    <tr>
     <td colspan="2"></td>
     <td align="right">Liefertermin:</td><td>
     <input type="text" size="20" name="T13" value=""><input type="checkbox" name="C9" value="ON"></td>
    </tr>
    <tr>
     <td colspan="2"></td>
     <td></td><td>(TT.MM.JJJJ)</td>
    </tr>
    <tr>
     <td colspan="4" align="center">Ich habe die AGB's Gelsen und Akzeptiere sie:
      <input type="checkbox" name="a1" value="ON"></td>
    </tr>
    <tr>
     <td colspan="4" align="center"><input type="submit" value="Abschicken"><input type="reset"></td>
    </tr>
    </table>

    </form>


    </body>
    </html>

    <?php
    $empf 
    "Marian-e@web.de \n";       // An wen wird das Formular gesendet
    $betr "Betreff\n";                //Betreff   
    $name "$T1\n";                   // Name 
    $Bau  "$T2\n";                   // Baustelle
    $KP   "$T3\n";                   // Kostenstelle-Projektnummer
    $Lir  "$T4\n";                   // Lieferant
    $Gerp "$T5\n";                   // und/oder Gerätepool
    $Lim  "$T6\n";                   // Liefertermin
    $Eind "$T7\n";                   // Einsatzdauer
    $Ger  "$T8\n";                   // Geräte
    $Ein  "$T9\n";                   // Einsatzdauer2
    $Vmat "$T10\n";                  // Verbrauchsmaterial
    $Men  "$T11\n";                  // Menge
    $Lif  "$T12\n";                  // Lieferant2
    $Lit  "$T13\n";                  // Liefertermin
    $all  "$empf $name $Bau $KP $Lir $Gerp $Lim $Eind $Ger $Ein $Vmat $Men $Lif $Lit";  


    if (
    $a1 true)
    {
    mail ($empf$betr$all);
    }
    else
    {
    echo 
    "es muss ein hecken gemacht werden um das formular abzuschicken";
    }
    ?>
    Jetzt ist mein Problem, das die mail auch verschickt wird, wenn ich das script lade, und nicht erst wenn ich auf abschicken klicke.
    Eine If-abweisung habe ich gemacht, in der geprüft werden soll, ob die checkbox abgehakt ist, und wenn sie abgehakt ist, soll die mail verschickt werden. Doch da habe ich irgend einen fehler gemacht. Denn die if-anweisung ist immer erfüllt, ob abgehakt oder nicht.

    Die checkboxen neben den textfeldern haben noch keine Funktion. Bin mir auch noch nicht sicher ob sie wieder weg kommen.
    Geht nur darum, das die mail nur verschickt wird, wenn die AGB's akzeptiert sind.

    Wenn ein geschultes auge mal gucken könnte, wo der fehler ist, wäre ich recht dankbar.

    MFG Marian

  • #2
    Vielleicht hilft ein einfaches Beispiel weiter.
    PHP-Code:
    <?php
    if (isset($_POST['abc']) && isset($_POST['def']))
    {
        echo 
    'abc und def gesetzt';
    }
    else {
        echo 
    '<html><body><form method="post" action="'.$_SERVER['PHP_SELF'].'">';
        echo 
    '<input type="checkbox" name="abc" >';
        echo 
    '<input type="submit" name="def" >';
        echo 
    '</form></body></html>';
    }
    ?>

    Kommentar


    • #3
      if ($a1 = true) ist kein vergleich sondern eine feststellung, genauso könntest du schreiben $a = true;
      gruss sys

      Kommentar


      • #4
        @Bruchpilot
        Aber dein bsp funktioniert nicht auf mein script.

        @All
        Wie vergleicht man denn ob eine checkbox abgehackt ist, und wie prüft man ob eine radio button aktiviert ist.

        und kann ich

        PHP-Code:
        if (isset($_POST['abc']) && isset($_POST['def']))

        mail ($empf$betr$all); 

        else 

        echo 
        "es muss ein hecken gemacht werden um das formular abzuschicken"

        ?> 
        schreiben.
        Oder geht das net.

        Kommentar


        • #5
          Das Beispiel war nur ein Wink mit dem Zaunpfahl, dass Du auf Feldnamen aus dem Form mit $_POST[] zugreifen sollst.
          Wenn register_globals auf off steht, sind die Felder nicht einfach als Variablen bekannt. Und das ist auch gut so!


          Bei einer Checkbox wird der Name übergeben wenn sie ausgewählt ist. Ansonsten nicht.
          Mit (!empty($_POST['NameDerCheckbox'])) kannst Du prüfen, ob sie an ist.


          Bei einem Radio-Button wird in $_POST['NameDesRadioButtons'] der mit value="xyz" angegebene Wert übergeben.

          @sysop:
          Was soll denn in PHP eine Feststellung sein?
          Es ist eine normale Zuweisung.
          **********************************
          Nein, ich bin nicht die Signatur.
          Ich putze hier nur.
          **********************************

          Kommentar


          • #6
            Also
            PHP-Code:
            <?php
            if (isset($_POST['a1'])) 
            {  
            mail ($empf$betr$all);  
            }  
            else  
            {  
            echo 
            "es muss ein hecken gemacht werden um das formular abzuschicken";  
            }  
            ?>
            funktioniert im mom auch.

            Kommentar


            • #7
              Richtig debuggen
              1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
              2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
              3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
              4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
              5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
              6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
              7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

              Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

              Gruß
              phpfan

              Kommentar


              • #8
                Jo.
                Hast du schön erklärt.
                Doch wenn man von PHP nicht die ahnung hat um richtig zu debuggen.
                jo. Ich weiß dann muss mans lernen. und in tuts gucken.
                Aber aus tuts kann man nicht lernen. Da kann man sich nur hilfe über sachen hohlen, die man eigendlich schon kann.

                Ich habe bis jetzt noch keine tut gefunden, das isset ordentlich erklärt, was es macht, wo und wann man es verwendet, und was man macht, wenns net geht wie man es will. Und ich sehne mich immernoch nach nem tut was mir erklärt wofür $_POST gut ist, und wie man auf den stuss kommt, den man bei <form action=""> hinschreiben kann.

                bei meinen scripts gibts action garnet. da gibts nur post oder get.

                @PHPfan
                ich weis das du nur helfen willst, aber so leicht funktioniert das nicht, wenn man erstmal chinesich liest, beim anblick des quellcodes.
                Für einen, der kaum php kann, sieht ein quellcode etwa so aus: ahjkkfdkhjfgsakfagkgdsakgsadhfg <--- hat keinen sinn
                Das ist das problem. Wenn man sich aus 100 tuts die befehle zusammengesucht hat, die dann benutzt, die Syntax net kennt, und mal drauf losprobiert, und alles nix wird, und man dann verzweifelt um hilfe fragt, und dann kommt so en tip wie man den quellcode richtig debuggt, dann hilft das sehr wenig.

                Was isset macht weis ich bis jetzt noch net.
                Mann bekommt zwar bsps, die auch gut sind, doch man kann sie nicht umsetzen auf sein eigenes script, weil man das bsp script nicht verstanden hat, und die richtige syntax nicht kennt.

                Vielleicht hilft ein einfaches Beispiel weiter.
                PHP:

                <?php
                if (isset($_POST['abc']) && isset($_POST['def']))
                {
                echo 'abc und def gesetzt';
                }
                else {
                echo '<html><body><form method="post" action="'.$_SERVER['PHP_SELF'].'">';
                echo '<input type="checkbox" name="abc" >';
                echo '<input type="submit" name="def" >';
                echo '</form></body></html>';
                }
                ?>
                Das hat mir z.b. erstmal garnis gesagt.
                ne erklärung was er da gemacht hat, und warum er das gemacht hat, hätte mich es verstehen lassen, und ich hätte gewust, wie ich es umsetzen muss.
                So habe habe ich die If-anweisung kopiert, und mal ausprobiert wie es klappen könnte, und ich ahbe ne klappende möglichkeit gefunden.
                Den quellcode habe ich jetzt, aber verstanden habe ich ihn net, und wie er funktioniert auch nicht. Und warum ich ausgerechnet diesem quellcode und nicht irgend einen anderen benutzt habe weis ich auch nicht.
                wenn ich mein nächstes script schreibe, und da wieder mit checkboxen arbeite, werde ich die frage vieleicht wieder stellen müssen, weil es ein anderer zusammenhang ist, bz ich die jetztige checkbox abfrage nicht 100 protzentig übernehmen kann, und nicht weis, wie ich sie anpasse, und wies funktioniert.

                ich hoffe ich konnte mein problem verdeutlichen.
                MFG Marian

                Kommentar


                • #9
                  Formularelemente mit name-Attribute werden als Name=Wert Paare an den Server geschickt. Und zwar immer, sofern sie überhaupt verschickt werden.
                  Php macht daraus dann $_POST['name'] oder $_GET['name']. Das sind zwei unterschiedliche Arten, die Daten zu, Server zu transportieren. Vergleiche <form method=post> / <form method=get>
                  <input name="abc"> => $_POST['abc'] oder $_GET['abc']
                  Die einzelnen Typen <input type="text"> <input type="radio"> <select><option> usw. werden sehr ähnlich aber ein wenig unterschiedlich bnehandelt.
                  print_r($_POST) bzw print_r($_GET) zeigt Dir, wie die Felder bei jeder Anfrage an den Server gefüllt sind, aka: Was an den Server geschickt wurde.
                  Spiel einfach ein wenig damit rum. Das ist mE die beste Methode, mit den Parametern umzugehen.

                  Kommentar


                  • #10
                    http://de2.php.net/manual/de/reserved.variables.php

                    Kommentar


                    • #11
                      Also ich habe mein Mail-script jetzt fast komplett.
                      Doch ich stehe noch vor einem letzten problem.
                      Ich möchte das man Bilder mitsenden kann.
                      So wie bei Web.de, GMX.de oder Yahoo.de.
                      Leider habe ich aber zu 99% keinen plan wie das gehen soll.
                      ich glaube mit $HTTP_POST_FILES kann man seine files auf einen webspace laden, weis da aber auch nicht wie man den befehl verwendet.
                      wenn mir einer Erklären kann wie das geht, oder mir mal ein bsp script machen kann, wäre ich sehr dankbar.

                      Ach ja. mein Form-Mailer sieht jetzt so aus:
                      http://sqwan2.sq.funpic.de/scooterhp2.htm

                      Bitte schickt keine mails damit, wenn ihr ihn auch anseht.
                      Denn die mails gehen nicht an meine Mailadresse, sondern an die mail-adrese.
                      www.scooterhp.de, für die ich diesen form-mailer machen möchte.
                      Zusätzlich wird die DB vorgespammt. deshalb bitte nicht benutzen.

                      MFG Marian

                      Kommentar


                      • #12
                        $HTTP_*** ist veraltet. Nimm lieber $_POST[], $_FILES[], etc.

                        Wenn Du eine Datei hochladen willst, musst Du das Form entsprechend machen und dann Dateiname etc aus $_FILES[] herauslesen.

                        Details, wie das Form auszusehen hat, findest Du mit der Suche nach "File Upload" hier im Forum.
                        Die einzelnen Felder von $_FILES[] kannst Du Dir mal mit print_r ausgeben lassen und dann die passenden aussuchen.

                        Wie Du die Datei dann an die Mail hängst, weiß ich nicht. Vom Mitlesen hier weiß ich aber, dass die Funktion mail() wohl problematisch ist und Du lieber sowas wie php-mailer nehmen solltest. Auch hier hilft die Forumssuche sicher weiter.
                        Oder Google mal danach, wo Du ihn runterladen kannst. Dort gibt's sicher auch ne Anleitung dazu.

                        Insbesondere wenn es keine 08/15-Mail mit nur Text werden soll, wäre das wohl empfehlens wert.
                        **********************************
                        Nein, ich bin nicht die Signatur.
                        Ich putze hier nur.
                        **********************************

                        Kommentar

                        Lädt...
                        X