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

    Variabile nella funzione?

    Salve...

    Modificando uno script già pronto sono riuscito a fare in modo di stampare a video il contenuto di una data cartella e permetterne il download.

    Vorrei però che la cartella da cui lo script preleva i dati sia di nome uguale all'username dell'utente ( variabile $username )...

    ho provato ad inserire nello script al posto del nome della cartella la variabile, ma non funziona.

    Come posso fare?

    questo è lo script:

    Richiamo alla funzione
    Codice PHP:
    <?php
    include('function.inc');
    mostra("CARTELLA");
    ?>
    Funzione
    Codice PHP:
    <?php 

    function mostra($path) {
    foreach(
    glob($path."/*") as $elenca) {
    $scrivi str_replace("$path/","",$elenca);
    echo 
    "<a href=\"$elenca\">$scrivi</a>
    "
    ;
    }
    return;
    }

    ?>

  2. #2
    Come direbbe Lino Banfi: "forse non ho afferreto!" ma la mia domanda è: esiste già una cartella per ogni nome di utente del tuo sito??

    Ad ogni modo, in linea puramente teorica, quando un utente si logga inserisce in una form il suo login e la sua password.

    Per cui:
    • passi i valori della form ad uno script tramite $_POST
    • Recuperi il valore di $_POST['login']
    • metti questo valore in una variabile
    • inserisci la variabile nella funzione


    Forse con un po' di codice capisci meglio.
    Codice PHP:
    include('function.inc'); 

    $login $_POST['login'];
    $password $_POST['password'];

    mostra($login); 
    Come dicevo ad inizio risposta, se però la cartella col nome dell'utente non esiste, prima la devi creare.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    dunque spiego un pochino la situazione.

    Ho un sistema di login, questo, prende le informazioni di user e password da due file .DAT. Per ogni pagina che dev'essere protetta inserisco una stringa di include del file protect.php. Se può esser utile, eccolo qui:

    Codice PHP:
    <?php
    $config 
    "conf.php";
    require(
    $config);

    session_start("pageprotect");
    session_register('valid');
    session_register('username');
    session_register('name');

    if(
    $valid!=strrev(soundex(name).md5($username))) {

     
    header("location: $login_page?cmd=unauth&".SID);
     exit;
    }
    else {
     
    header ("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); 
     
    header ("Pragma: no-cache"); 
    }

    function 
    print_name() {
     echo 
    $GLOBALS[name];
    }

    function 
    print_username() {
     echo 
    $GLOBALS[username];
    }

    function 
    print_logout_url() {
     echo 
    $GLOBALS[login_page]."?cmd=logout&".SID;
    }

    function 
    print_first_page_url() {
     echo 
    $GLOBALS[first_page]."?".SID;
    }


    ?>
    Non utilizzo dunque un database. Le cartelle ci sono per ogni utente ( che viene aggiunto manualmente dall'amministratore ).

    Come potrei fare per fare in modo che i file visualizzati con lo script di prima siano proprio quelli dell'utente loggato?

    c'è bisogno che inserisca il codice di qualche altra pagina?

    vi ringrazio dell'aiuto!

  4. #4
    OK, ora ho capito, e confermo quanto scritto nel mio precedente post.
    Quando l'amministratore crea un utente, crea (in automatico o anche a mano) una cartella con il nome dell'utente appena creato.

    Visto che salvi il login in una sessione, non è difficile recuperare in ogni pagina dove ti serve il nome della cartella con tutti i file relativi a quel nome.
    ... ed il gioco è fatto.

    Come utilizzare la funzione che hai postato all'inizio te l'ho giò spiegato. Ti basterà utilizzare $_SESSION in luogo di $_POST.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Grazie mille dell'aiuto, sono riuscito!

    lascio il codice nel caso possa servire a qualcuno in futuro...

    Codice PHP:
    <?php include "protect.php"?>
    <?
    // Directory da mostrare
    $theDirectory "$username";
    if(
    is_dir($theDirectory))
    {
        echo 
    "<table><tr><td>Nome</td><td>Tipo</td><td>Dimensione</td></tr>";
        
    $dir opendir($theDirectory);
        while(
    false !== ($file readdir($dir)))
        {
            
    $type    filetype($theDirectory ."/"$file);
            if(
    $type != "dir")
            {
                echo 
    "<tr><td><a href=\"$username/$file\">$file</a></td>";
                echo 
    "<td>" $type "</td>";
                echo 
    "<td>";
                if(
    $type == "file")
                    echo 
    filesize($file);
                echo 
    "</td></tr>";
            }
        }
        
    closedir($dir);
        echo 
    "</table>";
    }
    else
    {
        echo 
    $theDirectory " non è una 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.