Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476

    [PHP] Aiuto su interpretazione IF ELSE specifico

    cosa stanno a significare queste due condizioni?

    codice:
    if($dirname[strlen($dirname)-1] != "/") $dirname.="/";
     static $result_array = array(); 
     $mode = fileperms($dirname);
    
    if(($mode & 0x4000) == 0x4000 && ($mode & 0x00004) == 0x00004) {
      chdir($dirname);
      $handle = @opendir($dirname);
     }
    in particolare la seconda....


    grazie


    dies

  2. #2
    La prima controlla se l'ultimo carattere è / e nel caso in cui non lo fosse lo aggiunge.

    La seconda mi sembra un controllo su numeri binari ma non sono sicuro. Ho già visto una cosa del genere ma non ricordo dove. Qualcuno saprà sicuramente dirti di che si tratta!
    Dove hai preso lo script? Su source forge?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    testa se è una directory e si hanno i permessi per leggerla.
    codice:
    Esempio 2. Mostra gli interi permessi
    
    <?php
    $perms = fileperms('/etc/passwd');
    
    if (($perms & 0xC000) == 0xC000) {
        // Socket
        $info = 's';
    } elseif (($perms & 0xA000) == 0xA000) {
        // Symbolic Link
        $info = 'l';
    } elseif (($perms & 0x8000) == 0x8000) {
        // Regular
        $info = '-';
    } elseif (($perms & 0x6000) == 0x6000) {
        // Block special
        $info = 'b';
    } elseif (($perms & 0x4000) == 0x4000) {
        // Directory
        $info = 'd';
    } elseif (($perms & 0x2000) == 0x2000) {
        // Character special
        $info = 'c';
    } elseif (($perms & 0x1000) == 0x1000) {
        // FIFO pipe
        $info = 'p';
    } else {
        // Unknown
        $info = 'u';
    }
    
    // Owner
    $info .= (($perms & 0x0100) ? 'r' : '-');
    $info .= (($perms & 0x0080) ? 'w' : '-');
    $info .= (($perms & 0x0040) ?
                (($perms & 0x0800) ? 's' : 'x' ) :
                (($perms & 0x0800) ? 'S' : '-'));
    
    // Group
    $info .= (($perms & 0x0020) ? 'r' : '-');
    $info .= (($perms & 0x0010) ? 'w' : '-');
    $info .= (($perms & 0x0008) ?
                (($perms & 0x0400) ? 's' : 'x' ) :
                (($perms & 0x0400) ? 'S' : '-'));
    
    // World
    $info .= (($perms & 0x0004) ? 'r' : '-');
    $info .= (($perms & 0x0002) ? 'w' : '-');
    $info .= (($perms & 0x0001) ?
                (($perms & 0x0200) ? 't' : 'x' ) :
                (($perms & 0x0200) ? 'T' : '-'));
    
    echo $info;
    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    ciao,

    grazie per il suggerimento.


    Nella condizione di sotto,

    dove $mode = fileperms($dirname);


    if(($mode & 0x4000) == 0x4000 && ($mode & 0x00004) == 0x00004) {
    chdir($dirname);
    $handle = @opendir($dirname);
    }

    come si può cambiare la condzione affinché sia vera con $mode = fileperms($dirname); uguale 750 e non su 755.

    il file l'ho preso dalla sezione script di freephp.html.it in particolare motore di ricerca interno al sito 02_motori.zip.

    Credo che sia un ottimo script per i pochi motori di ricerca,
    l'unico neo è che non indicizza i file della root... perché bisogna settare i CHMOD della root su 755.. mentre generalmente sono 750.

    dies

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    ok!

    perfetto ci sono arrivato...

    bisogna cambiare la condizione in questo modo:
    if(($mode & 0x4000) == 0x4000 && ($mode & 0x0004) == '-') {
    chdir($dirname);
    $handle = @opendir($dirname);
    }


    grazie a tutti per il supporto!


    dies

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    dire di no così dai accesso a tutto. tranne che ai files in lettura a tutti,
    al limite
    codice:
    if(($mode & 0x4000) == 0x4000 && ($mode & 0x0020) == 'r') {

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    ciao,

    la funzione è questa:

    codice:
    function i_get_files($dirname) { 
     // Navigates through the directories recurrsively and retrieves a listing in an array.
     // File permission bit by Abhay Jain <vigya@yahoo.com>
    echo $dirname."
    ";
     if($dirname[strlen($dirname)-1] != "/") $dirname.="/";
     static $result_array = array();
     $mode = fileperms($dirname);
     if(($mode & 0x4000) == 0x4000 && ($mode & 0x0004) == '-') {
      chdir($dirname);
      $handle = @opendir($dirname);
     }
     if(isset($handle)) {
      while ($file = readdir($handle)) {
       if($file=='.'||$file=='..') continue;
        if(is_dir($dirname.$file)) i_get_files($dirname.$file.'/');
        else $result_array[] = $dirname.$file;
      }
      closedir($handle);  
     }
     return $result_array; 
    }
    se seguo il tuo suggerimento.. non mi indicizza nessun file.

    dies

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    fai l'echo di $mode, il '-' lì vuol dire accesso negato a tutti! cioè ti fa vedere i file della cartella con 750 (rwxr-x---)
    come permessi e pure per assurdo quelle con 400 (r--------)
    ma non con con 757 (rwxr-xrwx)
    e non so se è molto indicato.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    scusa, non ho capito.

    mi rispieghi per favore


    dies

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    scusa il test è così
    codice:
    if(($mode & 0x4000) == 0x4000 && ($mode & 0x0020) == 0x0020) {
    comunque premesso che non conosco lo scopo per cui tu consenti a tutti di vedere la tua root dir, in linux/unix ogni file/directory
    ha un owner(utente proprietario) , un group ( gruppo dell'utente proprietario) e una premission ( i permessi ie quelli indicati come 755 o 750 o rwxr-xr-x o rwxr-x--- ecc).
    i permessi sono divisi in 3 aree , permessi del proprietario, permessi degli utenti del gruppo , permessi per tutti.
    per gli esempi di prima 755 vuol dire pieno accesso al proprietario (del file/directory) , sola lettura ed esecuzione agli altri.
    per 750 vuol dire pieno accesso al proprietario (del file/directory) , sola lettura ed esecuzione agli utenti del gruppo, nessun accesso agli altri.
    il test
    $info .= (($perms & 0x0004) ? 'r' : '-');
    vuol dire metti in and binario i permessi con un 4 e se il risultato è vero scrivi 'r' altrimenti '-' (niente permessi)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.