Antworten auf deine Fragen:
Neues Thema erstellen

html > php Verlinkung

Duddle

Posting-Frequenz: 14µHz

AW: html > php Verlinkung

Dein Code, Ausschnitt:
PHP:
<?php

    if (isset($_POST['send']) && !$_POST['fName']){$err_fName=1;}ELSE{$err_fName=0;}

    if (($err_fName + $err_lName + $err_eMail + $err_message)==0)
        {
        $fName = $_REQUEST['fName'];
//etc
            }
?>
Dein erstes If-Zeug prüft zuerst ob 'send' im $_POST-Array gesetzt wurde. Das ist False beim normalen Laden der Seite. Ergo führt er den Else-Zweig aus und die Fehlervariable wird auf 0 gesetzt.
Dies ist der Fall für alle vier Abfragen. Deshalb ist die Summe deiner Fehlervariablen 0.

Also geht er in den If-Block deines zweiten If-Zeugs. Dort willst du einen Wert aus dem $_REQUEST-Array mit dem Index 'fName' holen. Da die Seite aber normal geladen wurde, wurde kein solcher Eintrag in das Array gemacht. Folglich ist der Index namens 'fName' nicht gesetzt und genau da meckert er dann mit
Notice: Undefined index fName

Wie gesagt, er macht genau das was du ihm sagst.


Duddle
 

K

kornyclown

Guest

AW: html > php Verlinkung

Das heißt ich müsste nur dafür sorgen, dass das Skript beim initialisieren nicht in den if Zweig "abrutscht" sondern ihn erst ausführt wenn der Nutzer das Protokoll abschickt?
 

Duddle

Posting-Frequenz: 14µHz

AW: html > php Verlinkung

Jau, zum Beispiel indem du alles was nur beim Abschicken des Formulars passieren soll auch nur dann ausführst. Dafür ist die Fallunterscheidung mit
PHP:
isset($_POST['send'])
gut geeignet.


Duddle
 

randacek_pro

Mod | Forum

AW: html > php Verlinkung

Diese ganze Sache könnte also so aussehen:
PHP:
<?php

    if(isset($_POST['send']) {

    if($_POST['send'] && !$_POST['lName']){$err_lName=1;}ELSE{$err_lName=0;}
    if($_POST['send'] && !$_POST['fName']){$err_fName=1;}ELSE{$err_fName=0;}
    if($_POST['send'] && !$_POST['eMail']){$err_eMail=1;}ELSE{$err_eMail=0;}
    if($_POST['send'] && !$_POST['message']){$err_message=1;}ELSE{$err_message=0;}

//dann dein weiter PHP-Code mit Mail-Funktion
//zB so:

if(($err_fName + $err_lName + $err_eMail + $err_message)==0) {
       $nachricht=$_POST['fName']." ".$_POST['lName']." ".$_POST['eMail']." schrieb:\n".$_POST['message'];
       mail($nachricht);
                       }
                        else {
?>
<form method="POST" action="contact.php">
            <table>Contact me:
                <tr>
                    <td>First Name:</td>
                    <td><input type="text" name="fName" style="<?php if($err_fName==1){echo 'border-color:red';}?>"/> *</td>
                </tr>
                <tr>
                    <td>Last Name:</td>
                    <td><input type="text" name="lName" style="<?php if($err_lName==1){echo 'border-color:red';}?>"/> *</td>
                </tr>
<!-- dein weiteres HTML-Form -->

<?php
    }
?>
Viele Grüße
 
K

kornyclown

Guest

AW: html > php Verlinkung

Also, ich weiß garnich wie ich euch danken soll. Ich habs jetz soweit das alles prinzipiell funktioniert. Jetz hab ich noch so Kleinigkeiten. Wenn ich bei erfolgreich oder unerfolgreich abgeschickter mail eine dementsprechende Zeile ausgebe dann erscheint diese ganz oben, noch über der eigentlichen Seite. Ich will aber dass mir die Zeile unter dem Formular ausgegeben wird.

Also dachte ich wegen der zeilenweise Auslesung von oben nach unten daran:

PHP:
<form>
...
</tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="Send" name="send"></input></td>
                </tr>
            </table>
        </form>
        <?php 
            if(isset($_POST['send'])){if($err_mailsend==0){echo "<h1>Your mail was send. I will process your request quickly.</h1>";}
            if(isset($_POST['send'])){if($err_mailsend==1){echo "<h2>You forgot to fill in one or more fields. Please recheck.</h2>";} 
        ?>
        
    </section>
aber dann bekomme ich die Fehlermeldung dass mein Skript unerwartet in Zeile 143 endet.
Wenn ich den oben gezeigten php teil weglasse dann funtioniert es wieder.


Ach so:
Und ä, ü, und ö werden in den Mails nicht richtig dargestellt. Muss ich dazu das <meta charset="> der Seite ändern oder wie krieg ich das richtig dargestellt?
 
Zuletzt bearbeitet von einem Moderator:

Duddle

Posting-Frequenz: 14µHz

AW: html > php Verlinkung

Wenn du nicht so geizig mit Zeilenumbrüchen wärest, würdest du deinen Fehler sehen. Folgendes
PHP:
if(isset($_POST['send'])){if($err_mailsend==0){echo "<h1>Your mail was send. I will process your request quickly.</h1>";}
sieht besser formatiert so aus
PHP:
if(isset($_POST['send'])) {
    if($err_mailsend==0) {
		echo "<h1>Your mail was send. I will process your request quickly.</h1>";
    }
Na, wo ist der Fehler?
Achja, die Vergangenheitsform von "send" ist "sent" :p

Für die Umlaute: gib dein Problem in Google ein ("umlaute php mail"), dann findest du als erstes Ergebnis eine Lösung.


Duddle
 

randacek_pro

Mod | Forum

AW: html > php Verlinkung

Könntest du es nicht auch kürzer so machen?
PHP:
if(isset($_POST['send'])){
                          if($err_mailsend==0) {
                                                echo "<h1>Die Email wurde erfolgreich versendet. Ich werde schnellstmöglich antworten.</h1>";
                                               }
                          if($err_mailsend==1) {
                                                echo "<h2>Die Email konnte nicht versendet werden. Bitte versuchen Sie es später erneut.</h2>";
                                               }
                          }
Diesen Code kannst du oben über das Formular setzen und als weitere Bedingung hinzufügen, was nach dem Senden passieren soll.
Wenn $_POST['send'] nicht existiert, switchst du in den ELSE-Zweig, der dein Formular anzeigt...

Viele Grüße
 
Zuletzt bearbeitet:
K

kornyclown

Guest

AW: html > php Verlinkung

Wenn du nicht so geizig mit Zeilenumbrüchen wärest, würdest du deinen Fehler sehen. Folgendes
PHP:
if(isset($_POST['send'])){if($err_mailsend==0){echo "<h1>Your mail was send. I will process your request quickly.</h1>";}
sieht besser formatiert so aus
PHP:
if(isset($_POST['send'])) {
    if($err_mailsend==0) {
        echo "<h1>Your mail was send. I will process your request quickly.</h1>";
    }
Na, wo ist der Fehler?
Achja, die Vergangenheitsform von "send" ist "sent" :p

Für die Umlaute: gib dein Problem in Google ein ("umlaute php mail"), dann findest du als erstes Ergebnis eine Lösung.


Duddle

Ok, jetz hab ichs auch gesehen. Der Fehler is wirklich blöd.

Die entsprechende Lösung für das Umlaute-Problem habe ich versucht aber es will nich ganz. Es heißt man soll diesen Text in den header der mail() Funktion schreiben:
"Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable"
da ich aber noch das FROM: blablabla hinten ransetzen will muss ich das laut Lösungsvorschlag diese durch ein CRLF-Zeichen (\r\n) getrennt werden. Wenn ich also schreibe
PHP:
mail(empfänger, betreff, nachricht, "Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable" \r\n "FROM: blablabla");
Dann krieg ich die Fehlermeldung unexpected '\' ....
oder muss das \r\n noch in die Anführungszeichen?

Edit:
Ok, die Syntax stimmt jetz, ich kriege keine Fehlermeldung mehr aber die Umlaute werden immernoch nicht richtig dargestellt.
 
Zuletzt bearbeitet von einem Moderator:
K

kornyclown

Guest

AW: html > php Verlinkung

Also meine mail() Funktion sieht jetzt nach einiger Recherche so aus:
PHP:
mail($to, $betreff, $formular,  "MIME-Version: 1.0\n Content-type: text/plain; charset=ISO-8859-1\n Content-Transfer-Encoding: quoted-printable\r\n" . "FROM: $fName $lName <$eMail>");

Die Mail kommt an, Absender, Empänger, ... alles richtig. Nur die Umlaute sind nach wie vor falsch. Hatte es im Rahmen meiner Recherche auch schon mit Content-Transfer-Encoding: 8bit versucht aber das half auch nichts, deshalb bin ich jetzt bei der obigen Version geblieben.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben