Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Konwertowanie chmodow, z 777 na rwx-rwx-rwx
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Witam mam pytanie nie wiem zabardzo co wpisac w google lub w wyszukiwarce na tym forum bo nigdy nie spotkalem sie z podobnym tematem chcialbym zmienic wyswietlanie chmodow z numerowego wyswietlania na rwx etc.

Robie taa funkcje:
  1. <?php
  2. function ConvertChmod($chmod) {
  3.  
  4. $number_chmod = explode(" ", $chmod);
  5. print_r($chmod);
  6. print_r($number_chmod);
  7.  
  8. if($number_chmod[0] == 4) $string_chmod .= 'r';
  9. else if($number_chmod[0] == 5) $string_chmod .= 'rx';
  10. else if($number_chmod[0] == 6) $string_chmod .= 'rw';
  11. else if($number_chmod[0] == 7) $string_chmod .= 'rwx';
  12.  
  13. if($number_chmod[1] == 4) $string_chmod .= 'r';
  14. else if($number_chmod[1] == 5) $string_chmod .= 'rx';
  15. else if($number_chmod[1] == 6) $string_chmod .= 'rw';
  16. else if($number_chmod[1] == 7) $string_chmod .= 'rwx';
  17.  
  18. if($number_chmod[2] == 4) $string_chmod .= 'r';
  19. else if($number_chmod[2] == 5) $string_chmod .= 'rx';
  20. else if($number_chmod[2] == 6) $string_chmod .= 'rw';
  21. else if($number_chmod[2] == 7) $string_chmod .= 'rwx';
  22.  
  23. return $string_chmod;
  24. }
  25.  
  26. //Wywoluje
  27.  
  28. $b = ConvertChmod(644);
  29. echo($b);
  30. ?>


I nic sie nie dzieje a te print_r w funkcjo zwracaja takie cos:
  1. <?php
  2. 644Array (     [0] => 644 )
  3. ?>

Czyli explode() nie dzieli tego chmod'a tak jak bym chcial poniewaz jest to int jak to poprawic lub wiem moglbym napisac wszytkie mozliwe kombinacje chmod'ow a nie pojedyncze cyfry ale nie chce.

Niby banalne ale cos mi nie wychodzi mam normalnie do funkcji dac jako argument tablice?Albo jak to inacze napisac?
Go to the top of the page
+Quote Post
no_face
post
Post #2





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

Ostrzeżenie: (0%)
-----


Musisz ja wywolac w ten sposob:

  1. <?php
  2. $b = ConvertChmod('6 6 4');
  3. ?>
Go to the top of the page
+Quote Post
Albitos
post
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 4
Dołączył: 6.08.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Niepotrzebnie całkowicie używasz tego explode'a. PHP pozwala na dostęp do dowolnego znaku w stringu tak jak do elemtu tablicy:
Kod
<?php
function ConvertChmod($chmod) {
   return getChString($chmod[0]).getChString($chmod[1]).getChString($chmod[2]);
}

function getChString($iNumber)
{
   switch($iNumber)
   {
       case 4:
         return 'r--';
         break;
       case 5:
         return 'r-x';
         break;
       case 6:
         return 'rw-';
         break;  
       case 7:
         return 'rwx';
         break;  
   }
}
?>


Bo ważna sprawa to poznanie możliwości języka... Na twoim miejscu rozejrzałbym się jeszcze po dokumentacji PHP. Kto wie, może jest do tego jakaś wbudowana funkcja.

Ten post edytował Albitos 21.09.2008, 14:48:06
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #4





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


Kod
class HumanChmod{

    public static function get($rights){
        return self::numberToLetters($rights[0]). # owner
               self::numberToLetters($rights[1]). # group
               self::numberToLetters($rights[2]); # world
    }
    
    public static function numberToLetters($number){
        $wartosc  = (($number & 4) ? 'r' : '-'); //read
        $wartosc .= (($number & 2) ? 'w' : '-'); //write
        $wartosc .= (($number & 1) ? 'x' : '-'); //execute
        return $wartosc;
    }
    
}

echo HumanChmod::get('665');
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Zrobilem to jak najprosciej sie da bez kombinowania
  1. <?php
  2. function ConvertChmod($chmod) {
  3.  
  4. $number_chmod = explode(" ", $chmod);
  5.  
  6. if($chmod == 777) $string_chmod = 'rwxrwxrwx';
  7. else if($chmod == 766) $string_chmod = 'rwxrw-rw-';
  8. else if($chmod == 755) $string_chmod = 'rwxr-xr-x';
  9. else if($chmod == 744) $string_chmod = 'rwxr--r--';
  10. else if($chmod == 664) $string_chmod = 'rw-rw-r--';
  11. else if($chmod == 655) $string_chmod = 'rw-r-xr-x';
  12. else if($chmod == 644) $string_chmod = 'rw-r--r--';
  13.  
  14.  
  15. return $string_chmod;
  16. }
  17. ?>

Nie wyglada to good jako kod ale wazne ze dziala

P.S nie zakladajac nowego tematu jak uzyskac efekt taki ze jak najedzie sie na komorke tabeli(mowa o <tr> i w nim wszystkie <td>) to zmieni ona kolor a jak juz sie na nie najezdza to jest normalna probowalem poprzez onmouseout i onmouseover ale nic
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. echo ConvertChmod('756');
  3. ?>
Ooo... nie zadziała? Użyj kodu napisanego przez Łukasz O.

Ad. PS
Kod
tr{
  background: red;
}

tr:hover{
  background: blue;
}
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(Crozin @ 21.09.2008, 23:51:50 ) *
  1. <?php
  2. echo ConvertChmod('756');
  3. ?>
Ooo... nie zadziała? Użyj kodu napisanego przez Łukasz O.

Ad. PS
Kod
tr{
   background: red;
}

tr:hover{
   background: blue;
}


Wiem ale kto uzywa chmodu 756 dalem tylko podstawowe jak narazie potem sie doda albo zmodyfikuje funkcje
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

Ostrzeżenie: (0%)
-----


ekhm... chyba nie myślisz, że PRZYKŁAD ma coś wspólnego z ŻYCIEM (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) nikt Ci nie każe dawać praw 756 - to czysta abstrakcja była

a co do podziału na podstawowe i... "inne"? skąd go wziąłeś? ciekaw jestem jakie było kryterium podziału (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
a co do podziału na podstawowe i... "inne"? skąd go wziąłeś? ciekaw jestem jakie było kryterium podziału

Na podstawie tego co widze u innych i u mnie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

P.S plusy dla osob ktore zasluguja dam pozniej jak bede mial jeszcze jakis problem to napisze w tym watku nie martwcie sie nie zapomne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował marcio 22.09.2008, 21:37:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 23:41