logowanie i zapisywanie serwisow www

0

witam, jestem poczatkujacym programista wiec prosze o wyrozumiałość.
mam nastepujacy problem, chcialbym napisac program który by po podaniu nazwy uzytkownika i hasla logowal sie w serwisie www np. nasza-klasa.pl albo fotka.pl i po udanym zalogwaniu zapisal strone na dysk (w firefox ctrl-s). programuje w codegear 07 i szukam artykulow o indy a dokladniej komponencie TidHttp bo myslalem ze to mi pomoze ale w internecie nie ma nic nawet na oficjalnej stornie indy, zadnej wzmianki jak sie zalogowac. ;-(

0

Powinno Ci pomóc. (Kawałek kodu odpowiedzialnego za logowanie na plemiona)

TStringStream *ODBIERA=new TStringStream("");
TStringStream *WYSYLA=new TStringStream("");
WYSYLA->WriteString("user="+Edit1->Text+"&clear=true"+"&password="+Edit2->Text+"&server="+ComboBox1->Text);
__try
 {
  IdHTTP1->Post("index.php?action=login",WYSYLA,ODBIERA);
 }
__except (2)
 {

 }
Location=IdHTTP1->Response->Location;
__try
{
  IdHTTP1->Get(Location,ODBIERA);
}
__except (2)
{

}

I tak się bawisz dopóki serwer Cię nie przyjmie pod swoje skromne progi... musisz jeszcze obsłużyć ciasteczka. :)

Pozdrawiam

0

hmm zaraz sprubuje to uzyc, napisalem taka funckcje szukajaca to co potrzebuje

kodzik=Indy->Get("http://nasza-klasa.pl/register").c_str();

Memo1->Lines->Add(kodzik.c_str());
plik << kodzik;

fstream plik2("data.dat",ios::in);
string dane, dane2;
int poz1=0, poz2=0;
string szukana("href=");
 while(!plik2.eof())
	{
getline(plik2,dane);
poz1=dane.find(szukana);
 if (poz1>0) {
  dane2=dane.substr(poz1,szukana.length());
  Memo2->Lines->Add(dane2.c_str());

 } 

niestety plik jest tak zbudowany dzieki opcji get ze nie ma znaku powrotu karetki i jeden wiersz jest bardzo dluuuugi :/, a potrzebuje w nim znaleŹĆ wszystkie teksty "szukana" a nie tylko pierwszy na ktory program sie natknie jak to zrobic????

jak sie poslugiwac ciasteczkami moglibyscie mi to wyjasnic lopatologicznie (pierwszy raz pisze program klient -serwer) i nieznam sie na na tych wszystkich ciasteczkach protokolach etc..
i à propos kod strony odpowiadajacej za logowanie wyglada nastepująco:

<a href="/login" onclick="return mini_login_toggle();">Zaloguj</a></li></ul></div>  <form id="mini_login" class="mini_form" action="/login" method="POST" accept-charset="UTF-8">
  <div><label for="mini_login_login">Login:</label><input type="text" size="10" name="login" id="mini_login_login"></div>
  <div><label for="mini_login_password">Hasło:</label><input type="password" size="10" name="password" id="mini_login_password"></div>
  <div><input type="hidden" name="target" value="/register">
  <input type="image" class="mini_form_button" src="http://static.nasza-klasa.pl/img/mini_login_submit" alt="Zaloguj"></div>
  </form>
0

poradzilem sobie z znajdowaniem poszczegolnej wartosci w pliku i zapisaniem jej do pliku :)
mam nastepny problem [!!!]

 fstream plik4 ("nkdata2.dat", ios::in);
 int **wsk=new int*[sizeof(plik4)];
for (int i=0; i<sizeof(plik4); i++)
wsk[i]=new int[1];
for (int i=0; i<sizeof(plik4); i++) wsk[i][1]=0;
 string *tab2= new string[sizeof(plik4)];
 for (int i = 0; i < sizeof(plik4); i++) {
 plik4>>wsk[i][0];
 }
 for (int i = 0; i < sizeof(plik4); i++)
 for (int j = 0; j < sizeof(plik4); j++)
   if (wsk[i][0]==wsk[j][0]) {
	   wsk[i][1]+=1;
   }
	for (int i = 0; i < sizeof(plik4); i++)
	ListBox1->Items->Add(wsk[i][1]) ;



// delete tab; delete tab2;
}

w pliku nkdata2.dat mam liczby 7 cyfrowe oddzielone enterem,
tworze tablice wsk dwuwymiarawą o wielkosci pliku i laduje do w[i][0] kolejne liczby z pliku.
natomiast

for (int i = 0; i < sizeof(plik4); i++)
 for (int j = 0; j < sizeof(plik4); j++)
   if (wsk[i][0]==wsk[j][0]) {
	   wsk[i][1]+=1;
   }

ten kod zlicza mi ilosc wystapien tej samej liczby w pliku, jak teraz wypisac tylko po jednej liczbie kazdego rodzaju do ListBoxa?? chce aby program nie wyspisywal tych liczb ktore sie powtarzaja ;P

0

jak mozna sie zalogowac na naszej-klasie?? ktos wie?

moj kodzik to:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TIdMultiPartFormDataStream *PostData = new TIdMultiPartFormDataStream;
PostData->AddFormField("login", Edit1->Text);
PostData->AddFormField("password", Edit2->Text);
AnsiString LoginResult = Id->Post("http://www.nasza-klasa.pl/", PostData);
delete PostData;

Memo1->Lines->Add(LoginResult);
}

podczas wykonywania wychodzi blad HTTP/1.0 301 Moved Parmanently :/ jak dam AnsiString LoginResult = Id->Post("http://nasza-klasa.pl/", PostData); zamiast
AnsiString LoginResult = Id->Post("http://www.nasza-klasa.pl/", PostData); to nie wyskakuje blad lecz zmienna LoginResult wypisuje mi kod storny glownej bez zalogowania czemu strona glowna nie przyjela mi hasla i logiinu uzyttkownika??

0

czesc sproboj sie zalogowac przez ten adres:
http://nasza-klasa.pl/login
lub
http://www.nasza-klasa.pl/login
bo musisz dane przesłać do logowania nie do strony głównej
a jeśli to nie pomoże to spróbuj jeszcze wypełnić pole remember=1
pozdro arni077

0

ale jak ? remeber=1?? dalej sie nie laczy dalej ten sam blad HTTP/1.1 302

0

sobie zainstaluje codegear 07 i spróbuje coś pokombinować bo jeszcze w nim nie robiłem tego
ale spróbuj po prostu dodać
PostData->AddFormField("remember", "1");
i ta linijke tak
AnsiString LoginResult = Id->Post("http://nasza-klasa.pl/login", PostData);

0

hmm probowalem dalej to samo, a moze zrobic tak zeby jakas funcje ktora wcisnie button "dalej" na stronie ?? bo w sumie on jakos nie chce tego posta zrobic, kolega mi mowil ze to w javie ladniej sie robi ale musze obsluzyc ciasteczka to o co kaman?? kod bledu mowi ze strone przeniesiono a jak wejsc w nasza-klasa.pl/login i przeczytac kod zrodlowy to tam jest forma <input> z metoda post czemu nie dziala ?? ja juz niemam pomyslow

0

no widzę ten błąd ale jak wpisze złe hasło to juz znika i pisze na stronie ze złe dane
wiem co powoduje ten błąd przekierowanie na inna stronę ale jak wlaczy sie przekierowanie to juz tylko ciasteczka jakos obsluzyc trzeba

0

masz pomysl ??? ja nigdy sie nie bawilem cisteczkami ani w programowanieu na http ;P poza tym u mnie nawet jak wpiszesz zly nick lub haslo to dalej dupa zbita ten sam blad

1 użytkowników online, w tym zalogowanych: 0, gości: 1