• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

In Mailfunktion einen Header senden?

Quaacki

Neues Mitglied
Hi Leute, ich habe folgendes Problem welches ich nicht richtig lösen kann.

Ich möchte eine einfache Registrierungsseite basteln die per Mail-Funktion an eine E-Mail gesendet wird und gleichzeitig soll Sie aber auf dieselbe Seite zurückweisen und Variablen mit übergeben.

Um es deutlicher zu machen hier der Code:

PHP:
$sHeader = "MIME-Version: 1.0\n"; 
        $sHeader .= "Content-type: text/html; charset=utf-8 \n"; 
        $sHeader .= "From:[email protected]\n";
        $sHeader .= 'Bcc: [email protected]' . "\r\n";
        //$sHeader .= 'Bcc: ' . "\r\n";
        /* Verweis damit E-Mail mit richtigem Passwort (nicht MD5) an Schüler gesendet wird */
        $sHeader.= ("location:registrierung.php?aktion=registrierungsdaten&benutzer=$sBenutzer&passwort=$sPasswort&anrede=$sAnrede&schueler=$sSchueler&email=$sEmail&klasse=$sKlasse&kommentar=$sKommentar");
        
        /* Verschicken der E-Mail */
        mail($sEmpfaenger, "Neue Registrierung eines Schülers", $sNachricht, $sHeader);
Ich bin mir der Tatsache bewusst das die Header hier falsch sind, aber dies sollte nur in Kurzform darstellen wo die Seite hinverweisen soll. Im original ist ein absolute http:// Verweis vorhanden, aber funzt genauso wenig!

Alternativ hatte ich versuch dies hinter die Mail-Funktion zu setzen:
PHP:
        //Alternativversuch Header an eine Adresse senden
        header("location:registrierung.php?aktion=registrierungsdaten&benutzer=$sBenutzer&passwort=$sPasswort&anrede=$sAnrede&schueler=$sSchueler&email=$sEmail&klasse=$sKlasse&kommentar=$sKommentar");
        //Alternativversuch Header an Addy ENDE
Beide Varianten funzen leider nicht. Warum will ich einen Header so senden? Die Leute die sich registrieren, sollen eine E-Mail erhalten bevor der Admin sie erhält, weil die wo der Admin erhält das PW in MD5 vorliegen hat und derjenige wo sich registriert es im Klartext erahalten soll.

Hat jemand Rat wie man das umsetzen kann? Meine andere Idee wäre noch gewesen, jedesmal wenn sich jemand registriert, die Daten in die DB schreiben lassen, abholen und die 2. Mail an den User setzen und gleichzeitig die Daten dann löschen lassen. Allerdings fände ich dies sehr umständlich, weil wozu gibt es header ;)

Vielleicht hat ja wer eine Idee und kann mir bei meinem Problem helfen :)

Liebe Grüße

Quaacks ^^
 
Hi,

dass du einen User durch öffnen einer Mail direkt - ohne weitere Klicks - auf deine Seite leiten kannst wäre mir neu, so eine Mail habe ich jedenfalls noch nicht bekommen ;)

Du kannst einen Link mitsenden!

PHP:
/* Verschicken der E-Mail */
mail($sEmpfaenger, "Neue Registrierung eines Schülers", $sNachricht, $sHeader);

ändern in:

PHP:
/* Verschicken der E-Mail */
mail($sEmpfaenger, 'Neue Registrierung eines Schülers <a href="http://deineseite.de/registrierung.php?var=val&var2=val2">Link</a>', $sNachricht, $sHeader);

Diesen Teil:
PHP:
$sHeader.= ("location:registrierung.php?aktion=registrierungsdaten&benutzer=$sBenutzer&passwort=$sPasswort&anrede=$sAnrede&schueler=$sSchueler&email=$sEmail&klasse=$sKlasse&kommentar=$sKommentar");
Solltest du aus dem "header" entfernen, das gehört dort nicht hinein!
 
Hoi @Asipak4You,

ich will ja nicht den User auf meine Seite lenken :) Also, passieren soll folgendes:

- User kommt auf die Seite
- User registriert sich
- Mail wird an den Lehrer versendet
- gleichzeitig soll eine Mail an den User versendet werden mit seinen Registrierungsdaten

Sprich, kein User soll irgendwie auf die Seite verwiesen werden ;)

Das ist die Sache die passieren soll und eben dieser Header funzt leider nicht. Ich will auf die gleiche Weise kommen (registrierung.php), weil die Variable die ich übergeben will, soll eben diese 2. Mail absenden.

PHP:
aktion=registrierungsdaten&benutzer=$sBenutzer&passwort=$sPasswort&anrede=$sAnrede&schueler=$sSchueler&email=$sEmail&klasse=$sKlasse&kommentar=$sKommentar");
"aktion=registrierungsdaten" sorgt dafür das meine if-Funktion aufgerufen wird in der die Mail an den User gehen soll, darum wird auch soviel übergeben :)

Mfg Quaacks ^^
 
Also ich weiß nicht, wo das Problem ist.

1. Prüfen der eingegebenen Daten auf Gültigkeit
2. Daten in Tabelle schreiben.
3. Mail an Schüler (mit Passwort)
3. Mail an Lehrer (ohne Passwort)
4. mittels header()-Funktion weiterleiten auf beliebige Seite.

Ich hoffe, ich habe Dein Problem richtig verstanden.

Gruß thuemmy
 
Jo thuemmy, Du hast mein Problem theoretisch erkannt O_o"

Nur genau die beiden Punkte bei 3 sind mein großes Problem. Ich kann doch nicht 2x hintereinander eine Mail-Funktion aufrufen, weil ich die Header die daraus resultieren nur einmal senden kann.

Darum wollte ich ja nen besseren Lösungsansatz als die wo ich oben geschrieben habe :)

Mfg Quaacks ^^

Nachtrag: Also ich denke zu wissen was Du meinst Thuemmy. Er soll aber die Mail an den jeweiligen Schüler erst dann senden, wenn er sich registriert hat. Allerdings muss ich ja dann auch die Mail-Funktion 2x senden. Einmal an den Lehrer der ihn freigibt und an den Schüler. Ich hatte ja auch einen Header hinter die Mail-Funktion gesetzt, aber die hat er gekonnt ignoriert... leider :/
 
Zuletzt bearbeitet:
Im Moment verstehe ich mal wieder nur Bahnhof... oder so.

Kann es sein, dass Du den Email-Header und den HTTP-Header durcheinanderbringst, bzw. gleichsetzt?

Wenn ich Deine Aufgabenstellung richtig verstanden habe, ist die wie folgt.

1. Schüler registriert sich
2. Lehrer bekommt Email mit Registrierungsinformationen
3. Lehrer gibt Registrierung frei/nicht frei
4. Schüler bekommt Mail mit Informationen über Registrierung (incl. Passwort in Klarschrift).

Ist das so richtig verstanden?

Gruß thuemmy
 
Ja fast :)

1. Schüler registriert sich
2. Lehrer bekommt Email mit Registrierungsinformationen
3. Schüler bekommt Mail mit Informationen über Registrierung (incl. Passwort in Klarschrift).
4. Lehrer gibt Registrierung frei/nicht frei
5. Schüler bekommt noch eine Mail ob frei/nichtfrei

Die 2 Mails haben folgenden Grund. In der Mail die der Lehrer bekommt, um den User freizuschalten, steht das MD5 Passwort. Wenn er den Schüler zulässt, schreibt das Script über den zulassen Link die Daten in die DB. Auch das PW welches nur in MD5 vorliegt.

Wenn ich erst dann eine Mail an den Schüler senden lasse, bekommt er es nur in MD5. Darum will ich das schon bei der Registrierung machen, weil ich da die Daten sofort abfangen kann.

Ich setze die Header nicht gleich, aber ich dachte das hängt zusammen, weil der normale header wie gesagt völlig ignoriert wird, den ich direkt unter die Mail-Funktion geschrieben habe. :)
 
Gut, jetzt hab ich es verstanden. Dafür brauchst Du aber 2 Scripte.

Das erste Script macht folgendes:
1. Schreiben der Daten in die Datenbank (Es sollte in dem Datensatz ein Feld sein mit Status freigeschaltet/nicht freigeschaltet)
2. Schicken der Email an den Lehrer. In der Email ist ein Link auf ein Freischalt-Script. Der Link enthält als GET-Parameter den Usernamen
3. Schicken der Email an den Schüler
4. HTTP-Header (header("Location.....) zum Weiterleiten senden.

Das zweite Script (Freischalt-Scrip) wird über den Link in der Email an den Lehrer aufgerufen. Dieses Script sollte in einem durch htaccess-geschütztem Verzeichniss liegen.
1. Setzen des Statusfeldes in dem betreffenden Datensatz.
2. Senden der Freischalt-Email an den Schüler.

Das sollte es jetzt sein, was du willst. Um das Problem der nicht ausgeführten header()-Funktion kümmern wir uns dann, wenn du soweit bist. Wäre doch gelacht, wenn Dein Problem hier nicht gelöst werden könnte.

Gruß thuemmy
 
Cool, danke erstmal für den Tip Thuemmy :)

Werde mich nachher gleich mal an die Umsetzung machen und schauen ob ich es erstmal soweit fertig bekomme.

Grüße zurück,

Quaacks :D
 
Hi Thuemmy, ich habe jetzt den fast ganzen Code umgeschmissen und überlasse dem User jetzt per Link selbst die Entscheidung ob er seine Registrierungsdaten nochmal erhalten will. Somit brauche ich mir keine Gedanken machen über irgendwelche Headers ;)

Ich habe es aber so gemacht wie Du sagtest. Ich lasse den User gleich eintragen mit gesperrt und wenn der Lehrer den Link klickt, wird der User auf frei gesetzt und kann sich einloggen. Ich danke Dir nochmals für Deinen Tip. Ich hätte mich sonst mit den Headers totgegrübelt.

So, damit ist dieser Thread eigentlich erledigt und kann geschlossen werden :)

Mfg Quaacks ^^
 
Zurück
Oben