• User

    dark devo avere combinato un pasticcio... :bho:

    per renderlo più fruibile ho creato questo form:

    [php]

    <form name="cancella" action="cancella.php" method="post">

    <TABLE BORDER="0" ALIGN=Center>
    <TD>
    <FONT COLOR="#000000" FACE="Century Gothic, helvetica, arial, sans-serif" SIZE="2"> Cancella files </font>
    </TD>

    <TD>
    <input type="text" name="files" size="20">

    </TD>
    <TR>
    <TD>
    <FONT COLOR="#000000" FACE="Century Gothic, helvetica, arial, sans-serif" SIZE="2"> Azione</font>
    </TD>

    <TD>
    <input type="radio" name="azione" value="0" checked> Nome esatto <BR>
    <input type="radio" name="azione" value="1" > Che inizia per...

    </TD>
    <TR>
    <TD COLSPAN="2" ALIGN=Center><BR>
    <input type="submit" value="elimina">
    </TD>

    </table>
    </form>

    [/php]

    poi ho preso il tuo codice al quale ho apportato qualche variazione (e credo che il pasticcio sia proprio qui)...

    [php]
    <?php

    $files=$_POST['files'];
    $azione=$_POST['azione'];
    $car = 'dir/';

    // Opendir è la funzione per aprire la cartella
    $handle = opendir($car);

    if ($azione==0) {

    unlink($car.$files);

    } else {

    $lunghezza = strlen("$files");

    // Ciclo la cartella
    while (false !== ($files = readdir($handle)))
    {
    // Stampo i file
    if ($files != '.' && $files != '..')
    //substr($files, 0, $lunghezza) Prende i primi x caratteri del nome e li confronta
    if(substr($files, 0, $lunghezza)=='nomefile')
    unlink($car.$files) ;

    }
    }

    ?>
    [/php]Con azione uguale a 0 decido di eliminare il nome del file esatto....e funziona.

    Se diverso da zero conto i caratteri e sostituisco il numero al "tuo 8"...

    ....dove ho sbagliato? :mmm:


  • ModSenior

    =='nomefile' dovresti mettere la variabile con il nome...


  • User

    ...marò che sono 'gnurante!!!

    ...tutto risolto dando un altro nome alla variabile postata... :arrabbiato:

    ecco lo script funzionante:

    [php]
    <?php

    $nome=$_POST['nome'];
    $azione=$_POST['azione'];
    $car = 'dir/';

    // Opendir è la funzione per aprire la cartella
    $handle = opendir($car);

    if ($azione==0) {

    unlink($car.$nome);

    } else {

    $lunghezza = strlen($nome);

    // Ciclo la cartella
    while (false !== ($files = readdir($handle)))
    {
    // Stampo i file
    if ($files != '.' && $files != '..')
    //substr($files, 0, $lunghezza) Prende i primi x caratteri del nome e li confronta
    if(substr($files, 0, $lunghezza)==$nome)
    unlink($car.$files) ;

    }
    }

    ?>
    [/php]
    ....grazie infinite!! :ciauz:


  • ModSenior

    Prego 😄


  • User

    Ciao ragazzi,

    dopo mille prove finalmente ho trovato uno script ftp che funziona egregiamente.

    Vi risparmio il form e vi incollo solo il codice che lo processa:

    [php]

    <?PHP

    $nome_file = $_REQUEST['nome_file'];

    $ftp_server = $_REQUEST['server'];

    //esempio indirizzo ip del sever

    $ftp_username="";
    $ftp_password="
    ";
    // stabilisco la connessione al server ftp
    $ftp_connessione = ftp_connect($ftp_server);
    // effetto login sul server
    $login = ftp_login($ftp_connessione, $ftp_username, $ftp_password);
    // controllo se la connessione ha avuto buon fine

    if(!$ftp_connessione || !$login){
    echo "Connessione fallita!";
    } else {

    $file_da_scaricare = "cartella_remota/" . $nome_file;

    $dove_scaricare = "cartella_locale/" . $nome_file . ".txt";
    $download = ftp_get($ftp_connessione, $dove_scaricare, $file_da_scaricare, FTP_BINARY);

    // controllo se download andato a buon fine

    if (!$download) {
    echo "Si è verificato un errore durante il download!<br>";
    } else {
    echo "Download avvenuto con successo e disponibile nella cartella <a href=ftp>FTP</a><br>";
    }
    // chiudo connessione FTP
    ftp_quit($ftp_connessione);
    }
    ?>

    <font face="Courier New" size=2 color="#000000">

    <pre>

    <?php

    $textarray=file($dove_scaricare);

    for ($i = 0; $i+1 <= sizeof($textarray); $i++) {

    echo $textarray*;

    }
    ?>

    </pre>

    </font>

    [/php]Tutto fila liscio fin quando conosco esattamente il nome del file.

    Avrei la necessità invece di poter scaricare anche files dei quali non conosco il nome per intero, ma solo come iniziano, dato che il sistema che salva i files sul server li chiama con una prima parte (a me nota) seguita da *n *caratteri random per evitare che gli stessi vengano sovrascritti.

    Ho provato a riadattare la funzione che mi aveva suggerito Dark in questo post:

    giorgiotave.it/forum/php-mysql/91983-unlink.html

    Ma dopo qualche tentativo dall'esito disastroso sono stato costretto a desistere (soprattutto per non fare danni).

    Qualcuno di voi saprebbe aiutarmi?

    Riassumendo mi servirebbe qualcosa che mi consenta di fare il download di "nomefile"***

    :ciauz:


  • User

    Ho trovato la funzione ftp_nlist che dovrebbe fare al caso mio...

    [php]$list=ftp_nlist($conn_id, "$dir/*.txt");[/php]...domani ci gioco un po' e casomai vi faccio sapere...'notte!


  • User Attivo

    Amici, leggetevi la funzione glob() di php 😉

    Fatemi sapere... 😉

    Jeeves


  • User

    Niente, non ci sono riuscito. :bho:

    Neanche con glob...non riesco proprio a farlo funzionare una volta collegato tramite ftp. :arrabbiato:

    Consigli!?


  • User Attivo

    Se ti serve cancellare file tipo file.* fai una più o meno così:

    [php]
    $files = glob('file.*');

    foreach($files as $file) {
    unlink($file);
    }
    [/php]

    :gthi:


  • User

    Jeeves, ci deve essere stato un qui pro quo...

    La cancellazione del file l'ho risolta grazie al preziosissimo aiuto di Dark.

    Avevo aperto un altro 3d intitolato "Funzione ftp: scaricare file che "inizia per..." citando quello nel quale stiamo scrivendo dato che per certi versi la problematica era simile.

    Il problema è con l'ftp, non so come le due discussioni si siano fuse: se per mano di un moderatore o in automatico non so dire (tra l'altro mi pare pure sbagliato), fatto sta che ora siamo qui a scrivere su un 3d che c'entra poco...