PHP jest wyjątkowo proste, bo ma dużo śmieci które niektórzy uważają za zajebistą rzecz. Ja się zajmę tylko oceną kodu:
print ("Sprawdzam url: $urls[$i]\n\n");
Przede wszystkim to - śmierdzi. Wsadzasz zmienne do stringa, nie dość że PHP się namęczy z szukaniem zmiennych w stringu, to jeszcze można takiego printa położyć jedną literówką (np. kropką nie tam gdzie trzeba lub podwójnym nawiasem i wyświetli ci ładne:
Sprawdzam url: $urls[$i]}
Czasami ze względu na pośpiech po prostu tego nie zauważysz, a potem kolejne 15 minut spędzone na debugowaniu "a czemu to nie działa?"...
Znacznie trudniej jest o tego typu błąd jeśli zapiszesz to tak:
print('Sprawdzam URL: ' . $urls[$i]);
I koloryzator składni ładnie to wyświetli (znacznie ładniej niż zmienne w stringu), a większość błędów w składni od razu zostanie zasygnalizowana parse errorem.
Kod piszesz w sposób bardzo niechlujny:
if (substr ($argv[1], 0, 7) == "http://") {
print ("Podałeś http\n\n");
$argv[1] = substr ($argv[1], 7, strlen($argv[1])-7);
} else {
Przede wszystkim większość programistów przyzwyczaiła się do nieco matematycznego zapisu wywołania funkcji, czyli:
f(x, y, z)
Uwierz, że to robi znaczną różnicę w porównaniu z:
f (x, y, z)
Gdy kod przerasta kilkaset linijek...
Oprócz tego: Istnieje coś takiego jak wcięcia. I po to są one stosowane, żeby potem nie mieć problemu z czytelnością kodu. Nie zostawiaj pustej linijki po każdej instrukcji - jak będzie trzeba walnąć komentarz to się doda linię w środku, to nie maszynopis.
Przykład sensownego formatowania twojego kodu:
<?php
include_once("parse.php");
include_once("url.php");
if ($argc != 2) {
print('Podałeś za mało parametrów' . "\n\n");
exit();
}
print('Przejdź pod adres: ' . $argv[1] . "\n\n");
//Sprawdzamy protokół w podanym adresie.
if (substr($argv[1], 0, 7) == "http://") {
print('Podałeś http' . "\n\n");
$argv[1] = substr ($argv[1], 7, strlen($argv[1])-7);
} else {
if (substr($argv[1], 0, 8) == "https://") {
print('Podałeś https. Jego nie obsługuje' . "\n\n");
exit();
} else {
if (substr($argv[1], 0, 6) == "ftp://") {
print('Podałeś ftp. Jego nie obsługuje' . "\n\n");
exit();
} else {
print('Nie podałeś żadnego. Domyślnie stawiam na http://' . "\n\n");
}
}
}
print($argv[1] . "\n\n");
$urls = array();
$urls[] = $argv[1];
$i = 0;
while(count($urls) > 0) {
while($urls[$i] == FALSE && $i < 10000) {
$i++;
}
print('Sprawdzam url: ' . $urls[$i] . "\n\n");
$urls_tmp = get_url($urls[0]); //Sprawdzamy podany URL.
if ($urls_tmp != FALSE) {
$urls = array_merge($urls, $urls_tmp);
}
unset($urls_tmp);
$urls = array_splice($urls, 1, count($urls));
}
?>
Pomijając dziwne treści komunikatów o błędach i samo działanie kodu.
Ciekawe jest to, że strony z "hacking" w nazwie i wyglądające na "omg w00t h0x" dla niewtajemniczonych, najczęściej hostowane są na yoyo.pl, albo cba.pl...
Nie mówię też nic o tym, że najczęściej to co jest tam napisane, z fachowością ma mało wspólnego.
[...] W firmach raczej króluje Windows. [...] Skoro wiadomo, to dlaczego nie zainstalują w firmach linuxa? Ja tu widzę same korzyści. Pracownicy nie pograją sobie w najnowsze gry (no chyba, że programiści, którzy muszą znać się na kompach), <font color="red">za darmo, zero licencji</span>, zero haraczu. Ktoś powie, kiedyś wirusy pojawią się na linuxie. Może, może nie. Ale na pewno nie będą mieć takiego rażenia jak na windowsie, bo
1) to jest linux
<font color="red">2) jak z punktu 1. wynika, normalny użytkownik nie siedzi na roocie</span>
3) częste aktualizacje (aktualizacja jądra i praca biurowa na pececie kto by pomyślał na windowsie?)
Albo ten news Projekt webbot w kategorii Hacking o.O