Gacek, nie znam Twojego poziomu pod względem programowania, więc potraktuję Cię jako bardzo początkującego. Jeżeli się mylę, z góry przepraszam.
Błąd:
Kod: Zaznacz cały
Parse error: syntax error, unexpected T_ELSE in /var/www/p.php on line 3
Oznacza, że masz w kodzie problem ze składnią (zapisem wszystkiego według ustalonych zasad). Samo:
Kod: Zaznacz cały
else{
shell_exec("komenda -port $_POST[port]");
}
Nie ma prawa bytu, gdyż jest to kawałek kodu, którego 2/3 linii jest tutaj totalnie niepotrzebne. Wystarczy, że usuniesz pierwszą i ostatnią linię kodu. Do tego:
zamień na:
Kod: Zaznacz cały
shell_exec('komenda -port '.$_POST['port']);
Chciałbym również podkreślić niebezpieczeństwo korzystania z tego w takiej formie: do powłoki (
ang. shell) przekazujesz dane od użytkownika, których w żaden sposób nie weryfikujesz, przez co ktoś może wykonać dowolną komendę. Najprostszym rozwiązaniem będzie sprawdzenie, czy wartość zmiennej
jest liczbą i tylko w takim przypadku wywołanie tego kodu. Wyglądałoby to tak (pisane z palca):
Kod: Zaznacz cały
// Wymuszamy typ integer(liczbowy) na pobranych danych
$port = (int)$_POST['port'];
// Port nie może być zerowy, więc nie wykonujemy komendy
// Również wartość równoznaczną z zerem zmienna $port przyjmie w przypadku, kiedy będzie np. tekstem
if($port > 0) {
shell_exec('komenda -port '.$port);
}