Zugriff auf $_SESSION wenn mit file_get_contents in der PHP
Habe ich eine Seite namens send.email.php schickt eine E-Mail - ziemlich einfache Sachen - ich gebe eine order id, die es schafft, job-Anforderung, und sendet Sie aus. Dies funktioniert gut, wenn es in den Kontext, ich habe es entwickelt (mit javascript eine AJAX Aufruf der URL und übergeben Sie die order_id als query-parameter)
Ich versuche nun die Wiederverwendung der exakt gleichen Seite in einem anderen Programm, aber ich rufe es mit php file_get_contents($base_url.'admin/senden.E-Mail.php?order_id='.$order_id). Wenn ich die Seite aufrufen diese Weise werden die $_SESSION-array leer ist isempty() = 1.
Ist das, weil ich bin der Initiierung einer neuen Sitzung mit file_get_contents und die Werte, die ich abgelegt in der $_SESSION auf der login nicht zur Verfügung, um mich in?
--> vielen Dank für das feedback. Macht es Sinn, dass der neue Anruf keinen Zugriff auf die bestehende session...
Neue problem aber:
Bekomme ich jetzt: failed to open stream: HTTP request failed! Beim ausführen:
$opts = array('http' => array('header'=> 'Cookie: ' . $_SERVER['HTTP_COOKIE']."\r\n"));
$context = stream_context_create($opts);
$contents = file_get_contents($base_url.'admin/send.sms.php?order_id='.order_id, false, $context);
DOCH, die URL funktioniert, wenn ich nenne es so: (Es funktioniert einfach nicht lassen Sie mich access-Sitzung)
$result file_get_contents($base_url.'admin/send.sms.php?order_id='.$order_id);
$base_url.'admin/send.sms.php
auf dem gleichen server wie das script Sie gerade arbeiten?InformationsquelleAutor sjw | 2010-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
file_get_contents()
sollte nicht überall eingesetzt werden, müssen Sie die Authentifizierung/session-Informationen übertragen. Es wird nicht senden Sie keine cookies, so dass für die Authentifizierung des Benutzer-Informationen werden nicht standardmäßig enthalten.Können Sie Art von hack um ihn herum, indem Sie die session-id (z.B. 'PHPSESSID' standardmäßig) als query-parameter in der URL, und das andere Skript überprüfen. Aber die übertragung session-IDS in der URL ist schrecklich schlechte Praxis ist, auch wenn es nur auf dem gleichen server.
Um diese richtig zu machen, verwenden Sie CURL und bauen eine komplette HTTP-Anfrage, einschließlich der cookie-Informationen von der übergeordneten Seite.
InformationsquelleAutor Marc B
müsstest du die Datei, oder rufen Sie die jeweiligen Funktionen aus Ihrem
send.sms.php
Skript. stattdessen nennen Sie ihn wie ein webservice (was es nicht ist)Alles ist möglich. Aber es muss auch sinnvoll. Warum nicht einfach eine Funktion, und fügen Sie Sie dann in den beiden Scripte? Include über HTTP ist immer Zeichen von schlechtem design.
ist es irgendwie möglich ist, aber es ist wirklich eine schlechte Gewohnheit, es zu tun auf diese Weise
Vielen Dank für das feedback> ich werde schauen, um den code umschreiben, um die Bedürfnisse sowohl Anrufe... ich habe eine neue Frage, zur Orientierung, um die Struktur der Datei und umfassen: stackoverflow.com/questions/2635332/...
InformationsquelleAutor knittl
Es ist, weil der server verwendet cookies, um Kunden. Beim Aufruf der Seite aus dem browser den session-cookie ist an der Anfrage. Wenn Sie
file_get_contents
- Funktion, kein cookie übergeben wird und der server kann nicht identifizieren, die dem client. Hier ein Beitrag , die Ihnen helfen könnten.