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
ErrorMsg
Dim
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 > 0
Dim
str
As
New
[
String
](read, 0, count)
GetUrl &= str
count = readStream.Read(read, 0, 256)
End
While
'readStream.Close()
'myHttpWebResponse.Close()
Return
GetUrl
ErrorMsg:
MsgBox(
"서버연결에 실패했습니다."
)
End
End
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.Text
Dim
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 + LoginUrl3
Dim
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
Then
LogInCheck =
True
Me
.Hide()
frmMain.Show()
Else
MsgBox(
"사용권한이 없습니다."
)
LogInCheck =
False
End
End
If
UserID = Username.Text
UserPW = Password.Text
Else
MsgBox(
"사용자가 없거나 지정한 암호가 다릅니다."
, ,
"로그인"
)
Password.
Select
()
SendKeys.Send(
"{Home}+{End}"
)
End
If
End
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 |