file_get_contents -> Id übergeben

mgraf

Erfahrenes Mitglied
Hallo,
wie kann ich file_get_contents eine ID übergeben, die er einbauen soll?
PHP:
$mail->Body = file_get_contents('txt.php?id='.$row['id']);
in der txt.php hab ich dann die $_GET die diese auslesen soll..

Worum es geht, es soll ein Teilnahme Email versendet werden, in dieser brauchen die Benutzer nur auf "Ja, ich nehme teil" oder "Nein, ich nehme nicht teil" klicken, dann öffnet sich ein Link und wird in der DB gespeichert...
Ich würde gerne das Skript zum versenden der Email, von der eigenen Email trennen, daher das file_get_contents...

lg
michi
 
[phpf]file_get_contents[/phpf] ist ein Zugriff über das Dateisystem, sprich du kannst keine $_GET Variablen verwenden, da diese nur bei einem HTTP Request übergeben werden.

Alternative wäre z. B. ein Request über cURL.

PHP:
function curl_get_file_contents($URL)
    {
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $URL);
        $contents = curl_exec($c);
        curl_close($c);

        if ($contents) return $contents;
            else return FALSE;
    }

$string = curl_get_file_contents('http://localhost/test2.php?id=2');

echo $string;

Die Funktion ist aus den Kommentaren der obigen genannten Funktion entnommen.

Achtung: Dadurch entsteht ein HTTP Request der unter Umständen länger dauert.
Du hast nicht mehr die Geschwindigkeit des Direktzugriffs auf das Dateisystem.
 
Hi,

eine andere Möglichkeit wäre, das Script zu inkludieren, dann steht die Variable direkt zur Verfügung. Über das Output Buffering kannst Du die Ausgabe des Scriptes in Deinen Mailbody bekommen:

PHP:
ob_start();
include('txt.php');
$mail->Body = ob_get_clean();

LG
 
Dann würde ich in der zu inkludierenden Datei lieber mit [phpf]return[/phpf] arbeiten als mit dem Ausgabepuffer.
 
Danke für eure Hilfe.
Ich habs jetzt mit curl() gelöst, da es vorläufig nur für einen internen Newsletter geht, reicht die Geschwindigkeit vollkommen aus.

Wenn mehr Empfänger rausgehen müssen, hab ich mir eine Lösung mit einer DB im Hintergrund überlegt... aber mal schauen

Danke & lg
michi
 
Zurück