Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] exec ping jak zabezpieczyc
Forum PHP.pl > Forum > Przedszkole
icetab
jak zabezpieczyc ten skrypt zeby tylko mozna bylo podawac ip a nie ktos poda

122.122.122.122;ls -la

i ma wylistowane pliki :/
sniezny_wilk
Stosuj wyrażenia regularne i odpowiednie regułki.
webdice
Przeczytaj sobie to.
sniezny_wilk
Cytat(icetab @ 4.06.2008, 22:53:57 ) *
nie zrozumialem


A wiesz co to są wyrażenia regularne ? Jeśli nie to przede wszystkim poczytaj o tym w google, bo to jest zagadnienie pojawiające się w praktycznie każdym języku programowania, a regułki wyglądają tak samo. Przykładem wyrażeń regularnych w PHP jest preg_ match" title="Zobacz w manualu PHP" target="_manual. Cała masa informacji znajduje się w google i manualu.

EDIT: @webdicepl, ubiegłeś mnie o kilka sekund winksmiley.jpg
sniezny_wilk
Cytat(icetab @ 4.06.2008, 22:59:18 ) *
a jak dodac polskie litery i wszystkie znaki specjalne ?


A po co Tobie to przy sprawdzeniu IP ? wystarczą reguły [0-9] i \. a jak masz tego użyć to sam pomyśl.
webdice
a Co ma REQUEST_URI do adresu IP?
webdice
Z takim podejściem do nauki proponuje Ci żeby znalazł sobie inne zajęcie niż programowanie.

Kod
<?php
preg_match ('#^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$#', $ip)
?>


P.S. Słyszałeś kiedyś o znakach interpunkcyjnych?

EDIT: Forum ucięło backslashe, poprawiłem.
dr_bonzo
  1. <?php
  2. preg_match ('#^d{1,3}.d{1,3}.d{1,3}.d{1,3}$#', $ipek) // co jest w $ipek? gdzie jest srednik? czemu nie sprawdzasz co zwraca preg_match?
  3. ?>

Programowanie nie polega na zapamietywaniu i odtwarzaniu wiedzy, rozwiazan, tylko na wymyslaniu ich, bo nie wszystko [a ledwie, powiedzmy, 5% rzeczy juz bylo, i widziales je]


-------
edit: widze ze post icetaba zniknal:

Cytat
naukcz czyni mistrzala ale pierw ktos musi pokazac pomoc a pozniej sie zapamieta

zrobilem tak

Kod PHP
  1. <?php
  2. preg_match ('#^d{1,3}.d{1,3}.d{1,3}.d{1,3}$#', $ipek)
  3. $ipek = $_GET['ipek'];
  4. exec('ping '.$ipek, $pok);
  5. echo $pok[1];
  6. ?>




i gdy podaje ip ip.php?ipek=127.0.0.1

to pokazuje sie pusta strona zamiast pingu :/
sniezny_wilk
Cytat(icetab @ 4.06.2008, 23:14:15 ) *
bo przez GET podaje ip to ma tylko brac cyfry nie wiem jak to za bardzo zrobic :/


Wybacz, ale niektóre Twoje wypowiedzi i posty są irytujące i emanują niechęcią do google i manuala, tyle mojego offtop'u.

Pobierasz sobie GET'em dane, potem puszczasz je przez preg_match, który zwraca true jak wyrażenie pasuje do Twojej reguł. Tworzysz odpowiednią regułę i sprawdzasz czy wyrażenie do niej pasuje.
webdice
Przed chwilą usunąłeś swojego ostatniego posta z kodem. Brakowało Ci w instrukcji warunkowej klamer. Proponuję Ci naukę PHP od postaw, naprawdę.
webdice
  1. <?php
  2. preg_match ('#^d{1,3}.d{1,3}.d{1,3}.d{1,3}$#', $ipek)
  3. $ipek = $_GET['ipek'];
  4. exec('ping '.$ipek, $pok);
  5. echo $pok[1];
  6. ?>


1. W funkcji preg_match" title="Zobacz w manualu PHP" target="_manual używasz jako argumentu zmiennej ipek, ale zastanów się przez chwilę czy ona istnieje? Deklarujesz ją dopiero później.

2. Jak słusznie zauważył ~dr_bozno brakuje Ci średnika.

3. Funkcja preg_match" title="Zobacz w manualu PHP" target="_manual zostanie wywołana, a dalsza część kodu wykona się tak samo jakby jej nie było.

Programowanie polega na analitycznym myśleniu, jeśli sam nie możesz sobie poradzić z takimi problemami, to programowanie widocznie nie jest dla Ciebie, i nie obrażaj się tu na mnie za to co pisze.

Poprawny kod:

  1. <?php
  2. $ipek = $_GET['ipek'];
  3.  
  4. if (preg_match ('#^d{1,3}.d{1,3}.d{1,3}.d{1,3}$#', $ipek))
  5. {
  6. exec ('ping '.$ipek, $pok);
  7. echo $pok[1];
  8. }
  9. else
  10. {
  11. echo 'Nieprawidłowe IP';
  12. }
  13. ?>
kszychu
icetab: nic tu nikomu nie ściska, poza zastraszająco niskim poziomem Twoich pytań. Trochę samodzielności.
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.