Comment partager des sessions entre PHP et l'application ASP.net?
Mon entreprise a pris quelques vieux d'une application php. En raison de notre préférence pour ASP.net et à l'absence de toute documentation du développeur précédent, nous ne voulons pas passer trop de ressources sur le développement en PHP.
Pour la mise en œuvre de nouvelles fonctionnalités, nous allons créer un Asp.net l'application qui a le même regard de l'utilisateur. Nous voulons développer une sorte de "coexistence" de l'application web. Par conséquent, nous devons partager les sessions entre PHP et un Asp.net webapplication projet, car il y a un usermanagement impliqués avec une base de données MySQL.
(par ex. un lien 'A' dirige vers le site de PHP, et le lien " B " ordonne à l'asp.net d'application)
Comment pouvons-nous partager la session entre et PHP, et un asp.net application?
Et quelqu'un aurait-il une astuce pour cette "coexistence" chose, qui pourrait être utile dans le développement?
Modifier: IIS 6 serait notre serveur cible, bien qu'IIS 7.5 serait également une option
source d'informationauteur citronas
Vous devez vous connecter pour publier un commentaire.
Je veux vous dire, comment j'ai fini par le faire.
À la fois aux applications d'accéder à une base de données MySQL et d'accéder à une "session" de table, qui se compose d'un Guid, l'ID de l'utilisateur, et un confirmationString (je suppose que j'ai codé la IDUser, en quelque sorte) et une date.
Sessions ne sont démarrés par l'application PHP (en raison du fait, que l'application PHP est encore la principale de l'application). Une nouvelle session aura pour résultat une nouvelle entrée dans la table du journal. Chaque lien dans l'application PHP, que les liens vers les ASP.Net l'application contient GET-Paramètres, contenant le Guid etc.
L'ASP.net l'application vérifie vos Paramètres et définit la IDUser dans le ASP.Net Session, si le Paramètres de point à une session existante.
Les liens pointant vers l'application PHP utilise la même technique.
(Il y a aussi d'autres choses à considérer, comme les délais d'attente ou les déconnexions, mais qui peuvent être traitées en tant que bien)
Dans l'ensemble, je dirais que mon approche est utile et aucun des clients se sont plaints depuis le déploiement (sur 1 an)
Je ne pense pas que c'est nativement possible de partager des sessions entre PHP et ASP.NET.
Cependant, il pourrait être possible en utilisant une page PHP qui lit le contenu de la session, les stocke dans des champs cachés et puis appeler un ASP.NET la page qui liraient ces domaines et de les charger dans ASP.NET session.
Théoriquement c'est possible.
C'est une vieille question, mais je ne pense pas que tout les réponses étaient complètes.
Tout d'abord, je pense que c'est une mauvaise idée de stocker les données de session dans un serveur de base de données comme mysql ou SQL Server. Le DB est une ressource précieuse, et il n'y a vraiment aucune raison de thrash juste pour les données de session.
Si vous allez stocker session dans une base de données comme ça, il y a de "mieux" façons de le faire, comme vous assurer que les données de session est sur son propre disque, etc... mais honnêtement, j'ai toujours l'impression que c'est une erreur et à la limite vos évolutivité.
Pour le stockage de session, vous voulez aller avec une simple clé/valeur en magasin, et à mon avis, vous ne pouvez pas battre memcached (même si j'ai aussi eu de la chance avec le redis + nodejs).
memcached a des clients disponibles pour à peu près toutes les langues sur la terre: http://code.google.com/p/memcached/wiki/Clients
Donc, en gros, tout ce que vous devez faire lors de l'utilisation de memcached est de générer un pseudo-aléatoire jeton pour la clé, et faire un memcached.ensemble. Ensuite conserver cette clé dans un cookie appelé session-id ou quelque chose.
La session-id de cookie peut être lu à partir de n'importe quel serveur de la langue, de .net, php, python, quel que soit - et la valeur de session (extrait d'un simple memcached.obtenez de l'.
Découvrez la memcached docs: http://code.google.com/p/memcached/wiki/NewStart
C'est très simple et modulable pour faire des sessions, et fonctionne avec presque n'importe quelle langue/serveur.
http://cz.php.net/manual/en/function.session-set-save-handler.php
http://support.microsoft.com/kb/317604
Vous pouvez écrire du PHP sessions en MsSQL, et à configurer .NET pour utiliser MsSQL comme backend pour des séances de.
Pas une grosse affaire.
Votre asp application doit faire trois choses simples:
sess_<id>
de fichiers dans une session PHP enregistrer le chemin d'accèsPlus agréable que de simplement le piratage de session mécanismes de stockage sur les deux côtés serait la configuration de fournisseur OpenId et de le brancher OpenId les consommateurs à la fois asp.net et les applications php.
Il y a beaucoup de code existant pour le faire. Il serait à la fois plus élégant et plus enclins à faire des erreurs que le faible niveau des solutions. Comme un bonus, vous pouvez utiliser intégrée OpenId login dans le reste de vos applications d'entreprise et de devenir une société héros.
Voir: Utilisant OpenID pour les deux .NET/Windows et PHP/Linux/Apache sites web
Oh, peut-être un jour, vous verrez l'erreur de vos façons de faire, en attendant.....
Par défaut, PHP écrit ses données de session comme un tableau sérialisé dans un fichier nommé d'après la session. La session est généralement identifié par un cookie avec le nom PHPSESSID.
Donc en PHP manuellement la session:
Le format du fichier est très simple et facile à analyser.
Cependant, il est assez facile à mettre en œuvre votre propre PHP gestionnaire de session pour écrire les fichiers de n'importe quel format/pour tout stockage que vous aimez (avoir un coup d'oeil à l'auto-prepend pour comment associer la revosed code à chaque page sans avoir à réécrire chacun). Ou changer le nom du cookie utilisé pour stocker la session.
C.