티스토리 뷰
출처: http://aramjo.blog.me/120057442870
세개의 웹페이지들이 있고 각각 jsp 2개 , php 1개인데 다른 DB를 쓰고 있는데 종류는 Mysql로 같구요. jsp 로 된 페이지(통합로그인 페이지)에서 로그인 하면 나머지 jsp , php 로 된 페이지에서도 같이 로그인 되게 하려고 합니다.
통합로그인 페이지에서 세션을 생성하면 다른 페이지 2개에서도 그 세션값을 받아서 로그인할 수 있도록 하는 방법을 알고 싶네요.
소스를 어떻게 만들어야 할지도 정확히 모르겠어요. 자세한 개념과 소스설명도 좀 부탁드릴께요. 내공 이빠이 겁니다. ^^
제가 전에 관리하던 쇼핑몰 사이트도 PHP , JSP 로 구성이 되어있었는데요.
자바 세션을 그대로 PHP 에서 이용을 할 수 있는 방법 혹은 그 반대의 방법은 모릅니다.
아마도 JSP 와 PHP 의 세션을 공유하는 것은 불가능 하지 않을까 생각이 됩니다.
실제 JSP 와 PHP 의 세션 구조도 매우 다릅니다. JSP 는 세션이 클래스이기 때문에 단순히 문자열 이외에 다른 여러 객체들도 세션에 넣을 수 있습니다. 하지만 PHP 는 그것을 사용할 수 없지요..또 불가능 한 이유는 세션은 서버단에 생성이 되는데 자바 세션은 Servlet 엔진에서 자바 클래스 형태로 생성이 될 것이기 때문에 PHP 처리 모듈에서 자바 클래스로 된 세션을 사용할 수 없을것 이기 때문입니다.
제가 전에 사용한 방법은 로그인 처리 페이지를 JSP 로그인 처리 페이지에서 자바 세션 처리를 한 후 response.sendRedirect 로 PHP 페이지로 넘겨 다시 PHP 페이지에서 PHP 세션 처리를 해 주는 방식으로 운영을 했습니다.
JSP 로그인 폼 페이지 -> JSP 로그인 처리 페이지 (세션 처리) -> PHP 로그인 처리 페이지 (세션처리) -> 로그인 완료 페이지 (혹은 파라미터로 전달한 페이지URL)
원하시는 답변이 아닐수도 있겠습니다만.. 도움이 되셨길 빕니다.
+ -----------------------------------------------------------------[답변내용 추가]
답변내용 추가라는 기능은 없군요..
지금 현재 일하는곳에서는 JSP 를 사용하지 않는지라.. 소스를 작성하려면 JSP 환경을 만들어야 하는 부담이 TT 그래서 간단하게 개념만 작성해 드립니다.
/**
form.html ( 로그인 하는 페이지 입니다.- jsp 던 php 던 상관 없습니다.)
*/
<form action="login_ok.jsp" method="post">
<input type="text" name="mem_id">
<input type="text" name="password">
<input type="submit" value="로그인">
</form>
/**
login_ok.jsp
*/
String mem_id = request.getParamter("mem_id");
String password = request.getParameter("password");
boolean login_ok = false;
/**
아이디와 비밀번호가 맞는지 확인
맞으면 login_ok 를 true 로 설정
*/
if (login_ok){
session.setAttribute("session_mem_id", mem_id);
session.setAttribute("session_password", password);
out.println ("");
out.prinltn ("<form name='frm1' action='login_ok.php' >");
out.println ("<input type='hidden' name='mem_id' value='"+mem_id+"'>");
out.println ("<input type='hidden' name='password' value='"+password+"'>");
out.println ("</form>");
out.println ("<script> document.frm1.submit();</script>");
}else{
response.sendRedirect ("login_err.html");
}
login_ok.php
session_start();
login_ok = 0;
/**
아이디와 비밀번호가 맞는지 확인
맞으면 login_ok 를 1 로 설정
*/
if (login_ok) {
$session_mem_id = $mem_id;
$session_password = $password;
session_register("session_mem_id");
session_register("session_password");
}
echo ("<script>location.href='login_complete.html'</script>");
login_complete.html
<?session_start()?>
<?=$mem_id?> 님께서 로그인 하셨습니다.
가장 기본적인 원리만 기재했습니다. 테스트 해 본것이 아니라 오류도 있을수 있으나 그정도는 고치실 수 있을것 같습니다.
여기에 로그인 하셨을 때 세션에 넣어야 할 여러 값들 처리를 하시고
중간에 파라미터 넘길때 좀 더 보강하시면 될 것 같습니다.
jsp 페이지에서는 session.getParameter("session_mem_id") 를 이용하셔서 로그인 여부 및 회원 아이디를 인출해서 사용하시고
php 및 html 페이지에서는 처음에 session_start() 하신 후 $session_mem_id 를 참조하시면 됩니다.
좀 더 편하게 사용하시려면 히든 프레임을 만들고 세션 처리 페이지를 만드셔서 세션 처리 페이지에서 세션을 등록 할 때 히든 프레임을 타겟으로 JSP , PHP 모두 세션처리를 하실 수도 있을것 같습니다. 여튼 방법은 여러가지이나 공통된 것은 JSP, PHP 모두 별도로 처리를 해 주셔야 한다는것 입니다.
[출처] jsp, php에서 같은 세션으로 로그인하기|작성자 아람조