Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    rilevare e se esiste rinominare un file

    Ciao a tutti
    io ho questa sezione di codice php che rileva l'esistenza di alcuni file e fà dei print.

    <?php
    $filename = "$path_to_cgi_bin/_gen.lock";
    $filename2 = "$path_to_cgi_bin/_gen.stop";
    if (file_exists($filename)|| file_exists($filename2)) {
    print "Generator Status: <font color=\"red\">Down</font>";
    } else {
    print "Generator Status: <font color=\"green\">Up</font>";
    }

    $filename = "$path_to_cgi_bin/_par.lock";
    $filename2 = "$path_to_cgi_bin/_par.stop";
    if (file_exists($filename) || file_exists($filename2)) {
    print "Parser Status: <font color=\"red\">Down</font>
    \n";
    } else {
    print "Parser Status: <font color=\"green\">Up</font>
    \n";
    }
    ?>

    ora io avrei bisogno di modificare un pò la cosa in questo modo.
    Se ad una prima esecuzione dovesse risultare vera una delle codizioni if al successivo caricamento della pagina dovrebbero essere eliminati i file che rendono vera la if in modo che ad un ulteriore caricamento della pagina la if non risulti valida.
    l'ideale sarebbe rinominarli magari in modo progressivo, ma forse chiedo troppo.
    Io riesco a malapena a leggerlo il php, scriverlo per me è arduo...
    grazie per l'aiuto.

  2. #2
    scusami, xchè non ti crei un flag che vale 0 fino a che la condizione risulta falsa, altrimenti cambi il valore a 1;

    una cosa tipo:
    codice:
    if ((file_exists($filename)|| file_exists($filename2)) && $flag==0) {
     codice;
    $flag=1;
    }
    qualcosa del genere.
    Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
    http://www.eternaldream.it

  3. #3
    scusami tu, ma non ho capito bene come risolveresti la cosa con un flag. Ho bisogno di essere imboccato...

  4. #4
    dopo aver faticato parecchio con decine di test, sono riuscito a scrivere questo:

    $timestamp = time();

    $filename = "$path_to_cgi_bin/_gen.lock";
    $filename2 = "$path_to_cgi_bin/_gen.stop";

    if(file_exists($filename) || file_exists($filename2)) {
    print "Generator Status: <font color=\"red\">Down</font>";
    /*Inizio codice rinomina file*/
    if(file_exists($filename)) {
    // oppure $filename_new =$filename.".".$timestamp;
    $filename_new = "$path_to_cgi_bin/lock/_gen.lock.".$timestamp;
    $renamed = rename ($filename, $filename_new);
    if(!$renamed) {
    print "
    Rinomina file _gen.lock fallita.
    \n";
    }
    }

    /*Fine codice rinomina file*/
    }
    else {
    print "Generator Status: <font color=\"green\">Up</font>";
    }

    Cosi rinomino il file se esiste e lo sposto nella dir "lock".
    Ora ho bisogno di una "finezza" mi spiego meglio.
    Tutto cio dovrebbe avvenire solo se il file esiste da almeno un un TOT tempo (in secondi) altrimenti la condizione dovrebbe risultare falsa.
    Come posso procedere?

  5. #5
    vabbè che ho l'alito pesante
    ma non pensavo che si sentisse anche da dietro un monitor

    comunque ho risolto con lo stat del file

  6. #6
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    ciao lg
    anch'io ho bisogno di una cosa del genere:
    in pratica eseguendo l'upload di un file il codice php dovrebbe capire se esiste già nella cartella di destinazione un file uguale e nel caso deve rinominarlo, come posso fare

    sono ancora più incapace di quanto pensi

    vorrei usare il tuo codice ma non riesco a capire come adattarlo alle mie esigenze...

  7. #7
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    function rename_existing_file($filename$dir)
    {
        
    $parts explode('.'$filename);
        
    $newname $parts[0].'-.'.$parts[1];
        
        if( 
    file_exists($dir.$newname))
        {
            return 
    rename_existing_file($newname$dir);
        }
        else
        {
            return 
    $newname;
        }

    Ovviamente dovete controllare prima che $_FILES['upload']['name'] esista nella directory di destinazione. Io aggiungo - come token di differenziazione, ma basta sostituire nella funzione il token che preferite (anche un valore progressivo).



    EDIT: per ora questa funzione non prevede il caso in cui il file abbia dei punti (.) nel nome...ma è facilmente risolvibile.

  8. #8
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    ti ringrazio Il_drugo

    ma questo codice è l'unico presente nel file php o ci va qlcs altro, perchè non vedo definizioni di directory o devo fare una cosa del genere:
    Codice PHP:
    &dir="./quici metto la mia cartella/";
    function 
    rename_existing_file($filename$dir

        
    $parts explode('.'$filename); 
        
    $newname $parts[0].'-.'.$parts[1]; 
         
        if( 
    file_exists($dir.$newname)) 
        { 
            return 
    rename_existing_file($newname$dir); 
        } 
        else 
        { 
            return 
    $newname
        } 


  9. #9
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    function rename_existing_file($filename$dir)
    {
        
    $parts explode('.'$filename);
        
    $newname $parts[0].'-.'.$parts[1];
         
        if( 
    file_exists($dir.$newname))
        {
            return 
    rename_existing_file($newname$dir);
        }
        else
        {
            return 
    $newname;
        }
    }

    rename_existing_file("file.zip""./directory/"); 

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.