Bestätigungsmail bei Click auf Link?
Harald
- php
Hallo und vorab schon Danke für jede Hilfe.
Habe bisher leider mit PHP überhaupt keine Erfahrung, möchte aber folgendes realisieren:
HTML-Seite, nur für ausgesuchte Nutzer zugänglich (gesichert über HTTPS/.htaccess), auf dieser Seite stelle ich verschiedene Dokumente (pdf/word/exel-files) in einer Tabelle zum Abruf bereit, funktioniert auch. Sieht bisher in etwa so aus:
<tr>
<td>
<a target="_blank" href="dokument1.pdf">Dokument1</a>
</td>
<td>
bla bla bla
</td>
</tr>
<tr>
<a target="_blank" href="dokument2.tiff">Dokument2</a>
...
usw.
Jetzt möchte ich aber zusätzlich, jedesmal wenn ein Besucher auf einen Link clickt, daß ich eine Mail mit bestimmten Infos (welchen Link angeclickt, Datum, Uhrzeit) erhalte.
Problem ist, daß ich das ganze nicht als Formular anlegen möchte mit einem send-Button, sondern daß normale Text-Links erhalten bleiben sollen und zugleich auch beim Absenden die Seite nicht geändert wird, sondern der Mailversand praktisch verdeckt im Hintergrund abläuft.
Ist sowas machbar und wenn ja, wie? Würde mich über jeden Tip freuen.
Gruß
Harald
hi,
Jetzt möchte ich aber zusätzlich, jedesmal wenn ein Besucher auf einen Link clickt, daß ich eine Mail mit bestimmten Infos (welchen Link angeclickt, Datum, Uhrzeit) erhalte.
für so etwas wertet man idR. die logfiles des servers aus - warum willst du das umständlich per mail machen?
Problem ist, daß ich das ganze nicht als Formular anlegen möchte mit einem send-Button, sondern daß normale Text-Links erhalten bleiben sollen und zugleich auch beim Absenden die Seite nicht geändert wird, sondern der Mailversand praktisch verdeckt im Hintergrund abläuft.
dann darfst du nicht mehr direkt auf die dateien verlinken, sondern musst ein download-script in PHP dazwischenschalten - und dieses kann ja dann auch mit mail() die mail an dich verschicken.
gruß,
wahsaga
Hello,
für so etwas wertet man idR. die logfiles des servers aus - warum willst du das umständlich per mail machen?
Das dachte ich auch gerade.
Wenn die Logfiles zu unübersichtlich oder nicht vollständig genug sind, könnte man ja auch ein eigenes Logfile dafür erzeugen, dass dann im geschützten Bereich liegt und in dem man sich ggf. als Berechtigter auch noch Sichtvermerke machen kann. Das ist viel praktischer, als "lose" Mails.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
könnte man ja auch ein eigenes Logfile dafür erzeugen
Hmm das wurde mich jetzt mal interesieren wie man das selber machen kann. Kannst du mir da mal was zeigen oder wie muss ich mir das vorstellen ?
Gruß Claudia
Hello Claudia,
könnte man ja auch ein eigenes Logfile dafür erzeugen
Hmm das wurde mich jetzt mal interesieren wie man das selber machen kann. Kannst du mir da mal was zeigen oder wie muss ich mir das vorstellen ?
auf http://selfhtml.bitworks.de findest Du ein Beispiel für "Zählen und Speichern in Flatfiles".
Wenn Du das aufrufst, siehst Du darin einen Button zum Download des Quelltextes.
Und gezählt wird der Abruf auch.
Es ist also eigentlich alles enthalten, was Du füe einen kontrollierten Downloadbereich benötigst, mit Ausnahme der Benutzerauthentifikation. Die musst Du noch selber erfinden.
Wie man Dateien organisieren kann, um sie dann später schnell auswerten zu können, geht noch aus diversen anderen Beispielen hervor. Die Beispiele sind alle nicht "fertig", aber i.d.R. recht ausführlich im Script kommentiert. Außerdem solltest Du zu allen Beispielen hier im Forumsarchiv die dazugehörigen Diskussionen finden können.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
für so etwas wertet man idR. die logfiles des servers aus - warum willst du das umständlich per mail machen?
Die Log-Files sind zu umfangreich und die kann ich auch nicht ständig (minutenaktuell) auswerten. Brauche aber ne verläßliche Rückmeldung, wann ein Nutzer sich welches für ihn bereitgestellte Dokument aufgerufen hat. Da dürfte für mich eMail am praktischsten sein, zumal ich die dann über Filterregeln im Mailprogramm direkt zuordnen kann.
dann darfst du nicht mehr direkt auf die dateien verlinken, sondern musst ein download-script in PHP dazwischenschalten - und dieses kann ja dann auch mit mail() die mail an dich verschicken.
Wie gesagt, habe leider bisher mit PHP überhaupt keine Erfahrung, das Script scheint mir aber für meinen Zweck auch zu kompliziert. Geht ja nicht drum, irgendwelche Dateinamen zu verstecken o.ä. Mir würde (auf PHP übersetzt) sowas reichen wie onClick(mail;oeffne_Link)
gruß
Harald
Hallo Harald
Wie gesagt, habe leider bisher mit PHP überhaupt keine Erfahrung, das Script scheint mir aber für meinen Zweck auch zu kompliziert. Geht ja nicht drum, irgendwelche Dateinamen zu verstecken o.ä. Mir würde (auf PHP übersetzt) sowas reichen wie onClick(mail;oeffne_Link)
typischer Denkfehler: php läuft auf dem Server und schickt eine fertige html Seite an den Client. Da kann nachher nichts mehr mit onClick nachgeholt werden.
Du musst mindestens eine neue php-Seite aufrufen mit diesem Link, welche das Mail sendet und sich dann gleich auf die Datei weiterleitet. (z.B. redirect oder siehe den Link von wahsaga)
Gruss
Louis
typischer Denkfehler: php läuft auf dem Server und schickt eine fertige html Seite an den Client. Da kann nachher nichts mehr mit onClick nachgeholt werden.
Das ist mir schon klar, daß mit dem onClick war ja nur zur Veranschaulichung gedacht, wie es im Prinzip funktionieren soll -> also Click auf Link, auf dem Server wird das PHP-Script für Mailversand ausgeführt, Linkdokument wird in neuem Fenster geöffnet/downgeloaded - und die Ursprungsseite bleibt unverändert (deswegen ja auch der wohl etwas mißverständliche Hinweis eben von mir "auf PHP übersetzt")
Sowas müßte doch machbar sein, oder? Wer hat nen Tip, wie bzw. wo ich hierzu was nachlesen kann? Mit dem Link eben komme ich nicht weiter, siehe vorhergehendes Posting.
Du musst mindestens eine neue php-Seite aufrufen mit diesem Link, welche das Mail sendet und sich dann gleich auf die Datei weiterleitet. (z.B. redirect oder siehe den Link von wahsaga)
PHP-Seite mit Weiterleitung wäre eine Möglichkeit, würde jedoch voraussetzen, daß ich dann für jede Datei eine eigene PHP-Seite anlege, was die Pflege etwas umständlich macht. Außerdem würde sich dann ja auch ein neues Fenster bei Dateiformaten öffnen, die nicht angezeigt, sondern zum Download angeboten würden, oder?
BTW: Kann ich nicht über Javascript eine PHP-Seite in einem - sagen wir mal versteckten iframe - aufrufen? Damit könnte ich dann doch in der Tat (kommt mir da nur gerade so als Idee) onClick bei normalem HREF beibehalten. Wäre natürlich eine relativ elegante Lösung, im Head der HTML-Datei das Javascript, welches bei onclick aufgerufen wird, zunächst im iframe die PHP-Seite aufruft (die dann den Mailversand ausführt) und anschließend den eigentlichen Link ausführt. Müßte dann nur wissen, wie ich aus nen Javascript heraus PHP aufrufe und vor allem dann da die Variablen übergebe.
Gruß
Harald
hi,
Sowas müßte doch machbar sein, oder? Wer hat nen Tip, wie bzw. wo ich hierzu was nachlesen kann? Mit dem Link eben komme ich nicht weiter, siehe vorhergehendes Posting.
Louis vorschlag dazu reicht doch eigentlich schon vollkommen aus,
Du musst mindestens eine neue php-Seite aufrufen mit diesem Link, welche das Mail sendet und sich dann gleich auf die Datei weiterleitet. (z.B. redirect
PHP-Seite mit Weiterleitung wäre eine Möglichkeit, würde jedoch voraussetzen, daß ich dann für jede Datei eine eigene PHP-Seite anlege, was die Pflege etwas umständlich macht.
nein, natürlich nicht.
übergebe dem script einen parameter, auf _welche_ datei es nach dem versenden der mail weiterleiten soll.
Außerdem würde sich dann ja auch ein neues Fenster bei Dateiformaten öffnen, die nicht angezeigt, sondern zum Download angeboten würden, oder?
nein, nur wenn _du_ (oder der nutzer) ein neues fenster aufmachst.
gruß,
wahsaga
übergebe dem script einen parameter, auf _welche_ datei es nach dem versenden der mail weiterleiten soll.
Also nochmal für mich zum Mitschreiben ;-)
In der HTML-Datei müßte es dann etwa so aussehen:
----HTML---- index.html
<script type="text/javascript">
function phpaufruf(datei)
{
var wide = screen.width;
var high = screen.height;
var col = screen.colorDepth;
var os = navigator.platform;
var brs = navigator.appName;
var userdaten = "Auflösung: " + wide + " x " + high + "px; Farbe: " + col + "bit; Betriebssystem: " + os + "; Browser: " + brs;
var url_phpaufruf = "download.php?id="+datei+"&resolution="+userdaten;
window.open(url_phpaufruf,"Downloadfenster");
}
</script>
<a href="javascript:phpaufruf('Datei1.pdf')">Datei 1</a>
----PHP---- download.php
echo$_GET['id'];
echo$_GET['resolution'];
$abgesendet=date("j.n.y - H:i");
$abgesendet .= " Uhr";
$m_header="From:webmaster@$SERVER_NAME\n";
$m_header .= "Reply-To: webmaster@$SERVER_NAME\n";
$m_header .= "X-Mailer: PHP/" . phpversion(). "\n";
$m_header .= "X-Sender-IP: $REMOTE_ADDR\n";
$m_header .= "Content-Type: text/html";
$empfaenger="mail@meine-domain.de";
$quelle="Nachricht vom Download-Script";
$textbody='Hier bastel ich mir noch was schönes rein zwichen <html>...</html>';
mail($empfaenger,$quelle,$textbody,$m_header);
//VARIANTE 1
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename="$id"");
readfile($filename);
//VARIANTE 2
header("Location: http://www.meine-domain.de/verzeichnis/"$id"");
hi,
Also nochmal für mich zum Mitschreiben ;-)
In der HTML-Datei müßte es dann etwa so aussehen:
function phpaufruf(datei)
{ ...
var url_phpaufruf = "download.php?id="+datei+"&resolution="+userdaten;
window.open(url_phpaufruf,"Downloadfenster");<a href="javascript:phpaufruf('Datei1.pdf')">Datei 1</a>
kommt er schon wieder mit javascript ...? was hat er denn nur immer damit ...?
was spricht denn dagegen,
<a href="download.php?file=anna_kournikova.naked.jpeg.pif">
direkt als HTML-link zu notieren?
gruß,
wahsaga
kommt er schon wieder mit javascript ...? was hat er denn nur immer damit ...?
Dagegen spricht vom Prinzip her nichts, außer daß ich mich mit PHP noch nicht so auskenne und neben dem reinen Link das aufgerufene Javascript noch ein paar Variablen zusammenbastelt, die dann an die PHP-Seite übergeben werden müssen.
Wie anders soll ich das hinbekommen? Die Daten kann ich nur clientseitig ermitteln.
<script type="text/javascript">
function phpaufruf(datei)
{
var wide = screen.width;
var high = screen.height;
var col = screen.colorDepth;
var os = navigator.platform;
var brs = navigator.appName;
var userdaten = "Auflösung: " + wide + " x " + high + "px; Farbe: " + col + "bit; Betriebssystem: " + os + "; Browser: " + brs;
var url_phpaufruf = "download.php?id="+datei+"&resolution="+userdaten;
window.open(url_phpaufruf,"Downloadfenster");
}
</script>
Gruß
Harald
Hallo Harald
kommt er schon wieder mit javascript ...? was hat er denn nur immer damit ...?
Dagegen spricht vom Prinzip her nichts, außer daß ich mich mit PHP noch nicht so auskenne und neben dem reinen Link das aufgerufene Javascript noch ein paar Variablen zusammenbastelt, die dann an die PHP-Seite übergeben werden müssen.
Wir wissen halt nicht, was Du moechtest. Ich denke aber, Du hast jetzt genuegend Wissen beisammen, um das zu basteln, was Du willst...
Ich ging halt davon aus, dass Du bei jedem, der diesen Link betaetigt, eine Mail moechtest.
Deine Loesung laeuft aber darauf hinaus, dass nur bei denen, die Javascript aktiviert haben, eine Mail gesendet wird, dafuer mit Informationen ueber die Fenstergroesse (fuer was auch immer das gut sein soll - ausserdem gibt es vielleicht ja eine Korrelation zwischen deaktiviertem Javascript und Bildschirmgroesse).
Aber nochmals: wir wissen nicht, was Du mit diesem leidigen Javascript anstellen willst. (Normalerweise verwendet man Javascript als optionale Moeglichkeit, um fuer gewisse User gewisse Sachen zu vereinfachen (z.B. weniger Ladezeiten durch JS-Interaktion etc.; und nicht fuer Effekte, welche man bei jedem User haben moechte.)
Gruss
Louis
P.S.: Nur als Tipp: evtl. moechtest Du es doppelt: <a onClick:phpaufruf() href="download.php?file=soundso">?
P.S.: Nur als Tipp: evtl. moechtest Du es doppelt: <a onClick:phpaufruf() href="download.php?file=soundso">?
Das ist jetzt natuerlich falsch geschrieben bei onClick. Das kommt davon, wenn man waehrend dem Schreiben ueberlegt, was man eigentlich schreiben moechte...
Gruss
Louis
Hallo Harald
Das ist mir schon klar, daß mit dem onClick war ja nur zur Veranschaulichung gedacht, wie es im Prinzip funktionieren soll -> also Click auf Link, auf dem Server wird das PHP-Script für Mailversand ausgeführt, Linkdokument wird in neuem Fenster geöffnet/downgeloaded - und die Ursprungsseite bleibt unverändert (deswegen ja auch der wohl etwas mißverständliche Hinweis eben von mir "auf PHP übersetzt")
php braucht eine neue Seite, um ausgeführt zu werden. Wenn Du aber wahsagas Links verwendest, wird diese Seite jedoch quasi 'umgewandelt' in die zu downloadende Datei. Versuchs doch mal.
Sowas müßte doch machbar sein, oder? Wer hat nen Tip, wie bzw. wo ich hierzu was nachlesen kann? Mit dem Link eben komme ich nicht weiter, siehe vorhergehendes Posting.
Beklag dich nicht, dass die Braut zu schön ist. Versuchs doch mal. Entweder abschreiben oder leicht vereinfachen. Du brauchst nur noch zu wissen, wie man Variablen dem Skript übergibt (get).
PHP-Seite mit Weiterleitung wäre eine Möglichkeit, würde jedoch voraussetzen, daß ich dann für jede Datei eine eigene PHP-Seite anlege, was die Pflege etwas umständlich macht.
Aber bestimmt nicht, Du rufst immer dasselbe Skript auf und übergibst den Dateinamen im Querystring (get), wie im Link beschrieben. Wenn das Skript download.php heisst, so musst Du nur "download.php?download=soundso" verlinken.
Außerdem würde sich dann ja auch ein neues Fenster bei Dateiformaten öffnen, die nicht angezeigt, sondern zum Download angeboten würden, oder?
Da wär ich mir nicht so sicher. Versuchs doch mal.
BTW: Kann ich nicht über Javascript eine PHP-Seite in einem - sagen wir mal versteckten iframe - aufrufen?
Halt! Stopp! Javascript lassen wir mal weg, oder? Wenn wir uns schon die Mühe geben, dass mit php lösen zu wollen, verwenden wir doch nicht noch Javascript. Dann kriegst Du keine Mail von allen, welche Javascript nicht aktiviert haben, und das sind mehr als du denkst.
Gruss
Louis