• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Einige Blicke in fremde Welten dürft Ihr nun bestaunen und darüber abstimmen, welche davon Euch am meisten gefällt: hier geht es lang für Euer Voting --> Klick

URL an E-Mail Adresse verschicken

gib sie doch einfach als Text aus und speichere sie zustäzlich noch als Hidden-Field dann kannst du es Problemlos übergeben.

Sowas z.B: <input type="hidden" name="link_adresse" value="<? $_GET['$link_adresse']; ?>">
 
gib sie doch einfach als Text aus und speichere sie zustäzlich noch als Hidden-Field dann kannst du es Problemlos übergeben.

Sowas z.B: <input type="hidden" name="link_adresse" value="<? $_GET['$link_adresse']; ?>">

Gute Idee, danke :-).
Doch momentan kommt keine einzige Mail,
die von diesem Formular abgeschickt wurde, an.
Ich hoffe es liegt an 1&1 und nicht an meinem Formular.

Habe ich hier irgendwo einen Fehler?

CODE
Seite A:
<a href="/anfreundsenden.php?adresse=<?=str_replace("?", "%_%", $_SERVER['REQUEST_URI'])?>">SEITE SENDEN</a>


Seite B (anfreundsenden.php):
<?php
//Formulardaten empfangen
$link_adresse = str_replace("%_%", "?", $_GET['adresse']);
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$email_empfaenger = trim($_POST["email_empfaenger"]);
$nachricht = trim(substr($_POST["nachricht"],0,150));
$button = $_POST["button"];

function check_email($email,$email_empfaenger) {
//email nach dem @-Zeichen aufgetrennt
$addarray = explode("@",$email);

//gab es mehr oder weniger als ein @-Zeichen? Dann falsch
if(count($addarray) != 2) return false;

//ist der Teil vor dem @-Zeichen leer? Dann falsch
if(strlen($addarray[0]) == 0) return false;

//ist der Domain_teil nach dem @-Zeichen kleiner als 5 Zeichen? Dann falsch
if(strlen($addarray[1]) < 5) return false;

//Punkt f¸r Toplevel-Domain auslesen
$punktarray = explode(".",$addarray[1]);

//gab es weniger als einen Punkt, dann ung¸ltig, falsch
if(count($punktarray) < 2) return false;

//TopLevelDomain merken
$tld = $punktarray[count($punktarray)-1];

//TLD hat mindestens 2, max. 6 Zeichen
if(strlen($tld) >= 2 && strlen($tld) <= 6) return true;
}

//Formulardaten versendet?
if($button){

//Pflichtfelder leer?
if(!$name || !$email || !$email_empfaenger || !$nachricht){

$meldung[] = "Bitte alle * Felder ausfüllen";
}


//Email-Adresse falsch?
$check = check_email($email,$email_empfaenger);
//$check = true;
if(!$check){

$meldung[] = "Bitte geben Sie eine korrekte E-Mail ein";
}

//alles in Ordnung?
if(!$meldung){

//email versenden!!!
$subject = "Diese Seite ist sehenswert ".date("d.m.Y H:i:s");

$mailbody = "Einen Freund informieren: $link_adresse\n\n".
"$name\n$nachricht\n\n".
"Ciao";

//Das @-Zeichen vor mail unterdrückt Verbindungsfehler
$versandt = @mail("$email_empfaenger", $subject, $mailbody, "From: $email");

if($versandt) header("Location: /anfreundsenden/antwort.php?name=".urlencode($name));
//eigene Fehlerausgabe
else $meldung[] = "Verbindungsprobleme! Versuche Sie es später noch einmal.<br /><br />";

}


}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Einen Freund informieren</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="/css/bst.css" rel="stylesheet" type="text/css" media="all"/>
</head>
<body>

<h3>An Freund senden:</h3>
<?php

if(is_array($meldung)){
echo implode("<br />", $meldung);
}

?>
<form action="/anfreundsenden.php" method="post">

<p>
<!-- HTML-nachricht -->
<input type="hidden" name="link_adresse" value="<? $_GET['$link_adresse']; ?>" />
Link an Freund senden: http://www.baustudio-lb.de<?php echo $link_adresse; ?>
</p>
<p>Ihr Name *<br />
<input type="text" name="name" value="<?php echo $name; ?>" maxlength="50" size="50" />
<br />

Ihre E-Mail Adresse *<br />
<input type="text" name="email" value="<?php echo $email; ?>" maxlength="50" size="50" />
<br />

E-Mail Adresse des Empfängers*<br />
<input type="text" name="email_empfaenger" value="<?php echo $email_empfaenger; ?>" maxlength="50" size="50" />
<br />

Nachricht *<br />
<textarea name="nachricht" cols="50" rows="5" wrap="virtual"><?php echo $nachricht; ?></textarea>
<br />

<input type="submit" name="button" value="versenden" />

</p>
</form>

</body>
</html>
 
semi offtopic

tell-a-friend lösungen werden gerne zum spammen benutzt, also auch an captchas oder wenigstens rudimentäre sicherheit denken, ansonsten werden eine menge leute in kürzester zeit auf dich und deine seite einen grossen missmut hegen
 
Ja, sporadisch kommen Mails an. Die Testmails jedoch überhaupt nicht.
Kann es sein, dass sie vom Server abgefangen werden, weil die Herkunft unklar ist?

Ansonsen müsste ja wirklich ein Fehler im Script vorliegen.
Aber vielleicht kommen die Mails ja noch geballt in ein paar Tagen. :-c
 
semi offtopic
wenigstens rudimentäre sicherheit

Wodurch kann ich denn Sicherheit schaffen? Es kann ja jeder igendeine E-Mail-Adresse eintragen. Es müsste wahrscheinlich geprüft werden ob es die Absender-Adresse gibt?
Und wie stelle ich sowas an? Oder gibt es andere Möglichkeiten?
 
Wodurch kann ich denn Sicherheit schaffen? Es kann ja jeder igendeine E-Mail-Adresse eintragen. Es müsste wahrscheinlich geprüft werden ob es die Absender-Adresse gibt?
Und wie stelle ich sowas an? Oder gibt es andere Möglichkeiten?

yep captcha z.b. schau aml nicht eingelogged in die AT suche ;)

allerdings muss ich sagen, dass ich von send-2-friend lösungen eh nicht viel halte, da sie erfahrungsgemäss bei meinen projekten vor langer zeit kaum genutzt wurden, eben ausser zum spammen

das reine identifizieren der absenderadresse nützt IMHO gar nichts und auch captcha schützt bedingt nur gegen bots.

schau ich will dich ärgern und kenne deine mailadresse, dann lege ich mir einen dirtaccount und sende dir brav mails als empfehlungen von den wildesten seiten

wie gesagt IMHO send-2-friend einfach streichen aus dem projekt
 
Danke für den Hinweis.
Das die Dinger, die man meistens kaum lesen kann captcha heissen,
wusste ich auch noch nicht.

Gruß
pepe
 
laut golem hat 1&1 tatsächlich noch probleme ...

Es lag aber trotzdem an meinem Script.
Jetzt kommen die Mails an, jedoch immernoch ohne dem Link.
Es ist wie verhext.
Wenn ich das Textfeld mit Namen "uri" in den $mailbody einfüge, dann muss der doch mitkommen - oder?

Ich habe jetzt einiges geändert abeer trotzdem fehlt der Link.
CODE:
<?php
//Formulardaten empfangen
$link_adresse = str_replace("%_%", "?", $_GET['adresse']);
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$nachricht = trim(substr($_POST["nachricht"],0,150));
$button = $_POST["button"];

function check_email($email) {
//email nach dem @-Zeichen aufgetrennt
$addarray = explode("@",$email);

//gab es mehr oder weniger als ein @-Zeichen? Dann falsch
if(count($addarray) != 2) return false;

//ist der Teil vor dem @-Zeichen leer? Dann falsch
if(strlen($addarray[0]) == 0) return false;

//ist der Domain_teil nach dem @-Zeichen kleiner als 5 Zeichen? Dann falsch
if(strlen($addarray[1]) < 5) return false;

//Punkt f¸r Toplevel-Domain auslesen
$punktarray = explode(".",$addarray[1]);

//gab es weniger als einen Punkt, dann ung¸ltig, falsch
if(count($punktarray) < 2) return false;

//TopLevelDomain merken
$tld = $punktarray[count($punktarray)-1];

//TLD hat mindestens 2, max. 6 Zeichen
if(strlen($tld) >= 2 && strlen($tld) <= 6) return true;
}

//Formulardaten versendet?
if($button){

//Pflichtfelder leer?
if(!$name || !$email || !$email_empfaenger || !$nachricht){

$meldung[] = "Bitte alle * Felder ausfüllen";
}


//Email-Adresse falsch?
$check = check_email($email);
//$check = true;
if(!$check){

$meldung[] = "Bitte geben Sie eine korrekte E-Mail ein";
}

//alles in Ordnung?
if(!$meldung){

//email versenden!!!
$subject = "Diese Seite ist sehenswert ".date("d.m.Y H:i:s");

$mailbody = "Einen Freund informieren: $link_adresse\n$uri\n\n".
"$name\n$nachricht\n\n".
"Ciao";

//Das @-Zeichen vor mail unterdrückt Verbindungsfehler
$versandt = @mail($email_empfaenger, $subject, $mailbody, "From: $email");

if($versandt) header("Location: /anfreundsenden/antwort.php?name=".urlencode($name));
//eigene Fehlerausgabe
else $meldung[] = "Verbindungsprobleme! Versuche Sie es später noch einmal.<br /><br />";

}


}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Einen Freund informieren</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="/css/bst.css" rel="stylesheet" type="text/css" media="all"/>
</head>
<body>

<div align="left" style="margin-left: 40px;">

<h3>An Freund senden:</h3>
<?php

if(is_array($meldung)){
echo implode("<br />", $meldung);
}

?>
<form action="/anfreundsenden/index.php" method="post">

<p>
<!-- HTML-nachricht -->
<input type="text" size="50" name="uri" value="http://www.meineseite.de<?=str_replace("%_%", "?", $_GET['adresse'])?>" disabled="1" />
<br /><br />
Link an Freund senden: http://www.meineseite.de<?php echo $link_adresse; ?>
</p>
<p>Ihr Name *<br />
<input type="text" name="name" value="<?php echo $name; ?>" maxlength="50" size="50" />
</p>
<p>
Ihre E-Mail Adresse *<br />
<input type="text" name="email" value="<?php echo $email; ?>" maxlength="50" size="50" />
</p>
<p>E-Mail Adresse des Empf&auml;ngers*<br />
<input type="text" name="email_empfaenger" value="<?php echo $email_empfaenger; ?>" maxlength="50" size="50" />
</p>
<p> Nachricht *<br />
<textarea name="nachricht" cols="50" rows="5" wrap="virtual"><?php echo $nachricht; ?></textarea>
<br /><br />
<input type="submit" name="button" value="versenden" />
</p>
</form>

</div>

</body>
</html>
 
inder Mail kommt nur das an:
--------------------------------------
Einen Freund informieren:


pepe
mit textfeld "uri" und hiddenfeld

Ciao
--------------------------------------

Woran kann es liegen?, ich bin schon am verzweifeln.

Gruß
pepe
 
Wenn ich das richtig interpretiere, hast Du Formular, welches per POST die Adresse an das Folgescript übermittelt:
Code:
<input type="text" size="50" name="uri" value="http://www.meineseite.de<?=str_replace("%_%", "?", $_GET['adresse'])?>" disabled="1" />

Im Folgescript, welches die Mail zusammenstellen soll, steht Dir also die Zeichenkette der URL im Feld $_POST['uri'] zur Verfügung.

Hier verwendest Du allerdings die Variable $link_adresse:
Code:
//Formulardaten empfangen
$link_adresse = str_replace("%_%", "?", $_GET['adresse']);

Wenn Du stattdessen den oben genannten Wert aus der Feldvariable $_POST verwendest, sollte es gehen:
Code:
//Formulardaten empfangen
$link_adresse = $_POST['uri'];

ABER: Die von Dir verwendete Programmierung eignet sich für alle möglichen bösen Dinge, die man sich im Zusammenhang mit E-Mails denken kann.
 
Ich habe jetzt so viel probiert, dass ich gar nichts mehr weiss.
Fakt ist nur, ich kann einfach die blöde Adresse der Seite A, die Seite B (Formular)
weiter gegeben wurde, nicht dazu bewegen in der Mail aufzutauchen.
Sollte eigentlich kein Ding sein. Oder?

Ich bin ratlos :-c
Mag aber noch nicht aufgeben. Was könnte ich noch anstellen?
 
Was könnte ich noch anstellen?

öhm z.b. aufhören was hilarious schreibt

ABER: Die von Dir verwendete Programmierung eignet sich für alle möglichen bösen Dinge, die man sich im Zusammenhang mit E-Mails denken kann.

und überlegen ob du es wirklich brauchst

ansonsten finden sich bei google unmengen an informationen und fertigen scripts ;)

IMHO nutz das wie gesagt eh keiener, mal ehrlich hast du sowas schon mal genutzt im www?
 
  • Like
Reaktionen: Hilarious
Wenn das funktioniert, kann ich es immer noch verwerfen. Ich werde mal weiter suchen.
 
O.k. hier der Code. Aber Ihr habt natürlich Recht, es ist sher unsicher.

Ein Problem ist schonmal, dass du die Variable "$email_empfaenger" nicht definierst zu Beginn deines Scripts (z.B.
Code:
$email_empfaenger = trim($_POST['email_empfaenger']);
).

Ob das des Rätsels Lösung ist kann ich leider nicht sagen, da ich das Script derzeit nicht testen kann.

Bye

EDIT:

Gleiches gilt für die Variablen "$link_uri" und "$link", die du im Mailbody verwendest. Wo werden diese mit Informationen gefüllt?

EDIT 2: (Ich sollte erst posten, wenn ich mir alles angeschaut habe *g*)

Dein Textfeld "uri" ist auf "disabled" gestellt, dann übergibt es natürlich auch keine Informationen.
Was du wahrscheinlich möchtest ist das "readonly" Attribut.

Näheres siehe:
http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#adef-readonly
http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#disabled
 
Zuletzt bearbeitet:
Ein Problem ist schonmal, dass du die Variable "$email_empfaenger" nicht definierst zu Beginn deines Scripts

Den $email_empfaenger habe ich genau so angelegt wie $email nur eben umbenannt und bekommen habe ich ja die Mails, nur ohne diesen Link.

Dann muss es noch was Anderes sein.