3 Stimmen

Notwendigkeit, die Browser-"Sitzung" fortzusetzen, wenn ein anderes PHP-Skript über CURL aufgerufen wird

Ich habe ein "primäres" PHP-Skript (eigentlich eine Reihe von Skripten), mit denen der Benutzer über den Browser interagiert. Ich hatte keine Probleme bei der Nutzung der Website, da die Sitzungsinformationen von Seite zu Seite funktionieren.

Eines der Skripte muss jedoch direkt ein anderes "sekundäres" PHP-Skript auf meiner Website über CURL aufrufen, und dieses "sekundäre" Skript muss Informationen über die PHP-Sitzung (die den aktuell angemeldeten Benutzer usw. enthält) vom "primären" Skript erhalten. Ich muss die Sitzungsinformationen vom "primären" PHP-Skript an das "sekundäre" Skript in CURL weitergeben. Haben Sie einen Vorschlag, wie ich das machen kann?

Nein, ich möchte hier keine Cookies verwenden (zu unsicher).

1 Stimmen

Warum ist cURL erforderlich? Was ist mit virtual() (vorausgesetzt, Sie arbeiten mit Apache), include() o require() ?

0 Stimmen

Ja, wenn Sie sich auf demselben Server befinden, warum nicht einfach den normalen Einbindungsmechanismus verwenden.

0 Stimmen

Ich verwende CURL, weil das sekundäre PHP-Skript GET-Variablen entgegennimmt und einige Werte zurückgibt, die das primäre PHP-Skript benötigt.

0voto

Brian McKenna Punkte 43653

Ich weiß, Sie sagten, Sie wollen keine Cookies verwenden, weil sie unsicher sind. Bei der folgenden Lösung wird das clientseitige Sitzungscookie an eine zweite Anfrage "weitergeleitet". Die Weiterleitung eines Cookies an den lokalen Rechner sollte keine Sicherheitsnachteile mit sich bringen.

Sie können das Sitzungs-Cookie vom Client-Browser an die neue, serverseitige Anfrage übergeben (Dank an Ben für den Hinweis auf session_name ).

$curl_cookies = session_name() . '=' . session_id() . '; path=/';
curl_setopt($ch, CURLOPT_COOKIE, $curl_cookies);

Der Einfachheit halber übergebe ich nur das PHPSESSID-Cookie (ich gehe auch davon aus, dass es der Cookie-Schlüssel Ihrer Sitzung ist).

0 Stimmen

Hallo Brian, Ben - ich arbeite an Ihren Vorschlägen, aber ich sende die session_id() als GET-Parameter an mein "zweites" Skript. Wenn ich jedoch im zweiten Skript Folgendes tue und versuche, das erste Skript zu laden, bleibt der Browser einfach hängen und lädt die Seite nicht. $sessionid = urldecode($_GET['sessionid']); session_id($sessionid); session_start(); Was muss ich tun, um dem zweiten Skript mitzuteilen, dass es die Sitzung des ersten verwenden soll?

0voto

Ben Regenspan Punkte 9348

PHP-Sitzungen sind an Cookies gebunden (obwohl kann auch als Anfrageparameter übergeben werden ). Für die Weiterleitung der Sitzungs-ID könnte ein Cookie also die beste Lösung sein, vorausgesetzt, beide Skripte befinden sich in derselben PHP-Installation.

Sie können verwenden session_name() um den Sitzungsnamen/Cookie-Namen zu erhalten, der standardmäßig PHPSESSID ist, wie Brian schon sagte.

0voto

David Punkte 11

Warum nicht einfach einen http-Query-String-Parameter mit der Sitzungskennung senden?

zum Beispiel (in Pseudocode):

curl.send(' http://myserver.com/myapplication.php?session_id= ' . getSessionId());

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X