Wie Formulardaten als Text und Link an email schicken?

pitgaul

Grünschnabel
Hi Leute,
ich bin PHP Anfänger und stehe auch nach Stunden von Beispiel sucherei immer noch auf dem Schlauch.
Das verschicken als Text bekomm ich hin, aber das diese dann als Link im email landen bekomm ich einfach nicht zu stande.

Hätte jemand von euch ein kleines Beispiel Script?
Eingabe sollte über ein Formular erfolgen und im Mail sollte dann ausser dem Text dann der Link (z.B. href=beispiel.php?name=Peter&e_mail=mail@beispiel.de&nachricht=Text) stehen.

Danke schon im Vorraus.

Peter.
 
Zuletzt bearbeitet:
Sieh dir bitte mal die funktion mail an.
Im Beispiel:
(einfachste Art):

mail('caffeinated@example.com', 'My Subject', $message);
also als erstes, zu wem die Email geschickt wird, zweites den Betreff der Email und als drittes deinen Inhalt (klar oder?)

Welchen Link meinst du genau?
Und was willst du über dein Formular übergeben? (weißt du wie man Formulare ausließt?)
 
Hi Mainclain,
zuerst einmal das von mir verwendete Script:
PHP:
<?php
// Einstellungen

# Ihre E-Mailadresse
$sys_webmaster = 'mail@beispiel.de';

# Absender || Muster(From: NAME <EMAIL>) // Beispiel: 'From: Max Mustermann <max@musterdomain.tld>'
$sys_absender = 'From: E-Mail Formular <mail@beispiel.de>';

# Betreff
$sys_betreff = 'E-Mail Formular-Anfrage';

// Nachrichten
# Nicht alle Felder ausgefüllt
$err[0] = '<h2>Fehler, Sie haben nicht alle Felder ausgefüllt:</h2>';

# Kein Name eingegeben
$err[1] = '<h3>- Ungültiger Name</h3>';

# Ungültige E-Mailadresse eingegeben
$err[2] = '<h3>- Ungültiger E-Mailadresse</h3>';

# Kein Betreff eingegeben
$err[3] = '<h3>- Ungültiger Betreff</h3>';

# Keine Nachricht eingegeben
$err[4] = '<h3>- Ungültige Nachricht</h3>';

# Ungültiger Sicherheitscode
$err[5] = '<h3>- Ungültiger Sicherheitscode</h3>';

# Alle Felder sind OK
$ok = '<h2>Vielen Dank für Ihre Nachricht, wir werden Sie so schnell wie möglich bearbeiten!</h2><br /><br />';
?>



#Vereinfach dargestellter HTML TEIL
<form name="kontaktformular" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">

<?php

function PAS_CRYPT($data=NULL){
$key = md5($_SERVER["DOCUMENT_ROOT"].$_SERVER['SELF_PHP']);
$td = mcrypt_module_open(MCRYPT_GOST, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
if ($data==NULL) {
$data = mcrypt_generic($td, substr(md5 (uniqid (rand())), 0, 6));
$data = base64_encode($data);
$data = strtr($data, '+/', '-_');
}else{
$data = mdecrypt_generic($td, base64_decode($data));
preg_match_all("/[.a-z0-9_-]+/i", $data, $heurix);
$data = $heurix[0][0];
}
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $data;
}
$pas = PAS_CRYPT();
$name = trim(strip_tags($_POST['name']));
$email = trim(strip_tags($_POST['email']));
$betreff = trim(strip_tags($_POST['betreff']));
$homepage = trim(strip_tags($_POST['homepage']));
$nachricht = trim(strip_tags($_POST['nachricht']));
if(isset($_POST['submit'])){
$timestamp = time ();
$datum = date ("d.m.Y",$timestamp);
$uhrzeit = date ("H:i:s",$timestamp);
$msg = '<span style="color:red">'.$err[0];
if($name == ''){
$msg .= $err[1];
$error = true;
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){
$msg .= $err[2];
$error = true;
}
if($nachricht == ''){
$msg .= $err[4];
$error = true;
}
if(PAS_CRYPT($_POST['xpas']) != strip_tags($_POST['code'])){
$msg .= $err[5];
$error = true;
}
$msg .= '</span><br /><br />';
if($error != true){
$sys_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff\nName: $name\nE-Mail: $email\nHomepage: $homepage\n\nNachricht:\n$nachricht\n\nGesendet am $datum um $uhrzeit.";
mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);
$name = NULL;
$betreff = NULL;
$homepage = NULL;
$email = NULL;
$nachricht = NULL;
echo $ok;
}else{
echo $msg;
}
}
?>

#Vereinfach dargestellter HTML TEIL
<h3>Dein Name:</h3>
<input name="name" type="text" value="<? echo $name; ?>" size="40" maxlength="100">
<h3>E-Mail:</h3>
<input name="email" type="text" id="email" value="<? echo $email; ?>" size="40" maxlength="100">
<h3>Homepage *:</h3>
<input name="homepage" type="text" id="homepage" value="<? echo $homepage; ?>" size="40" maxlength="100" />
<h3>Betreff *:</h3>
<INPUT NAME="betreff" TYPE="text" id="betreff" value="<? echo $betreff; ?>" SIZE="40" maxlength="50"></td></tr>
<h3>Nachricht:</h3>
<textarea name="nachricht" cols="40" rows="10" wrap="VIRTUAL" id="nachricht"><? echo $nachricht; ?></textarea></td></tr>
<h3>Sicherheitscode:</h3>
<img src="captcha_form.php?pa_s=<? echo $pas; ?>" alt="Captcha" border="1" />
<h3>Sicherheitscode <br>wiederholen: </h3>
<input name="code" type="text" id="code" size="20" maxlength="50" />
<input class="button" type="submit" value="Abschicken" name="submit" OnMouseOver="NewColor(this,'#F0D6AB','#A91E1F','2px solid #F0D6AB')" OnMouseOut="NewColor(this,'#A91E1F','#F0D6AB','2px solid #A91E1F')">
<input name="xpas" type="hidden" id="xpas" value="<? echo $pas; ?>" />

</form>

Damit bekomm ich fogende eMail:

-- Kontakformularanfrage --

Betreff: Test
Name: Peter
E-Mail: mail@beispiel.de
Homepage: http://www.beispiel.de

Nachricht:
test nachricht

Gesendet am 12.10.2009 um 19:23:08.

Würde jetzt gerne auch noch ein Link wie
<a href="beispiel.pl?betreff=Test&name=Peter&e_mail=mail@beispiel.de&homepage=www.beispiel.de&nachricht =Text"> Eintragen </a>
erzeugen.
Dadurch könnte ich diese zu dem Script Beispiel.pl schicken wo sie dort dann verarbeitet werden.
Möchte somit den Eintrag zuerst überprüfen können.
 
Zuletzt bearbeitet:
Ich sollte echt mehr Deutsch lernen - Verstehe noch immer nicht wo genau dein Problem ist.

Du hast einen Link, z.b.
PHP:
<a href="beispiel.pl?betreff=Test&name=Peter&e_mail=mail@beispiel.de&homepage=www.beispiel.de&nachricht =Text"> Eintragen </a>

Dieser Link ist vorgegeben?
Warum schreibst du das nicht einfach in dein Nachrichten Feld?
(Hab lange keine mail funktion mehr benutzt, kann sein das du das ganze noch im HTML Format bringen musst, wie das geht steht ja auf der Manual Seite.)

Und um meinen Vorgänger nochmal zu unterstützen - Ja PHP Tag ist echt schöner zum lesen :D
 
Der Link soll aus den eingegeben Daten erstellt werden.
Das Perlscript ist vorgegeben.
Ich trage doch die Daten alle bereits in die Formularfelder ein.
$betreff -> Betreff: Test
$name -> Name: Peter
$email -> eMail: mail@beispiel.de
$homepage -> Homepage: http://www.beispiel.de
$nachricht -> Nachricht: Text

Das Feld Betreff: $betreff soll mit dem eingeben Wert "Test" im Link dann als betreff=Test mit dem Trennzeichen & stehen. Dann das Feld Name: $name u.s.w.

Das heißt ich suche nach einer Lösung um nur die Ausgabeart der bereits erhalten Daten zu ändern,
beispiel.pl?betreff=$betreff&name=$name&email=$email&homepage=$homepage&nachricht =$nachricht
so das es später zusätzlich in dem Format im eMail seht
beispiel.pl?betreff=Test&name=Peter&email=mail@beispiel.de&homepage=www.beispiel.de&nachricht =Text
und zum anklicken ist.
 
Zuletzt bearbeitet:
Aso.
Also willst du von
"Betreff: Test" nur das "Test" haben? Ist doch relativ einfach.
Nutze die Funktion explode()

Das würde dann so aussehen
$betreff = "Betreff: Test";
$betreffarray = explode(": ", $betreff, 2);
Bei explode teilt er also bei einem vorkommenden ": " deine Variable in einen array.
Die 2 ist dafür da, nur das erste : zu nehmen - kann ja sein das hinter Betreff: noch mehr doppelpunkte kommen.
hier würdest du nun mittels $betreffarray[1] auf "Test" zugreifen können. Mittels $betreffarray[0] auf "Betreff".

Hoffe das hilft dir weiter und ich hab dich nicht wieder falsch verstanden


In dem Beispiel:
beispiel.pl?betreff=$betreff&name=$name&email=$email&homepage=$homepage&nachricht =$nachricht
könntests du also anstatt "?betreff=$betreff" "?betreff=$betreffarray[1]" eintragen.
 
Zuletzt bearbeitet:
Hab jetzt folgende Teil Lösung:

PHP:
# Eintrag Link
$e_name = ereg_replace(" ","+",$name);
$e_email = ereg_replace("@","%40",$email);
$e_com = ereg_replace(" ","+",$nachricht);
$e_com = ereg_replace("\n","%0D%0A",$e_com);
$e_url = ereg_replace("://","%3A%2F%2F",$homepage);

$eintrag = "http://www.beispiel.de/cgi-bin/pfad/beispiel.pl?func=new&name=$e_name&email=$e_email&com=$e_com&url=$e_url";

$sys_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff\nName: $name\nE-Mail: $email\nHomepage: $homepage\n\nNachricht:\n$nachricht\n\nGesendet am $datum um $uhrzeit.\n\nIns Gästebuch eintragen: $eintrag";
mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);

Ausgabe eMail:
######################
-- Kontakformularanfrage --

Betreff: Test
Name: Peter Gaul
E-Mail: pit@gmx.de
Homepage: http://www.peter.de

Nachricht:
Hallo Erste Zeile
hallo zweite zeile

Gesendet am 04.12.2009 um 00:30:48.

Ins Gästebuch eintragen: http://www.beispiel.de/cgi-bin/pfad...r+Gaul&email=pit@gmx.de&com=Hallo+Erste+Zeile
%0D%0Ahallo+zweite+zeile&url=http%3A%2F%2Fwww.peter.de
######################

Jetzt stimmt der Eintrag so wie ich ihn haben möchte.
Nur ist der Link bis zu dem Eintrag "com=Hallo+Erste+Zeile" als Link aktiv.
Macht danach dann einen Zeilenumbruch (dieser sollte nur übertragen und nicht ausgeführt werden) und schreibt dann in der nächsten Zeile ohne Link weiter mit
%0D%0Ahallo+zweite+zeile&url=http%3A%2F%2Fwww.peter.de
Wie bekomm ich die zwei Teile zu einem Link zusammen? Obwohl "%0D%0A" für Zeilenumbruch drin steht.
So das er wie folgt aussieht:
http://www.beispiel.de/cgi-bin/pfad...e hallo+zweite+zeile&url=http://www.peter.de
 
Zuletzt bearbeitet:
Warum schmeißt du den Zeilenumbruch nicht einfach raus aus dem link?
Bzw. Hast du das CGI selbst geschrieben?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück