2012-02-08 6 views
1

성공적으로 로그인하면 세션을 생성하는 ASP.NET 로그인 폼이 있습니다. POST를 사용합니다.ASP.NET에서 PHP로 세션 유지하기

이 세션 데이터를 PHP 끝에서 검색하고 싶지만이를 달성하는 방법을 모르겠습니다.

세션 이름은 'CUSTOMER_LOGGED_IN'입니다.

내 PHP 템플릿의 헤더에서 세션을 지속하기 위해 을 사용합니다 ().하지만 PHP 템플릿에 세션 데이터를 표시하는 방법이 확실하지 않습니다.

누구든지 도와 줄 수 있습니까?

모든 포인터에 대해 감사드립니다.

+0

당신이 잊어 버린 가장 중요한 부분은 다음과 같습니다. 동일한 웹 사이트, 동일한 서버, 다른 서버/네트워크 제거 네트워크에서 호스팅되는 앱입니까? 동일한 데이터베이스 또는 다른 공유 리소스/서버에 연결할 수 있습니까? 그들 사이에 어떤 종류의 신뢰를 구축하고 2 가지 다른 세션 데이터 세트를 유지하는 것이 더 간단 할 수 있습니다. –

+0

지연되어서 죄송합니다. 그들은 같은 웹 사이트, 서버 및 네트워크에 있습니다. – michaelmcgurk

답변

1

가장 좋은 방법은 ASP.NET과 PHP 모두에서 액세스 할 수있는 sql 데이터베이스와 같은 외부 저장소에 세션 정보를 저장하는 세션 외입니다.

+0

물론 이것은 외부 저장소에서 세션 데이터를 가져 오는 방법을 알고있는 PHP 코드를 작성해야합니다. PHP는 기본적으로 그렇게하지 않을 것입니다. – NotMe

+2

마찬가지로 모든 언어로 작업해야합니다. 스토어드 프로 시저에 코드를 저장하면 여러 언어로 된 코드를 재사용 할 수 있습니다. – KSchoniov

1

ASP 및 PHP 저장 세션이 다르게 수행되므로 직접 액세스 할 수 없습니다. 당신은 쿠키에서 세션 데이터를 암호화하고 샤드 비밀을 사용하여 PHP로 쿠키를 전달할 수 있습니다.

다른 방법은 ASP로 파일 시스템에 파일 시스템을 작성한 다음 PHP로 읽는 파일 시스템을 공유하는 경우이지만 양쪽 모두가 동일한 세션 데이터에 쓸 필요가있는 경우 지저분해질 수 있습니다. 그래서 나는 그 경우에 정말로 추천하지 않습니다.

+0

쿠키에 많은 데이터를 저장하면 브라우저가 작동을 멈추거나 삭제할 수 있으며 데이터를로드하기 위해 쿠키를 잊어서로드하는 데 지연이 많습니다. – Aristos

+0

나는 데이터를 전달하는 방법으로 시간의 100 %를 사용하지 말라고 말했다. 일단 php에 도착하면 php 세션 데이터로 저장할 수있다. – thenetimp

+0

$ _POST에 전달하면 CustomerID를 저장할 수 있습니까? 그래서, 'if (isset ($ _ POST ['CUSTOMER_LOGGED_IN '])) { \t $ fname = $ _POST ['CUSTOMER_LOGGED_IN ']; \t \t $ _SESSION [ 'CUSTOMER_LOGGED_IN'] = $ fname; } // $ fname는 세부 사항을 저장합니다' – michaelmcgurk

3

thenetimp 언급했듯이 세션에 직접 액세스 할 수 없습니다. 쿠키 또는 파일 시스템의 대안은 데이터 클라이언트 측을 저장할 필요가 없으며 파일 시스템에 파일 읽기/쓰기를 처리 할 필요가 없으므로 데이터베이스입니다.

This 질문에는 다른 좋은 해결책이 있습니다.

2

세션이 서버 측 언어로 구현된다는 요점이 누락되었습니다. asp.net의 세션 관리는 PHP 구현과 다릅니다. 세션 쿠키는 인증 쿠키와 공유 서버 측 세션 저장소를 통해 세션 데이터를 공유하는 메커니즘을 고안해야합니다.

asp.net 및 PHP 세션 토큰을 사용자에게 알려주는 방법을 찾아야합니다. 이론적으로는

  • asp.net에 로그인하십시오. asp.net에 내장 된 세션 메카니즘을 사용하거나 수동으로 수행 할 수 있습니다. 세션은 일부 토큰이있는 클라이언트에 연결된 데이터 저장소 일뿐입니다. 따라서 세션 초기화는 쿠키로 클라이언트 측에서 사용할 수 있어야하는 일부 인증 토큰을 제공합니다.
  • 세션 ID를 사용하여 세션 데이터를 php 및 asp.net 구현에 액세스 할 수있는 위치에 저장합니다.
  • 은 (클라이언트 측 쿠키를 통해) PHP를 구현
  • 로드 공유 세션 저장소에서 데이터를 수동으로까지 또는 PHP에서 세션 메커니즘을 사용자 정의하여 다시 토큰을 전달

내가 인정해야합니다 쉬운 일이 아닙니다. 어느 쪽이든 나는이 정보를 공유하려는 노력이라고 생각합니다. PHP에 대한 자세한 내용은 asp.net에 대한 것보다 이해하지만 개념은 번역됩니다. PHP에서는 session_set_save_handler() 기능을 사용하여 세션 작동 방식을 대체 할 수 있습니다. 이렇게하면 데이터베이스에서 세션을 저장하고 검색 할 수 있습니다.

공유 호스트에서 보안을 위해 데이터베이스에 세션을 저장하는 경우가 많습니다. 원칙적으로 모든 요청에 ​​대해 원격 데이터베이스에 접속하고 싶지 않을 경우이를 피할 수 있습니다. 그 이유는 소수의 사용자 만 관리 백엔드 기능에 사용하기 때문입니다. 사용자 정의 할 수있는이 서로 다른 저장 메커니즘

을 사용하여 달성하는 방법에 대한 주위에 떠있는 몇 가지 튜토리얼이 있습니다

참조 :

http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/

당신은 또한 당신이에 원하는 세션의 모든 데이터를 암호화하는 것이 좋습니다 asp.net 쪽,이 데이터를 클라이언트 측에 쿠키로 저장 한 다음 PHP가 암호화 된 쿠키를 해독하여 자체 세션을 생성하도록 할 수 있습니다. 당신은 이런 종류의 접근법에 조심해야하며 PHP와 asp.net 액세스 모두 https를 확실히 넘어야합니다.

도메인에 대해 언급 한 내용이 전혀 없습니다. 원격지에서 인증을 원할 경우 CAS 인증과 유사합니다.

나는 이것이 당신이하고자하는 것을 지적하는데 다소 도움이되기를 바랍니다. 아마도 이미이 작업을 수행 한 사람이 더 구체적인 조언을 제공 할 수있을 것입니다.

+0

asp.net에서 사용자 지정 세션 공급자를 구현할 수 있다면 잘 모르겠지만 PHP에서 비슷한 기능을 사용할 수 있습니다. 즉 세션 쿠키에 나타나는 session-id를 해석 할 수는 있지만 원한다. 그래서 만약에 2 개의 세션 쿠키가 있다면 (그 방법이 있어야만한다면) ... –

+1

http://msdn.microsoft.com/en-us/library/aa479313.aspx - 고전 asp와 asp.net 사이의 세션을 공유하는이 예제가 유용 할 수 있습니다. –

관련 문제