URL an E-Mail Adresse verschicken

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Hallo,

ich möchte eine Seite an einen Freund mit der kompletten URL an seine E-Mail Adresse verschicken.
Bin aber ein PHP-Dummie.

Auf jeder Seite wollte ich ein Button oder einen Text "An Freund senden".

Durch einen Klick darauf öffnet sich ein neues Fenster dem die URL der Seite
von der es kommt weitergegeben wurde.

Die URL ist auf der jetzigen Seite als Link klickbar.
Darunter zwei Mailfelder: "geben Sie Ihre E-Mail Adresse ein"
"geben Sie die E-Mail Adresse Ihres Freundes ein".

Vielleicht noch ein Textfeld, und Abschicken.

Für Hilfe wäre dankbar
Gruß
pepepy
 

Salzi

Prinzenapfel
Registriert
29.08.06
Beiträge
555
übergib doch einfach die aktuelle URL mit ans Forumlar.

<?php echo $_SERVER['PHP_SELF']?> gibt die aktuelle URL aus.
Gibt es noch zusätzliche Parameter die übergeben werden sollen: <?php echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']?>

Hoffe das bringt dich weiter
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Danke für Deine Antwort! :)

So richtig habe ich das noch nicht verstanden.
Mit der Zeile <?php echo $_SERVER['PHP_SELF']?>
wird die aktuelle Adresse ausgegeben.

Ich möchte aber auf Seite A einen Link (diese Seite einem Freund senden)
auf Seite B setzen, z.B.
<a href="anfreundsenden.html">diese Seite einem Freund senden</a>
Seite B wird geöffnet, oben ist als Link die Adresse der Seite A zu sehen, z.B.:
http://www.meineseite.de/aktuelles/index.php

Das funktioniert mit Deinem Script so noch nicht - oder?

Dann noch die Felder zum Eintragen der E-Mail Adressen.
Ein Formular das den Link der Seite an meinen Freund sendet.

Danke im Voraus
pepepy
 
Zuletzt bearbeitet:

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Danke für Deine Antwort! :)

So richtig habe ich das noch nicht verstanden.
Mit der Zeile <?php echo $_SERVER['PHP_SELF']?>
wird die aktuelle Adresse ausgegeben.

Ich möchte aber auf Seite A einen Link (diese Seite einem Freund senden)
auf Seite B setzen, z.B.
<a href="anfreundsenden.html">diese Seite einem Freund senden</a>
Seite B wird geöffnet, oben ist als Link die Adresse der Seite A zu sehen, z.B.:
http://www.meineseite.de/aktuelles/index.php

Das funktioniert mit Deinem Script so noch nicht - oder?

Dann noch die Felder zum Eintragen der E-Mail Adressen.
Ein Formular das den Link der Seite an meinen Freund sendet.

Danke im Voraus
pepepy

Ja, also, ähm, sollen wir das jetzt für Dich programmieren? Versuch's doch mal :)

Wie würdest Du die Sache angehen?
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Ich bin jemand der PHP wahrscheinlich nie in seine Birne krigt.
Deshalb meine Frage hier im Forum, bisher konnte ich kein Script finden.

Ich kann wirklich nur kopieren, begreifen kann ich es nicht.

Also nicht böse sein, ich will auch niemanden ausnutzen.
Es gibt Leute die haben Spass an so einer Aufgabe. Auf die hoffe ich.

Gruß
pepepy
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Hier habe ich ein Script:
<a href="anfreundsenden.php?adresse=<?=str_replace("?", "%_%", $_SERVER['REQUEST_URI'])?>">an Freund senden</a>

Das funktioniert aber nur von der Index-Seite aus.

Befinde ich mich in einem Unterverzeichnis funktioniert es nicht mehr, da erst auf das Unterverzeichnis
und dann auf die Seite B "anfreundsenden.php" verlinkt wird.

Zum Beispiel:
http://localhost:8888/referenzen/anfreundsenden.php?adresse=/referenzen/

Und die Fehlermeldung im Browser dem entsprechend:

Not Found

The requested URL /referenzen/anfreundsenden.php was not found on this server.

Richtig wäre /anfreundsenden.php

Wo liegt denn hier der Fehler?

Gruß
pepepy
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Ha - es war der Slash:
<a href="/anfreundsenden.php?adresse=<?=str_replace("? ", "%_%", $_SERVER['REQUEST_URI'])?>">an Freund senden</a>

Wie kann man denn variable E-Mail Adressen verschicken?
Bisher hatte ich nur feste Adressen an die das Formular geschickt werden sollte.

Hier soll der Link der Seite A an völlig verschiedene E-Mail Adressen geschickt werden können.

Freue mich über Hilfe :)
Gruß
pepepy
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Zum Beispiel so wie bei heise.de. Wie es geht? Man erzeugt ein Formular, welches dann auf dem Server zum Beispiel mit PHP verarbeitet wird. Dort wird dann eine E-Mail generiert und versendet. Dafür eine Copy-Paste-Lösung abzuliefern ist nahezu unseriös, da es in einigen Bereichen schon darauf ankommt, wie die Struktur der WebSite und des Servers sich darstellen.
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Ich bin jetzt so weit, das die Seite A ihre Adresse an Seite B weitergibt,
die auch sichtbar ist.
Formular funktioniert nur halb. Die Mails kommen an.
Alle Felder werden ausgegeben nur der Link nicht.

Alle Felder haben im Formular einen Namen nur der Link nicht.

Liegt es vielleicht daran?

Das kommt als Mail:
--------------------------------------------
Diese Seite ist sehenswert: hier sollte die vollständige URL stehen

pepe
Diese Seite musst du dir ansehen.

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


Seite A:

<a href="/anfreundsenden/index.php?adresse=<?=str_replace("?", "%_%", $_SERVER['REQUEST_URI'])?>">an Freund senden</a>


Seite B:
Um die ganze URL zu schicken, muss ich sicher die Zeichenkette "http://www.meineseite.de" vor str_replace einfügen?

<?php
//Formulardaten empfangen
$link = str_replace("%_%", "?", $_GET['adresse']);
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$nachricht = trim(substr($_POST["nachricht"],0,150));
$button = $_POST["button"];

//include ("../funktionen/funktionen.php");
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 || !$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\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" />
</head>
<body>

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

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

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

<p>
<!-- HTML-nachricht -->
Link an Freund senden: http://www.meineseite.de<?php echo $link; ?>
</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&auml;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>
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
//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"];

Auf diese Weise sollte die URL mitgegeben werden - oder?

Link an Freund senden: <a id="link" name="link_adresse">http://www.meineseite.de<?php echo $link_adresse; ?></a>

Ich kann es leider nicht testen. 1&1 hat Mail-Probleme.

Kann man das so machen?
 
Zuletzt bearbeitet:

musiq

Gast
sieht sehr nach einer fünfmaligen HerzOP aus. warum nicht, vorausgesetzt du benutzt deinen mac mit mail, einfach "Apfel+i" drücken? ;D
 

musiq

Gast
Du nix verstehen? apfel+i drücken und dann gehen alles. Wat gibts in Nordeney.
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
apfel+i drücken und dann gehen alles.

Die Haben seit Tagen Probleme mit falschen Rechnungen und falschen Absendern.
Mal funktionert's mal nicht.
Die Mails von meinem Link-Formular kommen glaube ich nicht mehr an.

Aber ich wollte ja nur wissen, ob mein Script so funktioneren kann.
Oder ob es hier eine bessere Lösung gibt.
 

musiq

Gast
Wenn du bei einer Website bist, und du Apfel+i drückst, dann erscheint mail, mitsamt dem Link, der website. Wirklich bequem. Geht das nicht bei dir?
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Iss ja schön, aber ich suche keine Tipps und Tricks für Mac OS X.
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Wenn du bei einer Website bist, und du Apfel+i drückst, dann erscheint mail, mitsamt dem Link, der website. Wirklich bequem. Geht das nicht bei dir?

Tyler.Durden, die Problemstellung, dessen Lösung sich pepe derzeit nähert, ist, diese Empfehlung als Web-Site-Feature abzubilden (daher auch das Forum »Web-Programmierung«. Dein Hinweis ist hilfreich, jedoch für ein ganz anderes Problem ;)

Streichen wir also die letzten Dialoge; Äh, pepe, ich habe die Fragestellung zu Deinem Beitrag von 15.03 Uhr nicht ganz verstanden, wo hakt's?
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332

Die Adresse der Seite A wurde an Seite B (Formular) übergeben - wunderbar.
Auf Seite B erscheint die URL der Seite A als Text, z.B.:
Link an Freund senden: http://www.meineseite.de/seiteA.php

Das kam allerdings nicht mit der E-Mail mit. Da stand nur:
Link an Freund senden:

Da dachte ich mir, ich müsse an dieser Stelle einen Namen vergeben, den PHP auslesen und mitschicken kann. Nur wie gibt man einem Text einen Namen?
Also habe ich mir folgendes ausgedacht:

Link an Freund senden: <a id="link" name="link_adresse">http://www.meineseite.de<?php echo $link_adresse; ?></a>

Auf diese Weise, so dachte ich wird PHP die Adresse mitschicken.
Und nun wollte ich wissen ob das so gehen kann oder ob es da eine bessere Lösung gibt.
 

pepepy

Becks Apfel (Emstaler Champagner)
Registriert
20.06.06
Beiträge
332
Mit Sicherheit würde die URL in der Mail ankommen,
wenn sie in einem Formular-Element stehen würde:

Link an Freund senden: <input type="text" name="link_adresse" value="<?php echo $link_adresse; ?>" maxlength="50" size="50" disabled="1" />

Das sieht aber unschön aus. Deshalb als Text.