Delphi Can

Orjinalini görmek için tıklayınız: Webden kullanıcı bilgilerini çekme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba,


Web site üzerinden kullanıcı bilgilerini çeliyorum, kullanıcı adı ve tarih.

Örnek:
Osman 01.01.2024
Bekir 01.01.2024
Hülya 05.05.2020

Şöyle bir sorun yaşıyorum (Hülya 05.05.2020) giriş süresi dolmuş fakat hülya yine de giriş yapıyor. 
Yani Hülya'nın adını alıyor fakat ileri tarihli bir kullanıcının tarihini de alıyor.


Kullanıcı adı ve tarihi kontrolünü aynı anda nasıl sağlarım?


    try
      IDoc := coHTMLDocument.Create as IHTMLDocument2;
      IDoc.Write(IdHTTP.Get('http://www.xxxxxxx.com/users/'));
      IDoc.Close;
      iDiv := IDoc.Body.All.Tags('div');
      for I := 0 to iDiv.Length - 1 do
      begin
        iDivName := iDiv.Item(I);
        if SameText(iDivName.ClassName, 'divName') then // User
        begin
          UserWeb := iDivName.InnerText;
        end;
        if SameText(iDivName.ClassName, 'divDate') then // Date
        begin
          FinalDate := iDivName.InnerText;
        end;
        if SameText(UserWho, UserWeb) and (Date < StrToDate(FinalDate)) then
        begin
         
       LabelUserMessage.Text := 'BAŞARILI GİRİŞ!';
        end
        else
        begin
          LabelUserMessage.Text := 'Giriş izniniz yok!';
        end;


Webdeki div yapısı:

<div class="divTable blueTable">
<div class="divTableHeading">
<div class="divTableRow">
<div class="divTableHead">Name</div>
<div class="divTableHead">Date</div>
</div>
</div>
<div class="divTableBody">
<div class="divTableRow">
<div class="divName">Bekir</div>
<div class="divDate">01.01.2024</div>
</div>
<div class="divTableRow">
<div class="divName">Hülya</div>
<div class="divDate">05.05.2020</div>
</div>
</div>
</div>
Test etme imkanım olmadı ama birde aşağıdaki şekilde deneyebilirsiniz.

      IDoc := coHTMLDocument.Create as IHTMLDocument2;
     IDoc.Write(IdHTTP.Get('http://www.xxxxxxx.com/users/'));
     IDoc.Close;
     iDiv := IDoc.Body.All.Tags('div');
     var isSuccess := False;
     for var I := 0 to iDiv.Length - 1 do
     begin
       iDivName := iDiv.Item(I);
       if
          SameText(iDivName.ClassName, 'divName') and
          SameText(iDivName.InnerText, UserWho)
       then // User
         for var i2 := I to iDiv.Length - 1 do
         begin
           iDivName := iDiv.Item(i2);
           if SameText(iDivName.ClassName, 'divDate') then // Date
           begin
             if Date < StrToDate(iDivName.InnerText) then
               isSuccess := True;
             Break;
           end;
         end;

       if isSuccess then Break;
     end;

    if isSuccess then
      LabelUserMessage.Text := 'BAŞARILI GİRİŞ!'
    else
      LabelUserMessage.Text := 'Giriş izniniz yok!';
(25-01-2023, Saat: 03:55)delphi.developer Adlı Kullanıcıdan Alıntı: [ -> ]Test etme imkanım olmadı ama birde aşağıdaki şekilde deneyebilirsiniz.

      IDoc := coHTMLDocument.Create as IHTMLDocument2;
     IDoc.Write(IdHTTP.Get('http://www.xxxxxxx.com/users/'));
     IDoc.Close;
     iDiv := IDoc.Body.All.Tags('div');
     var isSuccess := False;
     for var I := 0 to iDiv.Length - 1 do
     begin
       iDivName := iDiv.Item(I);
       if
          SameText(iDivName.ClassName, 'divName') and
          SameText(iDivName.InnerText, UserWho)
       then // User
         for var i2 := I to iDiv.Length - 1 do
         begin
           iDivName := iDiv.Item(i2);
           if SameText(iDivName.ClassName, 'divDate') then // Date
           begin
             if Date < StrToDate(iDivName.InnerText) then
               isSuccess := True;
             Break;
           end;
         end;

       if isSuccess then Break;
     end;

    if isSuccess then
      LabelUserMessage.Text := 'BAŞARILI GİRİŞ!'
    else
      LabelUserMessage.Text := 'Giriş izniniz yok!';


Çok teşekkür ederim. + Puan