Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czy można odczytać zmienną sesyjną utworzoną w skrypcie ASP ... w skrypcie PHP ?
Forum PHP.pl > Forum > PHP
damianooo
Witam,

mam skrypt zrobiony w ASP i tam chciałem do zmiennej sesyjnej przypisać pewną wartość np. tak:

  1. <%
  2. Session("Wiek") = 28
  3. %>


następnie po kliknięciu w link (na tej stronie zrobionej w ASP) , otwiera mi się strona ... Uwaga! ... zrobiona tym razem w PHP.

i teraz tak ... chciałbym tą zmienną sesyjną ze skryptu ASP odebrać na tej stronie ze skryptem PHP np. tak:


  1. <?php
  2. echo $_SESSION['Wiek'];
  3. ?>


czy jest to w ogóle możliwe do zrobienia ? ... czy dobrze to robię ? ... bo niestety na stronie PHP nie udaje mi się odebrać tej zmiennej. A może robi się to w inny sposób ? ... czy lepiej to zrobić w Cookies .. ale tu ze względów bezpieczeństwa nie chciałbym przekazywać pewnych ważnych danych.

dzięki ,pozdrawiam
Sephirus
Wydaje mi się że jak najbardziej smile.gif Ale nie aż tak łatwo ;P

PHP na pewno trzyma sesje jako pliki - wystarczy je otworzyć i unserializować - mamy zmienne sesji.

Sądzę że ASP ma podobnie - jeśli tak jest - nic nie stoi na przeszkodzie aby z PHP odczytać pliki sesji ASP i z ASP pliki sesji PHP - kwestia tylko wykrycia identyfikatora sesji jednego języka w drugim smile.gif

damianooo
no to się wpakowałem ... jeśli tak jest jak mówisz to chyba będzie problem ... gdzie tych informacji mam w takim razie poszukiwać ? ...

a co masz na myśli mówiąc: "Wystarczy je otworzyć i unserializować" ?
Sephirus
Serializacja to proces, który najprościej mówiąc zamieni każdy byt programowania w ciąg znaków. Czyli jesli w sesji mamy na przykład liczbę, czy ciąg znaków, czy nawet tablicę lub obiekt - zostaje on zamieniony na ciąg znaków - można go zapisać do pliku na przykład. deserializacja to proces odwrotny. zobacz funkcję serialize() i unserialize() w PHP wink.gif

Gdzie zacząć szukać... hmmm... proponuje jednak w google poszukać gdzie znaleźć pliki z sesją w PHP i ASP (najpierw jednym potem drugim). jak będziesz wiedział gdzie są pliki to już 1:0 dla Ciebie. Teraz kwestia skąd PHP ma wiedzieć jaki identyfikator sesji ma user pod ASP - sam nie wiem jak się do tego dobrać bo nie miałem styczności z ASP :/ może na jakimś ich forum popytaj.

trzecia rzecz to normalny odczyt pliku z sesją i wczytaniu zmiennych sesyjnych z tego pliku - czyli deserializacja.
solr
Damianooo, twój sposób jest mocno dziwny. Tego się tak nie robi. Po pierwsze, to upewnijmy się, czy skrypt ASP i PHP są na jednym serwerze? Jeśli nie to praktycznie nie ma szans, żeby rozwiązanie Sephirus działało. Napisz, co chcesz zrobić (ogólnie). Jest kilka sposobów, żeby rozwiązać twój problem i wybranie odpowiedniego zależy od szczegółów i wymagań, możesz np. 1) prześlij dane bezpośrednio POST przy kliknięciu; 2) zapisz dane do bazy i przekaż tylko id, a w skrypcie php połącz się z tą bazą i odtwórz sesję; 3) napisz jakiś banalny web-service do synchronizacji danych sesyjnych itd.
batman
Dawno już nie pisałem w ASP (dobrze widzę, że to nie jest .NET?), więc nie jestem pewien, czy mój sposób się sprawdzi.
Jeśli chcesz dzielić sesję między PHP i ASP musisz napisać w obu językach własny handler sesji, który będzie korzystał z tego samego mechanizmu przechowywania danych, np bazy.

Inny sposób jaki przyszedł mi do głowy, to stworzenie w ASP skryptu udostępniającego zmienne sesyjne. PHP będzie odwoływał się go tego skryptu (np. curl) i pobierał dane.
damianooo
Solr ... jeśli chodzi o to czy oba skrypty to ten sam serwer to jednak nie, więc tamten sposób odpada faktycznie ale co ważne są to serwery tej samej firmy dla której piszę oprogramowanie webowe ... polega to na tym że jedna aplikacja webowa jest napisana w ASP i w niej znajduje sie w menu link (przynajmniej na razie tak jest) do aplikacji webowej mojej który jest na drugim serwerze ... i tutaj mam właśnie problem z przeniesieniem danej a konkretnie loginu do mojej aplikacji aby wiedzieć jaki user jest zalogowany ... skomplikowane ... wiem że źle się do tego zabrałem ale to nie był mój pomysł smile.gif ...

ale mam pytanie w takim razie do Twojego pierwszego pomysłu z przesłaniem danych za pomocą POSTa ... ( rozumiem też że tutaj również musi być ten sam serwer prawda ? )

a więc miałoby to wyglądać tak ( oczywiście nadal są to skrypty na dwóch różnych serwerach, ale w tej samej firmie ):

skrypt w ASP test.jsp

  1. <FORM ACTION="wynik.php" METHOD="POST">
  2. <input type='hidden' name='login' value='alex23'>
  3. Zamówienie
  4. <INPUT TYPE="Submit" NAME="submit" VALUE="Wyslij">
  5. </FORM>


natomiast w PHP wynik.php
  1. <?php
  2.  
  3. $login= $_POST['login'];
  4.  
  5. ?>



chciałbym aby to było takie proste ... ale może można mój problem rozwiązać w inny sposób ?
solr
Nie, wysyłanie POSTem nie musi być do tego samego serwera. Np (wysyła do onetu):

  1. <FORM ACTION="http://www.onet.pl/wynik.php" METHOD="POST">
  2. <input type='hidden' name='login' value='alex23'>
  3. Zamówienie
  4. <INPUT TYPE="Submit" NAME="submit" VALUE="Wyslij">
  5. </FORM>


Przesłanie postem jest dobre jednorazowo, tak jak pytałeś, do "odczytania zmiennej sesyjnej utworzonej w ASP za pomocą PHP". Pamiętaj o bezpieczeństwie. To, że dostaniesz login "alex23" to nie znaczy, że gość jest zalogowany. Wysyłaj też hasło i sprawdź, czy pasują. Nie będziesz miał dostępu do niczego, za wyjątkiem danych które przesłałeś POSTem. No i wysyłaj to przez https :-) Ta metoda to dwie oddzielne sesje. Być może potrzebne Ci współdzielenie jednej sesji, wtedy tak jak napisał batman, czy ja częściowo, będziesz musiał utworzyć własne handlery sesji i (najłatwiej) zapisywać je we wspólnej bazie danych.

by_ikar
Wydaje mi się że najlepsze propozycje dał ci @batman. Stworzenie takiej wspólnej bazy ludzi online dla obu stron to nie jest wielki problem. A drugi sposób czyli udostępnianie danych sesyjnych przez jeden skrypt drugiemu również nie jest niczym trudnym do wykonania.

Podczas logowania na jedną ze stron, skrypt sprawdza czy na drugiej stronie konkretny użytkownik który się próbuje zalogować (ofc z powodzeniem wink.gif) czy jest już zalogowany na drugiej stronie, jeżeli tak to pobiera dane sesyjne, tworzy na tej konkretnej stronie nową sesje i wypełnia ją danymi pobranymi z drugiej strony.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.