![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 13 Dołączył: 13.08.2008 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
W sieci istnieje masa przykładów używania chmod() np.:
chmod($plik, 644); Proste nie? NIE! Szukam, szukam i znaleźć nie mogę jak zmienić uprawnienia, ale nie na sztywno, tylko np. wyciągnąć je ze zmiennej. Problem się pojawia bo przecież nie można podawać dec int ani string tylko liczbę ósemkową. Wie ktoś może jak to zrobić?? Chodzi mi o zmianę uprawnień z formularza. Może jeszcze mały kawałek kodu: Kod <?php if (isset($_POST['command'])) //Zmienna string pobrana z text inputa w formacie "chmod $nazwa_pliku $prawa" { $tab = explode(" ",$_POST['command']); if ($tab[0]=='chmod') { chmod($_SESSION['dir'].'/'.$tab[2], $tab1); // <=== ? ![]() ![]() } unset($_POST['command']); } ?> Jak to zrobić?? będę wdzięczny ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 217 Pomógł: 40 Dołączył: 20.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przechwytujesz sobie zmienne z formularza i dzialasz :
CODE $prawaint = $_POST['prawa']; $sciezka = $_POST['sciezka']; $prawa8 = 0; if(is_int($prawaint)) //sprawdzamy czy to liczba { $prawa8 .= $prawaint; chmod($sciezka, $prawa8); } |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 13 Dołączył: 13.08.2008 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
No niestety nie działa
![]() Kiedy tak robię, zmienia mi prawa na 000. Chyba że ja coś źle robię (w innym miejscu). |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 217 Pomógł: 40 Dołączył: 20.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Daj mi tu caly skrypt ktorym obslugujesz formularz i sam formularz tez mozesz dac.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 13 Dołączył: 13.08.2008 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Obsługa formularza:
Kod if (isset($_POST['command'])) { $tab = explode(" ",$_POST['command']); if ($tab[0]=='chmod') { $perms = 0; if (is_int($tab[1])) $perms .= $tab[1]; chmod($_SESSION['dir'].'/'.$tab[2], $perms); //$_SESSION['dir'] to zmianna, w której trzymam katalog (ścieżkę do pliku) } unset($_POST['command']); } i formularz: Kod <img src="command.png" alt="" title="Wiersz poleceń" style="width: 32px; height: 32px; margin: 0px 3px 0px 3px; cursor: pointer;" onClick="javascript:toggle_form('command_input');"> <form action="panel.php" method="post" id="command_input" style="display: none; vertical-align: 50%;" onSubmit="return command_prompt();show_loader();"> <input type="text" name="command"> <input type="submit" value="OK"> </form> inne: Kod function toggle_form(ID)
{ e = document.getElementById(ID); if (e.style.display=='none') {e.style.display='inline';} else {e.style.display='none';} } function show_loader() { document.getElementById("ajaxLoader").style.display='inline'; } function command_prompt() { e = document.getElementById("command_input"); if ((e.command.value=='?') || (e.command.value=='help')) { alert("Dostępne polecenia: \n<chmod> - chmod nazwa_pliku uprawnienia (chmod plik.txt 777)"); e.command.value=''; return false; } } |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 217 Pomógł: 40 Dołączył: 20.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
CODE Zobacz, piszesz cos takiego : alert("Dostępne polecenia: \n<chmod> - chmod nazwa_pliku uprawnienia (chmod plik.txt 777)"); Czyli najpierw trzeba podac "prefiks" = chmod potem sciezke = plik.txt a pozniej prawa="777" Struktura tabeli jest taka : tab[0] = chmod; tab[1] = plik.txt; tab[2] = 777; A zobacz co zrobiles w skrypcie : if (is_int($tab[1])) $perms .= $tab[1]; chmod($_SESSION['dir'].'/'.$tab[2], $perms) Sprawdzasz sobie czy $tab[1] czyli plik.txt jest liczba ;o - musisz zamienic tab[1] na tab[2] Pozniej dalej dodajesz do 0 + $tab[1] czyli robisz z tego string = 0plik.txt No i na koncu chcesz ustawic prawa do pliku $_SESSION['dir']/777 Popraw to i powiedz co wyszlo ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 13 Dołączył: 13.08.2008 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Sorry - mój błąd, ale błąd jest tylko w alercie.
Wpisuje: chmod 777 nazwa_pliku Wyechowałem prawa (tab[1]): Kod if (isset($_POST['command'])) { $tab = explode(" ",$_POST['command']); if ($tab[0]=='chmod') { echo $tab[1].'<br>'; $perms = 0; if (is_int($tab[1])) $perms .= $tab[1]; chmod($_SESSION['dir'].'/'.$tab[2], $perms); echo $perms; } unset($_POST['command']); } w pierwszym echo mam 777 a w drugim mam 0... |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 217 Pomógł: 40 Dołączył: 20.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wiem o co chodzi
![]() CODE Za linijką : $perms = 0; Wpisz : settype($tab[1], "integer"); Powinno dzialac bo funkcja explode wynik przekazuje jako string. Teraz to juz praktycznie nie ma sensu sprawdzac czy zostala przekazana zmienna liczbowa. Ten post edytował ikssde 25.08.2008, 16:37:19 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował Kicok 25.08.2008, 16:47:08 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 13 Dołączył: 13.08.2008 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
![]() ![]() ![]() (Po paru minutach), kurde nie wiem jak to zrobić działa, ale tylko jak wpiszę wartość w OCT , czyli żeby zrobić chmod 777 plik, muszę napisać chmod 511 plik i wtedy działa OK. Teraz działa wyśmienicie ![]() A tu kod, na przyszłość jakby kto szukał (obsługa formularza [input type="text" name="command"]): CODE <?php #format danych w formularzu: #chmod uprawnienia nazwa_pliku (np chmod 777 plik.txt) if (isset($_POST['command'])) { $tab = explode(" ",$_POST['command']); if ($tab[0]=='chmod') { $tmp = 0; settype($tab[1], "integer"); $tmp .= $tab[1]; $perms = octdec($tmp); chmod($_SESSION['dir'].'/'.$tab[2], $perms); } unset($_POST['command']); } ?> Ten post edytował WojtasSP320 26.08.2008, 00:01:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:41 |