Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Leggere dir ed esaminarne file! [FUTURA PILLOLA?]

    lo script è un semplice modulo che tratta la ricerca di parole nei file delle DIR esaminate!.
    Non so perchè ma non funziona, in tutti i casi una volta aggiustato magari andrebbe bene come futura pillola per un modulo di ricerca nel sito;

    So che ce ne sono altre ma sono più lunghe o nel senso hanno bisogno di più attezione perchè prevedono le parole chiave per ogni pagina del sito mentre qui non c'è bisogno di nulla ed è più sintetico!.
    Codice PHP:
    <?

    $parola_da_cercare 
    strip_tags($_POST['search']);

    //I file su cui NON cercare

    $no_file = array("file.estensione","file2.estensione");

    ///////////////////////////

    //Le cartelle in cui CERCARE

    $yes_path = array("dir","dir_2","etc..");

    ///////////////////////////

    //Le estensioni dei file su cui NON cercare

    $no_exst = array(".js",".css",".xml",".jpg");

    ///////////////////////////

         
    $processi 0;
        
    $asd 0;
        while (
    $asd <= count($yes_path)) {
         
    $handle_dir opendir($yes_path[$asd]);  //apriamo tutta la directory
         
            
    while (($file readdir($handle_dir))!== false) {  // Scorri tutti i files della directory   
             
                
    if (!is_dir($file) and !in_array($file$no_file) and $file != "aassdd.php"){  
                 
                 
    $sd explode("."$file);
                                            
    //distinguiamo le estensioni dal nome
                 
    $ultimo end($sd);
                    
                    if (!
    in_array(".".$ultimo$no_exst)) {                
                     
                     
    $fp fopen($yes_path[$asd]."/".$file);
                         
                         
    $file_letto fread($fp9500);
                          
                     
    fclose($fp);
                     
                     
    $file_letto explode("<body>",$file_letto);        //un po di ripulitura dai tag HTML                
                                     
    $file_letto strip_tags($file_letto[1]);
                     
                        if (
    strstr ($file_letto$parola_da_cercare)) {                
                         
                         
    $result .= "<a href=\"".$yes_path[$asd]."/$file\">Nel file $file è stata trovata la parola $parola_da_cercare</a> 
    "
    ;
                         
                         return 
    $result;
                        }else{    
                         
                         
    $processi++;
                         
                        }
                        return 
    $result;
                    }
                    return 
    $result;
                } 
                return 
    $result;
                
                
    $file_letti++;
                
            }
            
        
    $asd++;
    }
        if (
    $file_letti == $processi) {
         
         echo 
    "Nessuna corrispondenza trovata per:".$parola_da_cercare;
         
        }elseif (
    $file_letti $processi and $processi != 0){
         
         echo 
    $result;
         
        }
    ?>

  2. #2
    Se poi non funziona, non pretenderai che si possa arguire cosa non funziona o trovarlo così solo dallo script:

    Prova a descrivere cosa fa e cosa non fa.
    Non da nessun output?
    salta alcuni file, o directory, o tipi di file?
    riporta un warn o errore php?

    In ogni caso, oggi con funzioni quali file_get_content e simili usre fopen e simili mi pare antiquato.
    Il codice andrebbe comunque aggiornato (=semplificato ulteriormente).

  3. #3
    Magari si puo fare il meno codice;
    file_get_content se non sbaglio è con PHP5 io ho attivo PHP4 ma non credo affatto sia quello l'errore!.
    In tutti i casi l'errore è che non restituisce nessun output!.

  4. #4
    Se non hai nessun output, probabilmente dipende da

    Codice PHP:
    }elseif ($file_letti $processi and $processi != 0){ 
    che puoi provare a sostituire con

    Codice PHP:
    }elseif ($file_letti $processi && $processi != 0){ 
    o forse adirittura con

    [PHP]
    Codice PHP:
    }else { 

  5. #5
    Scusa ma non cambia niente;
    In tutti i casi perchè non avrebbe dovuto andar bene come era prima?

    Non ho output ne se quel qualcosa che ho cercato esiste ne se quel qualcosa che ho cercato non esiste!.

    Lo hai già provato su un web server?
    Se forse cortesemente lo potresti mettere su un sito e vedere se worka..
    non sò.. forse è sbagliato qualcosa nello script che ho uppato, ma dicerto non và!

  6. #6
    devi fare qualche prova sul tuo server, non sul mio.
    La prima prova sarebbe cambiare le ultime linee dello script con:

    Codice PHP:
        if ($file_letti == $processi) { 
         
         echo 
    "Nessuna corrispondenza trovata per:".$parola_da_cercare
         
        }elseif (
    $file_letti $processi and $processi != 0){ 
         
         echo 
    "corrispondenze trovate:".$result
         
       }else{ 

         echo 
    "terzo caso non previsto..."

        } 
    E vedere se ritorna "corrispondenze trovate..." oppure "trzo caso...".
    Ciò ti darà qualche ulteriore indicazione sul malfunzionamento.

    Ci sono alcune differenze nel modo in cui php gestisce gli and a seconda che siano introdotti dalle parole "and", "&" oppure "&&" (rivedere manuale).

  7. #7
    Ora restituisce output.. era a causa di tutti quei return.
    Ma perchè i return bloccavano l'output?!

    Ho cambiato anche l'impostazione del count dei file trovati inserendo la variabile $trovati ed incrementandola ogni volta che viene trovata corrispondenza nei file.

    Quindi gli if cambiano con
    Codice PHP:
    if ($file_letti == $processi) {
         
         echo 
    "Nessuna corrispondenza trovata per:".$parola_da_cercare;
         
        }elseif (
    $trovati != 0){
         
         echo 
    "corrispondenze trovate:".$result;
         
       }else{

         echo 
    "terzo caso non previsto...";

        } 
    Un'altro problema accorre: nel caso viene trovato qualcosa lo stampa, ma se non ci sono corrispondeze dà sempre il terzo caso non previsto.

    Per di più dovrei eliminare tutto ciò che è fra <?, ?>, <?php, ?>, ovviamente nei file da cercare per non cercare anche nel php!

  8. #8
    Per di più dovrei eliminare tutto ciò che è fra <?, ?>, <?php, ?>, ovviamente nei file da cercare per non cercare anche nel php!
    Non farlo!
    se poi il php è di questo tipo

    Codice PHP:
    echo "alfa beta e gamma"
    non capirebbe che la pagina alla fine parlerà di alfa beta e gamma.

  9. #9
    Si avevo già pensato a questa problematicha.
    Servirebbe una soluzione che toglie tutto il php che non è fra echo " e "; e print.

    Una bella espressione regolare consigli?

  10. #10
    Devi definire bene cosa vuoi fare. Esaminare il contenuto di file di che tipo? Testo, PHP, HTML? Perche' strip_tags() rimuove tutti i tag (compresi quelli PHP) E IL LORO CONTENUTO, quindi un file HTML diventa sostanzialmente vuoto.

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.