2009-02-25 16 views
3

Préambule: Mon application est compatible avec mod_rewrite et j'ai une page index.php qui télécharge des pages variées basées sur Request_URI et les imprime sous forme de contenu de page.Prise en charge de la session file_get_contents() en PHP

Problème: La fonction File() ou File_get_contents() est excellente pour télécharger mes autres pages d'applications. Mais dès que j'essaie de l'utiliser pour télécharger une page qui est activé, je commence à avoir des problèmes.

Le problème principal est que lorsque j'essaie de transmettre l'identifiant de session existant à l'URL à partir de la page que je télécharge, par ex.

$url = "http://localhost/EmplDir/AdminMenu.php"; 
    return implode('',file($url. "&" . session_name() . "=". session_id())); 

Ma page ne se charge jamais (ou file() ne charge jamais le contenu). Je suppose que je devrais utiliser des fonctions de curl ici, mais il a trop d'options. Mon être un conseil qui boucles options à utiliser pour rendre les pages téléchargeables connaître la session PHP en cours serait utile.

P.S. Ce qui précède semble être vrai à la fois pour Windows et Linux.

Répondre

3

Vous n'avez pas séparé la chaîne de requête du reste de l'URL avec un?

Essayez

return file_get_contents($url. "?" . session_name() . "=". session_id()); 

Vous aurez aussi besoin d'être sûr que le serveur n'utilise pas le paramètre de configuration session.use-only-cookies.

Il n'y a aucune raison pour que le script ne voit pas la chaîne de requête et agisse dessus, vous pouvez vous persuader en écrivant un script qui ne fait que var_dump ($ _ GET) et demander comme ci-dessus. Si vous voyez les arguments de la requête dans la sortie, vous devez simplement déboguer votre script pour voir pourquoi il ne se comporte pas comme prévu vu l'identifiant de la session.

REMARQUE: je suppose que vous souhaitez demander un fichier du même domaine que votre application, sinon l'utilisation de votre ID de session pour un site distant ne génère pas beaucoup de ense.

+0

Il ferait un URI valide. Le '&' est autorisé dans le chemin de l'URI. – Gumbo

+0

J'ai mis session.use-only-cookies = 0, rechargé Apache. même problème. file() ne contient pas de pages avec session_id dans l'URL. – AlexA

+0

OK, c'est valide mais pas ce qui était prévu! –

0

session_name et session_id vous donne la session de scripts en cours; Pas le serveur de suppression. Vous devez utiliser quelque chose qui comprend http. Curl ferait, ou vous pouvez utiliser quelque chose comme SimpleBrowser, qui émule complètement un navigateur.

2

Si votre script ne modifie aucune superglobal variables, vous pouvez simplement inclure pas:

ob_start(); 
include $_SERVER['DOCUMENT_ROOT'].'/EmplDir/AdminMenu.php'; 
return ob_get_clean(); 
+0

Cela ne fonctionnera pas si vous avez besoin de paramètres supplémentaires dans l'url :( – OZZIE

+0

@OZZIE Utilisez '$ _GET' pour cela . – Gumbo