http://www.xpressengine.com/?mid=tip&search_keyword=%EB%A1%9C%EA%B7%B8%EC%9D%B8&search_target=title_content&page=2&division=-19434734&document_srl=18667773
제로보드와 마찬가지로 url로 로그인 하는 방법이다.
http://www.hanistory.com/?mid=logincheck&user_id=아이디&password=패스워드&act=procMemberLogin
해당 주소로 접속하면 id/pw 가 맞을경우 "SUCCESS"를 표기한다.
이를 읽어오면 로그인 유무를 판단할수 있고
해당 모듈의 로그인 위젯에 회원정보가 표기되게 설정하면 회원정보까지 긁어올수 있다.
VB6.0 이라면 Inet 컨트롤이나 Wininet.dll 을 사용하여
위주소로 웹페이지 내용을 읽어 오면 된다.
닷넷으로는 WebRequest를 이용해 웹페이지를 읽어왔다.
Public Function GetUrl("ByVal sUrl As String) As String'//서버인증On Error GoTo ErrorMsgDim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(sUrl), HttpWebRequest)Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)Dim receiveStream As Stream = myHttpWebResponse.GetResponseStream()Dim encode As Encoding = System.Text.Encoding.GetEncoding("UTF-8")Dim readStream As New StreamReader(receiveStream, encode)Dim read(256) As [Char]Dim count As Integer = readStream.Read(read, 0, 256)GetUrl = ""'Dim strHtml As String = ""While count > 0Dim str As New [String](read, 0, count)GetUrl &= strcount = readStream.Read(read, 0, 256)End While'readStream.Close()'myHttpWebResponse.Close()Return GetUrlErrorMsg:MsgBox("서버연결에 실패했습니다.")EndEnd Function'로그인 폼에서 Geturl() 호출Private Sub OK_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click'xe(로그인)Dim LoginUrl1 As String = "http://www.홈페이지.com/?mid=loguncheck"Dim LoginUrl2 As String = "&user_id=" + Username.Text + "&password=" + Password.TextDim LoginUrl3 As String = "&act=procMemberLogin"'그누보드 로그인'http://www.hanistory.com/g4/bbs/login_check.php?_POST[mb_id]=UserId&_POST[mb_password]=Password'Dim LoginUrl1 As String = "http://www.홈페이지.com/bbs/login_check.php?"'Dim LoginUrl2 As String = "_POST[mb_id]=" + Username.Text + "&_POST[mb_password]=" + Password.Text'Dim LoginUrl3 As String = "&url=success"Dim LoginUrl As String = LoginUrl1 + LoginUrl2 + LoginUrl3Dim UrlSource As String = GetUrl("LoginUrl)'Debug.Print(LoginUrl)'Debug.Print(GetUrl("LoginUrl)If InStr(UrlSource, "success") Then'xe()Dim MemLevel As Integer = Val(Mid(UrlSource, InStr(UrlSource, "<dt>Level. ") + 11, 2))'그누보드'Dim MemLevel As String = GetUrl("LoginUrl1 + LoginUrl2 & "&url=index.php")'Debug.Print("레벨" & MemLevel)If MemLevel >= 0 ThenLogInCheck = TrueMe.Hide()frmMain.Show()ElseMsgBox("사용권한이 없습니다.")LogInCheck = FalseEndEnd IfUserID = Username.TextUserPW = Password.TextElseMsgBox("사용자가 없거나 지정한 암호가 다릅니다.", , "로그인")Password.Select()SendKeys.Send("{Home}+{End}")End IfEnd Sub잘 안된다는 그누보드도 이방법으로 먹힌다.
단 그누보드는 루트의 common.php 의 아래부분을 주석처리 해야됨.
//=================================================================// extract($_GET); 명령으로 인해 page.php?_POST[var1]=data1&_POST[var2]=data2 와 같은 코드가 _POST 변수로 사용되는 것을 막음// 081029 : letsgolee 님께서 도움 주셨습니다.//------------------------------------------------------------------------------------------------------------------$ext_arr = array ('PHP_SELF', '_ENV', '_GET', '_POST', '_FILES', '_SERVER', '_COOKIE', '_SESSION','_REQUEST','HTTP_ENV_VARS', 'HTTP_GET_VARS', '+ 'HTTP_POST_VARS', 'HTTP_POST_FILES', 'HTTP_SERVER_VARS','HTTP_COOKIE_VARS', 'HTTP_SESSION_VARS', 'GLOBALS');$ext_cnt = count($ext_arr);/*for ($i=0; $i<$ext_cnt; $i++) {// GET 으로 선언된 전역변수가 있다면 unset() 시킴//if (isset($_GET[$ext_arr[$i]])) unset($_GET[$ext_arr[$i]]);}*///=================================================================
'php' 카테고리의 다른 글
| curl.setup (0) | 2011.05.30 |
|---|---|
| Function.fsockopen (0) | 2011.05.30 |
| XpressEngine 별도 프로그램 연동시 세션공유 (0) | 2011.01.12 |
| XpressEngine 오픈 아이디(OpenID)로만 로그인 허용하기 (0) | 2011.01.12 |
| 점검중 발견한 웹셀 유형 (0) | 2011.01.10 |