Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Konwertowanie chmodow
Forum PHP.pl > Forum > Przedszkole
marcio
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?
no_face
Musisz ja wywolac w ten sposob:

  1. <?php
  2. $b = ConvertChmod('6 6 4');
  3. ?>
Albitos
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.
Łukasz O.
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');
marcio
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
Crozin
  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;
}
marcio
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
Łukasz O.
ekhm... chyba nie myślisz, że PRZYKŁAD ma coś wspólnego z ŻYCIEM 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 smile.gif
marcio
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 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 smile.gif
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.