쿠키에서 PHPSESSID를 읽어오는 방식.
TWebBrowser를 상속하는 형태로 구현.



interface


// 이미 되어 있는 component 명을 바꾸는 건 굉장히 귀찮은 작업이므로 아래처럼...
type
  TWebBrowser=class(SHDocVw.TWebBrowser)
    public
      function GetSessionID: String;
    private
      function GetCookieValue(Name: String): String;
  end;


implementation

{ TWebBrowser }

// 쿠키에서 값을 가져옴

function TWebBrowser.GetCookieValue(Name: String): String;
var
  Doc: IHTMLDocument2;
  sList, tList: TStringList;
  i: Integer;
begin
  Result:='';

  Doc:=Self.Document as IHTMLDocument2;
  if not Assigned(Doc) then Exit;

  sList:=TStringList.Create;
  tList:=TStringList.Create;
  try
    ExtractStrings([';'], [], PChar(Doc.cookie), sList);
    for i:=0 to sList.Count-1 do begin
      tList.Clear;
      ExtractStrings(['='], [], PChar(Trim(sList[i])), tList);
      if AnsiCompareText(tList[0], Name)=0 then begin
        Result:=tList[1];
        Exit;
      end;  
    end;
  finally
    FreeAndNil(sList);
    FreeAndNil(tList);
  end;
end;


// 세션아이디를 가져옴
function TWebBrowser.GetSessionID: String;
begin
  Result:=Self.GetCookieValue('PHPSESSID');
end;









Posted by bloodguy
,