Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wstawianie php do html'a
Forum PHP.pl > Forum > Przedszkole
shaggard
witam

Jestem noworodkiem jesli chodzi o php'a wiec prosze o wyrozumialosc.
Mam stronke w htmlu i mam plik2.php. ktory ma za zadanie sprawdzac aktywne kompy w sieci i wynik ma byc wyswietlany na stronie w postaci graficznej (drzewa) za pomoca 2 gifow (komp_on komp_off). w ktorym miejscu i jak umiescic ten skrypt w htmlu by po kazdym odswierzeniu strony uruchamial sie i jak rozwiazac sprawe gifow aby sie pojawialy te prawidlowe w zaleznosci od tego czy komp jest w sieci czy nie.

pozdrawiam
Athlan
nie wiem ocb ale sie domyślam... chcesz sprawdzić czy komp w Twojej sieci jest online czy nie...

fsockopen" title="Zobacz w manualu php" target="_manual i jego ip ?

pozdrawiam smile.gif
shaggard
dokladnie o to mi chodzi. cos takiego jak na tej stronce http://mieszka.net .
tylko wlasnie nie wiem jak to wrzucic do htmla na strone i tez co zrobic zeby pozniej odpowiednie gify na stronie sie ladowaly pokazujac prawidlowy stan kompa
pozdrawiam
Athlan
no tak jak mówiłem, otwórz linka i poczytaj o tej funkcji smile.gif
eai
Cytat
tylko wlasnie nie wiem jak to wrzucic do htmla na strone i tez co zrobic zeby pozniej odpowiednie gify na stronie sie ladowaly


1. Piszesz skrypt sprawdzający, wykorzystujesz funkcje która kolega Ci podał.
2. Wynik FALSE lub TRUE zwracasz w zmiennej $connected
3. Generujesz widok do html.

Przykładowo:
  1. <?php
  2.  
  3.  
  4.  if($connected) { //TRUE
  5.  echo '<img src="komp_on.gif">';
  6.  }
  7.  
  8.  else { //FALSE
  9.  echo '<img src="komp_off.gif">';
  10.  }
  11.  
  12. ?>
shaggard
OK wszystko rozumie. Dzieki chlopaki.
Jednak czytam o tej funkcji fsockopen, i sie pogubilem.
naprawde staram sie cos sklecic ale po prostu sie gubie i nie wiem od czego zaczac w ogole. sad.gif
Dopiero zaczalem przygode z php'em i niedawno kupilem sobie dopiero ksiazke, takze prosze o wyrozumialosc i cierpliwosc.
pozdrawiam
eai
  1. <?php
  2.  
  3. $ip = '192.168.0.100'; //IP Komputera który chcesz sprawdzic.
  4. $fp = @fsockopen($ip, 80, $errno, $errstr, 30);
  5.  
  6. if (!$fp) {
  7. echo '<img src="komp_off.gif">';
  8. } 
  9. else 
  10. {
  11. echo '<img src="komp_on.gif">';
  12. }
  13.  
  14. ?>


Polecam Ci najpierw zapoznać się z jakimś kursem ogólnym o php.
Po pierwsze tworzysz sobie tablicę z userami sieci i ich IP.
Potem przechwytujesz tablice foreach() i kolejno podstawiasz kazdy IP do fsockopen i zapisujesz status do tej tablicy czy jest ON czy OFF. Potem przechwytujesz statusy i generujesz widok Html'a.

Polecam kurs: http://www.leon.w-wa.pl/texts/kurs/
Poczytaj tez o: array" title="Zobacz w manualu php" target="_manual foreach" title="Zobacz w manualu php" target="_manual

To by było na tyle. Życze powodzenia.
shaggard
dzieki

pozdrawiam

witam ponownie

mam cos takiego , wynik tego jest taki ze najpierw wyswietla mi liste wszystkich uzytkownikow a pod spodem dopiero ikony. Jak zrobic aby wyciagal automatycznie z tablicy wszystkich userow sprawdzajac po kolei, bo narazie musze wpisywac ip z reki i jak zrobic aby ikonki pozazywaly sie przy nazwie usera tzn uzytkownik i obok ikona a nie jak dotychczas.
  1. <?php
  2.  
  3. include ('cont.php');
  4.  
  5. $adres_ip = '10.0.0.2';
  6.  
  7. $fp = fsockopen($adres_ip, 8080, $errno, $errstr, 10);
  8.  
  9. if(!$fp) {
  10.  echo '<img src="./data/komp_off.gif">';
  11.  }
  12. if($fp) {
  13.  echo '<img src="./data/komp_on.gif">';
  14.  }
  15.  
  16. pozdrawiam
  17.  
  18.  
  19. ?>


plik cont.php tablica :
  1. <?php
  2. ?php
  3.  
  4. $tab = array(
  5. '10.0.0.2' => 'user1',
  6. '10.0.0.3' => 'user2',
  7. '10.0.0.4' => 'user3',
  8. '10.0.0.5' => 'user4',
  9. '10.0.0.6' => 'user5',
  10. );
  11.  
  12. foreach ($tab as $adres_ip) {
  13.  echo "$adres_ip<br>n";
  14. }
  15.  
  16. ?>
eai
Dobrze kombinujesz. Wystarczy tylko teraz wstawic do foreach jest funkcje fsockopen i po sprawie smile.gif


  1. <?php
  2.  
  3. $tablica = array();
  4. $tablica['user1'] = '10.0.0.2';
  5. $tablica['user2'] = '10.0.0.3';
  6. $tablica['user3'] = '10.0.0.4';
  7. $tablica['user4'] = '10.0.0.5';
  8. $tablica['user5'] = '10.0.0.6';
  9.  
  10.  
  11. foreach ($tablica as $user => $adres_ip ) {
  12.  
  13. $fp = fsockopen($adres_ip, 8080, $errno, $errstr, 10);
  14.  
  15. echo 'Użytkownik: ' . $user . '<br>';
  16. echo 'Adres IP: ' . $adres_ip . '<br>';
  17.  
  18. if(!$fp) {
  19.  
  20.  echo '<img src="./data/komp_off.gif">';
  21.  
  22.  }
  23.  
  24. if($fp) {
  25.  
  26.  echo '<img src="./data/komp_on.gif">';
  27.  
  28.  }
  29.  
  30.  echo '<hr>';
  31.  
  32. }
  33.  
  34. ?>
shaggard
staram sie smile.gif Dzieki za pomoc.
Jak mozesz to zerknij na to http://netservis.no-ip.org/siec.php.
jak to mowia apetyt rosnie w miare jedzenia. i tak sie teraz zastanawiam jak zrobic zeby to bylo przedstawione na tym schemacie. Bo siedze juz ze 4 godziny nad tym i nic nie udalo mi sie wykombinowac. sad.gif

Aha tak na marginesie strasznie ladowanie tej podstronki jest spowolnione. Czyzby tyle czasu zajmowalo mu wykonanie tego skryptu??

pozdrawiam
MagnuM
Cytat
jak to mowia apetyt rosnie w miare jedzenia. i tak sie teraz zastanawiam jak zrobic zeby to bylo przedstawione na tym schemacie. Bo siedze juz ze 4 godziny nad tym i nic nie udalo mi sie wykombinowac.

Musisz odpowiednio poustawiać ramki. Najprościej będzie, jeżeli w tej sieci znajduje się stała liczba odbiorców, zrobić te ramki ręcznie. Czyli robisz kod wyświetlający najpierw ten duży obrazek, później odpowiednio ustawiasz ramki pod mniejsze obrazki identyfikujące stan aktywności w sieci dla danego użytkownika. Mam nadzieje że potrafisz to zrobić sam?

Można też zrobić to dynamicznie, ale to troszkę więcej zachodu. Robiłem takie coś w swoim czasie i jest wykonalne (jak prawie wszystko), ale i tak jestem zdania, że w tym przypadku nie będzie to konieczne.


Cytat
Aha tak na marginesie strasznie ladowanie tej podstronki jest spowolnione. Czyzby tyle czasu zajmowalo mu wykonanie tego skryptu??

Ten skrypt w obecnej formie nie ma prawa generować takiego przeciążenia, które byłoby bardziej zauważalne niż wyświetlenie napisu 'Hello world!' w skrypcie początkującego programisty. guitar.gif Taki żarcik.
shaggard
Tak to teraz wyglada. Czyli tabela ze strony. Zreszta jak zapewne mogles odczytac po linku.
  1. <table border="0" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td colspan="6"><img src="./data/schemat.gif"></td>
  4. </tr>
  5. <tr align="center">
  6. <td width="73"><img src=""><br><font class="tekst">Router</font></td>
  7. <td width="73"><img src=""><br>
  8. <font class="tekst">Netservis</font></td>
  9. <td width="73"><img src="./data"><br>
  10. <font class="tekst">B.Raczy</font></td>
  11. <td width="73"><img src="./data/komp_on.gif"><br>
  12. <font class="tekst">T.Raczy</font></td>
  13. <td width="73"><img src="./"><br>
  14. <font class="tekst">Galina</font></td>
  15. <td width="73"><img src="./data/komp_off.gif"><br>
  16. <font class="tekst">Gosia</font></td>
  17. <td width="73"><img src="./data/komp_off.gif"><br>
  18. <font class="tekst">Dlink-900AP</font></td>
  19. </tr>
  20. <tr>
  21. <td colspan="6">&nbsp;</td>
  22. </tr>
  23. <tr align="center">
  24. <td width="73"><img src="./data/komp_on_wifi.gif"><br>
  25. <font class="tekst">Asmax</font></td>
  26. <td width="73"><img src="./data/komp_on.gif"><br><font class="tekst">Dlink-512</fo
  27. <td width="73"><img src="./data/komp_off.gif"><br>
  28. <font class="tekst">Tomek.W</font></td>
  29. <td width="73"><img src="./data/komp_off.gif"><br>
  30. <font class="tekst">Piotrek.W</font></td>
  31. <td width="73"><img src="./data/komp_off.gif"><br>
  32. <font class="tekst">Pawel.W</font></td>
  33. <td width="73"><img src="./data/komp_off.gif"><br>
  34. <font class="tekst">Ania.W</font></td>
  35. <td>&nbsp;</td>
  36. </tr>
  37. </tbody>


Probowalem tutaj cos kombinowac ale niestety nic mi nie wychodzilo
W sieci narazie jest stala liczba uzytkownikow. A zawsze chyba mozna z reki potem dodac jakby liczba ta sie zmienila. Szczerze to nie bardzo sie jeszcze orientuje. Moze jesli mozesz daj jakis przyklad tak zebym mogl sie oprzec na nim. Dopiero zaczynam przygode z programowaniem takze...sam wiesz.
pozdrawiam
MagnuM
  1. <?php
  2. $iTrCountUser = 6; // ilość użytkowników na jeden znacznik <tr> czyli na jeden wiersz
  3.  
  4. echo '
  5. <table border="0" cellpadding="0" cellspacing="0">
  6. <tbody>
  7. <tr>
  8. <td colspan="'. $iTrCountUser .'">'; // ilość użytkowników na jeden znacznik <tr> czyli na jeden wiersz
  9. echo '
  10. <img src="./data/schemat.gif">
  11. </td>
  12. </tr>
  13. <tr align="center">';
  14. for($a = 1; $a <= $iTrCountUser; $a++)
  15. {
  16.  
  17. $sStatus = 'offline'; // tutaj dodasz sobie dynamicznie status użytkownika
  18. <td width="73">
  19. <img src="'. $status.'.jpg"><br><font class="tekst">'. $sUserName .'</font>
  20. </td>
  21. ';
  22. }
  23. </tr>
  24. </tbody>
  25. </table>
  26. ';
  27. ?>


PS. w tym miejscu parser też działa nieprawidłowo. Gdy nie używa się schematu funkcji (z nawiasami) dla instrukcji echo, a tekst znajduje się pomiędzy apostrofami, to znaki specjalne nie muszą być poprzedzane "\" ('wstecznym' ukośnikiem).

EDIT: Kolego popraw ramki w poprzendim poście bo się okno rozjeżdża ;p
shaggard
OK wielkie dzieki .
tylko o co tak dokladnie chodzi z tym dynamicznym dodawaniem statusu uzytkownika
  1. <?php
  2. $sStatus = 'offline'; // tutaj dodasz sobie dynamicznie status użytkownika
  3. <td width="73">
  4. <img src="'. $status.'.jpg"><br><font class="tekst">'. $sUserName .'</font>
  5. </td>
  6. ';
  7. ?>

Ten fragment kodu jak rozumie dotyczy jednego uzytkownika. czyli trzeba powielic go tyle razy ilu jest uzytkownikow. Zgadza sie?

pozdrawiam
MagnuM
Ten fragment kodu jest powielany przez php za pomocą pętli for (w tym przypadku).

Musisz poprostu przenieść ten kod, który miałeś do tego tutaj (w obręb pęti for).

Prościej będzie na zasadzie tej pętli którą miałeś. Możesz więc zastąpić pętlę for pętlą foreach.

  1. <?php
  2. $tablica['user1'] = '10.0.0.2';
  3. $tablica['user2'] = '10.0.0.3';
  4. $tablica['user3'] = '10.0.0.4';
  5. $tablica['user4'] = '10.0.0.5';
  6. $tablica['user5'] = '10.0.0.6';
  7.  
  8. foreach ($tablica as $user => $adres_ip )
  9. {
  10. $fp = fsockopen($adres_ip, 8080, $errno, $errstr, 10);
  11.  
  12. echo '<td width="73">';
  13.  
  14. if(!$fp) 
  15. {
  16. echo '<img src="./data/komp_off.gif">';
  17. } else
  18. {
  19. echo '<img src="./data/komp_on.gif">';
  20. }
  21.  
  22. echo '<br><font class="tekst">'. $sUserName .'</font></td>';
  23.  
  24. }
  25. ?>


Gwoli objaśnienia. Wszytsko jest jak było. Tylko do tego co napisałem dodajesz na początku tę tablicę z ip i zamieniasz pętlę for na pętlę foreach.
shaggard
witam

  1. <?php
  2. $fp = fsockopen($adres_ip, 8080, $errno, $errstr, 10);
  3. ?>


czy da rade w tej funcji okreslic zakres portow lub okreslic kilka portow? czy jest taka opcja by sparwdzal siec np na 3 portach?

pozdrawiam
free
By uzyskac taki efekt jak na stronie http://netservis.no-ip.org/siec.php to kod php calej strony musi byc na lokalnym serwerze czy u niezaleznego zewnetrznego dostawcy typu home.pl, cal.pl itp?
Athlan
oczywiście że na lokalnym... jak inaczej sobie to wyobrażasz?
pozdro smile.gif
shaggard
witam

Jakiej funkcji najlepiej uzyc by zliczal mi liczbe komputerow aktualnie bedacych w sieci. Np "aktualnie jest 3 z 12 w sieci" Wydaje mi sie ze count z tym ze ona zlicza wszystkie kompy z tablicy.
a probowalem cos takiego
$suma = count ($fp)
gdzie fp to zmienna dla funkcji fsockopen to caly czas otrzymywalem 1, ale wydaje mi sie ze chyba nie tedy droga.

pozdrawiam
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.