Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klikanie w link na innej stronie
Forum PHP.pl > Forum > Przedszkole
kayy
Witam,

sytuacja jest taka: mam router, którego "strona administracji" to 192.168.0.1, po podaniu username i password (tak jakbyśmy przez przeglądarkę logowali się na ftp), chcę aby skrypt "klikną" trzy różne linki. Nie są one generowane dynamicznie więc zawsze będą w tym samym położeniu.

Próbowałem szukać ale przy mojej koncepcji na słowa kluczowe znajduje tylko propozycje płatnego klikania w linki...




Może to już nie przedszkole ale nie jestem pewny, więc może jakiś guru mi pomoże?
jareeny
A treść linku zawsze jest taka sama? Jeżeli tak to po prostu użyj cURL'a :]
kayy
Tak, jest taka sama.

Nie wiem jak zalogować się curlem  w to okienko co wyskakuje (Tak jakbym logował się przez przeglądarkę do ftp) ;/
erix
~kayy, a nie wystarczyłby Ci RouterControl? winksmiley.jpg

Cytat
Nie wiem jak zalogować się curlem w to okienko co wyskakuje (Tak jakbym logował się przez przeglądarkę do ftp) ;/

To jest autoryzacja HTTP, curl_setopt" title="Zobacz w manualu PHP" target="_manual: CURLOPT_USERPWD.
kayy
Ok, potrzebuje kliknąć w link, albo jakoś inaczej wywołać skrypt js.

  1. <?php
  2. $curl = curl_init();
  3.  
  4.  
  5. curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  6. curl_setopt($curl, CURLOPT_USERPWD, 'admin:password');
  7. curl_setopt($curl, CURLOPT_URL, "http://192.168.0.1/cgi/dial/");
  8.  
  9.  
  10. curl_exec($curl);
  11. curl_close($curl);
  12. ?>



Tym wyświetlam to co chcę.
erix
Cytat
Ok, potrzebuje kliknąć w link

To zwyczajnie ustawiasz jego linka w adresie docelowym cURL.

Cytat
albo jakoś inaczej wywołać skrypt js

No, tego cURL-em nie zrobisz... Zostaje już chyba tylko wywołanie AJAX, ale i tak będzie problem, gdyż nie będą się zgadzały domeny.
kayy
Ten link jest w js tongue.gif




W takim razie nie da się tego zrobić? no trudno, przeżyję smile.gif dzięki.

A może da się zrobić aby przefiltrować treść i wyświetlić tylko słowa "Disconnect" lub "Connect"?
erix
Cytat
A może da się zrobić aby przefiltrować treść i wyświetlić tylko słowa "Disconnect" lub "Connect"?

preg_match" title="Zobacz w manualu PHP" target="_manual

Cytat
wyświetlić tylko słowa "Disconnect" lub "Connect"?

Domyśliłem się, o co chodzi; sprawdzałeś, czy działa Ci Router Control?`
kayy
Ja mam ubuntu a to chyba jest pod winde?!

btw. Łącze się z neostradą jak z normalną siecią, nie przez te specjalne programiki ;p a to może dlatego, że jestem połączony z routerem nie bezpośrednio, tylko za 3 switchami ;D tj. mogę zresetować ip tylko przez stronę routera ;>

W sumie to ten curl nic mi nie daje bo przy kliknięciu w disconnect nic się nie dzieje tj. nie wywołuje java scriptu... Buu a chciałem oszczędzić sobie 2 klików ;<
erix
Cytat
Ja mam ubuntu a to chyba jest pod winde?!

Ale możesz chyba odpalić przez Wine, nie? winksmiley.jpg

Cytat
btw. Łącze się z neostradą jak z normalną siecią, nie przez te specjalne programiki ;p

Ten program jest właśnie stworzony w tym celu. winksmiley.jpg Używam go z Linksysem i śmiga guitar.gif

OK, koniec off-topa. ;P
kayy
Hehe, tego programu jakoś nie mogę znaleźć sad.gif ale znalazłem jeszcze jedną opcję jak mogę go zresetować smile.gif

Kod
#telnet 192.168.0.1

#admin

#password

#system

#reboot


Czy dzięki php mogę jakoś telnetować się i wpisywać komendy?

-edit
Ok, znalazłem ciekawą klasę i powoli mi wychodzi biggrin.gif
-edit2
Nie wiem czy to przez tą klasę czy telnet będzie zawszę w php tak wolno chodził?

-edit3

Hmm... Napisałem i niby działa ale nie działa... Pisze, że zrestartował ale nic się nie stało... 

Nie wiem jaki dać komunikat aby czekał po poleceniu reboot, bo zwykle to jest 25 sekund i reboot się zrobi a w telnecie tylko miga kursor, a jak nacisnę coś to mnie wyrzuca...




Daję tutaj klasę + mój skrypt.

http://www.nomorepasting.com/getpaste.php?pasteid=23690 - klasa

http://www.nomorepasting.com/getpaste.php?pasteid=23691 - skrypt




Bardzo bym prosił o pomoc!
ddiceman
  1. <?php
  2. $telnet->write("reboot");
  3. $limitSekund = 30;
  4.  
  5. for($i = 0; $i<$limitSekund; $i++){
  6.    if($telnet->socket){ echo "Zresetowano"; break; }
  7.        else               { echo "Trwa resetowanie...\n"; flush(); sleep(1); $telnet->connect(); }
  8. }
  9. ?>


Mozliwe, ze instrukcja

  1. <?php
  2. $telnet->connect();
  3. ?>


nie jest tu potrzebna - to zalezy, czy urzadzenia odnowia gniazdko, choc wydaje mi sie, ze resetujacy sie router zerwie po prostu polaczenie a ten kod sprobuje Ci otworzyc nowe (juz po fakcie rozlaczenia)
kayy
Lecz dalej nie działa. Mówiąc jaśniej skrypt wyrzuca komunikat jakby wszystko było oki, ale jest problem z poleceniem reboot. Mianowicie chodzi o to, że konsola nie daje żadnych znaków, życia - czy to w trakcie restartu czy już po, więc nie mam jak sprawdzić czy restart się udał. Mógłby ktoś bardziej pro sprawdzić tą klasę i przerobić / powiedzieć jak aby nie trzeba było oczekiwać na odpowiedź po wpisaniu polecenia?




Był bym bardzo wdzięczny,

kayy
erix
Cytat
Mianowicie chodzi o to, że konsola nie daje żadnych znaków, życia - czy to w trakcie restartu czy już po, więc nie mam jak sprawdzić czy restart się udał.

Przecież to logiczne - serwer zrywa połączenie i nie jest w stanie już odpowiedzieć. winksmiley.jpg

Pozostaje tylko próba nawiązywania połączenia co określony czas.
kayy
Więc może jesteś w stanie mi pomóc ;P?
erix
Przecież pomagam. smile.gif

Gotowca nie dostaniesz; sam kombinuj, forum jest od nakierowywania i zwracania uwagi na błędy, a nie od pisania gotowców. tongue.gif
kayy
Cytat(erix @ 23.01.2009, 23:03:31 ) *
Przecież to logiczne - serwer zrywa połączenie i nie jest w stanie już odpowiedzieć. winksmiley.jpg

Pozostaje tylko próba nawiązywania połączenia co określony czas.

Hmm... czyli według Ciebie skrypt zrywa połączenie po poleceniu reboot... No ale w takim razie na serwerze powinno się ono wykonywać, a skryptu, nawet jeżeli był by już rozłączony nie potrzeba by było. No a restart wcale "się nie robi"...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.