• User

    Problema con upload di file

    Salve a tutti innanzitutto!!!!!!
    Spero che qualcuno possa aiutarmi a risolvere il mio problema!!!!
    Io ho un sito che ha un'area pubblica e un'area privata( corrispondente alla intranet)!!!!
    Nella intranet c'è possibilità di fare upload di doc!!
    L'upload può essere di tipo pubblico e i doc confluiscono nella cartella upload_pubblica, e di tipo privata e i doc confluiscono nella cartella upload_privata!!!!
    Io ho impostato che nell'area intranet(area privata) solo gli amministratori possono vedere anche i doc pubblici gli altri hanno la visione dei soli doc privati!!!
    Il problema è questo: in pratica io amministratore sui doc pubblici che visualizzo nella intranet riesco a cancellarli e modificarli , ma se provo a cliccare su i documenti nn me li apre!!!!!!!
    Premettendo che da molto poco mi sono avvicinato al linguaggio php, vi chiedo innanzitutto se sono stato abbastanza chiaro????
    Seconda cosa vi passo il codice sorgente e per favore vi chiedo di aiutarmi, sono disperato!!!!
    <?
    session_start();
    if (!isset($username))
    {
    header ("Location:http:/......../intranet.php");
    exit;
    }
    ?>
    <?
    if (!($esegui))
    {
    $tip_filtro="nessun ordinamento";
    $tip_filtro2="nessuna selezione";
    }
    if ($username=="")
    {
    session_unregister("username");
    session_unregister("password");
    session_destroy();
    die ("

    <CENTER><font face = "verdana" color= "red" size=3>Attenzione! Il campo username non puo'
    essere vuoto.
    Torna indietro e immetti il tuo username.
    </font>

    <a href="../intranet.php"><font face = "verdana" color="#004f9d" size=1>indietro..</font></a></CENTER>");
    }

    /* definisco la visibilità del documento /
    if ($visibilita=="privato")
    {
    $file_dir ="upload_privata";
    $file_url = "./upload_privata";
    }
    if ($visibilita=="pubblico")
    {
    $file_dir = "upload_pubblica";
    $file_url = "./upload_pubblica";
    }
    else // (
    )
    {
    /* connessione al db */
    include ("connessione_db.inc");

    $wordina = "";
    $wstringa = "";
    $wcriterio = "";
    $query= "select password,tipo, contatore from utenti where username='$username'";
    $risultato = mysql_query($query);
    if (mysql_num_rows($risultato)==0)
    {
    session_unregister("username");
    session_unregister("password");
    session_destroy();
    die ("

    <CENTER><font face = "verdana" color= "red" size=3>Attenzione! Lo username immesso non e'
    registrato come utente valido.
    Torna indietro e prova con un altro username.
    </font>

    <a href="../intranet.php"><font face = "verdana" color="#004f9d" size=1>indietro..</font></a></CENTER>");
    }
    $riga = mysql_fetch_array($risultato);
    $db_password = $riga["password"];
    if (!($password == $db_password))
    {
    session_unregister("username");
    session_unregister("password");
    session_destroy();
    die ("

    <CENTER><font face = "verdana" color= "red" size=3>**Password errata!
    **</font>

    <a href="../intranet.php"><font face = "verdana" color="#004f9d" size=1>indietro..</font></a></CENTER>");
    }
    else { //(+)
    if (!isset($bandierina)) {
    $contatore = $riga["contatore"]+ 1;
    //$q="update utenti set contatore='$contatore' where username='$username'";

    //23-03-2004:
    $q="update utenti set contatore='$contatore', online='si' where username='$username'";

    mysql_query($q);
    $q="select contatore from utenti";
    $r=mysql_query($q);
    $tot=0;
    while($rec=mysql_fetch_array($r)) {
    $tot = $tot + $rec["contatore"];
    }
    $bandierina=1;
    session_register("bandierina");
    session_register("tot");

    //inseriamo l'utente loggato con successo nella tabella useronline
    $zeit = time(); // $zeit �il timestamp corrente
    $ip = getenv(REMOTE_ADDR);
    $file = $PHP_SELF;
    $result=mysql_query("INSERT INTO useronline VALUES ('$zeit','$ip','$file','$username')");}?>
    <tr>
    <table cellspacing= "3" cellpadding= "1" border= "0" align= "CENTER" width="100%" >
    <tr>

    <form enctype= "multipart/form-data" action= "<?php print $PHP_SELF?>" method= "POST" >
    <tr>
    <td align="left" width="100">
    <font size=-3>ordina per:</font>
    </td>
    <td align= "left">
    <select name= "tip_filtro" >
    <option value= "nessun ordinamento" <? if ($tip_filtro == "nessun ordinamento") echo "selected"; ?>> - nessun ordinamento</OPTION>
    <option value= "autore" <? if ($tip_filtro == "autore") echo "selected"; ?>> - autore</OPTION>
    <option value= "data" <? if ($tip_filtro == "data") echo "selected"; ?>> - data</OPTION>
    <option value= "dim" <? if ($tip_filtro == "dim") echo "selected"; ?>> - dimensione</OPTION>
    </SELECT>
    </form> </table>
    </td><td align="right" >
    <table bgcolor="white" width="100%" height="100%"><tr>
    <td bgcolor="#ffffcd" align="center" height="100%" cellpadding="5" cellspacing="5">
    <table><tr><td></td></tr></table></td></tr></table>
    </td></tr></table>
    <?/* fine parte controllo sull'autenticazione utente:fino a qui $password==$db_password*/
    $db_tipo=$riga["tipo"];
    if (($db_tipo == "amministratore")){
    // 1=1 serve perchè non mi dia errore l'istruzione successiva all'if
    $wstringa = "SELECT idDocumento,nfile, titolo, tipoDoc, date_format(data_doc,'%d/%m/%Y') as data_doc, dim, owner FROM documenti where 1 = 1 ";

    } else {
    $wstringa = "SELECT idDocumento,nfile, titolo, tipoDoc, date_format(data_doc,'%d/%m/%Y') as data_doc, dim, owner FROM documenti where visibilita = 'privato' ";

    }
    if ($tip_filtro2 != "nessuna selezione")
    $wstringa = $wstringa." and tipoDoc='$tip_filtro2'";
    if (($tip_filtro != "nessun ordinamento")&($tip_filtro != "autore"))
    {if ($tip_filtro !="data")
    $wstringa = $wstringa." order by '$tip_filtro'";
    //else $wstringa = $wstringa." order by documenti.data";
    else $wstringa = $wstringa." order by documenti.data_doc";
    if ($tip_filtro =="data") $wstringa = $wstringa." ASC";
    $wcriterio="Elenco documenti";
    $wcriterio = "$wcriterio (ordinati per "$tip_filtro " )";
    $wordina = mysql_query($wstringa);
    echo ''.$wcriterio.'
    ';
    $num_rows = mysql_num_rows ($wordina);}elseif ($tip_filtro == "nessun ordinamento"){$wcriterio="Elenco documenti";$wordina = mysql_query($wstringa);
    $wcriterio = "$wcriterio (ordinati per "$tip_filtro " )";
    echo ''.$wcriterio.'
    ';
    $num_rows = mysql_num_rows ($wordina);}
    elseif ($tip_filtro == "autore"){
    // query per determinare gli idAutori ordinati per cognome:
    $queryOrdAut="select idAutore from autori order by cognomeAutore";
    $risulOrdAut=mysql_query($queryOrdAut);
    $wcriterio="Elenco documenti";
    $wcriterio = "$wcriterio (ordinati per "$tip_filtro " e ripetuti per ogni autore)";
    echo ''.$wcriterio.'
    ';$wordina=mysql_query($wstringa);
    $num_rows = mysql_num_rows ($wordina);}
    echo '<table border=0 cellpadding=2 cellspacing=1 align= "center" bgcolor= "#FFFFFF" width= "100%">'; // tabella del numero documenti e del numero di accessi alla pagina
    echo '<tr bgcolor= "#FFFFcd"><th align=left><font color= orange size=2>Attualmente ci sono '.$num_rows.' documenti in archivio</font></th>
    <th align=right><font color="#bebebe" size=1>'; echo date("F j, Y, g:i a");echo ' |</font>
    <font color="#bebebe" size=1>numero accessi alla area intranet dal 01/04/2004:</font>
    <font color="#004f9d" size=1>**';

    echo ' - '.$tot.' - ';
    echo '</font></th></tr>';
    echo '</table><hr size= "0">'; //fine tabella del numero documenti e del numero di accessi alla pagina
    if ($db_tipo == "amministratore")
    {
    $campi=array(' titolo ',' autori ',' tipo ',' data ',' dim ','');
    $start=0; $end=4;
    }
    else
    {
    $campi=array(' titolo ',' autori ',' tipo ',' data ',' dim ');
    $start=0; $end=3;
    }
    echo'<table border=0 cellpadding=2 cellspacing=4 width = "100%" align="center">
    <tr bgcolor="#ebebeb">';// tabella dei documenti
    for ($i=$start;$i<=$end;$i++)
    {
    echo'<td align="center" bgcolor="#ebebeb">
    <font color ="004f9d">'.$campi*.'</font></td>';
    }
    echo '<td align="center" bgcolor="#ebebeb">
    <font color ="004f9d">'.$campi*.'</font>**</td></tr>';
    if ($tip_filtro != "autore") {
    // determino il contenuto della tabella documenti e scansiono riga per riga:
    while ( $a_row = mysql_fetch_array( $wordina ) )
    {
    $visibilita = $a_row["visibilita"];
    if ($visibilita=="privato")
    {
    $file_url = "./upload_privata";
    }
    if ($visibilita=="pubblico")
    {
    $file_url = "./upload_pubblica";
    }

    // determino l'insieme degli idAutore per il fissato idDocumento dalla tabella documentoAutori:
    $queryIdAutori = "select idAutore from documentoAutori where idDocumento='$a_row[idDocumento]'";
    $risIdAutori = mysql_query($queryIdAutori);
    if ($a_row[dim] >= 1000) $dimkb = intval ( $a_row[dim] / 1024 ) ; /* converto la dimensione da byte in kb e prendo l'intero */
    else $dimkb = $a_row[dim];
    echo'<tr>';
    echo'<td align=left>'."[url='$file_url/$a_row[nfile]']".'<font color = "red">'.$a_row[titolo].'</font></td>';
    //echo'<td align=left>'.$a_row[nfile].'</td>';
    echo '<td align=left>';
    $virgola=0;

    while ($a_row2 = mysql_fetch_array($risIdAutori)) {
    $queryAutore="select nomeAutore, cognomeAutore from autori where idAutore='$a_row2[idAutore]'";
    $risAutore=mysql_query($queryAutore);
    $nome=(mysql_fetch_array($risAutore));
    if ($virgola!=0) echo',';
    echo ' ';
    echo $nome[nomeAutore].' '. $nome[cognomeAutore] ;
    $virgola++;
    }
    echo '</td>';
    echo'<td align=left>'.$a_row[tipoDoc].'</td>';

    //echo'<td align=left>'.$a_row[data].'</td>';
    echo'<td align=left>'.$a_row[4].'</td>';

    echo'<td align=center width=100>('.$dimkb; if ($a_row[dim] >= 1000) echo' kb'; else echo ' b'; echo')</td>';
    if (($db_tipo == "amministratore") || ($a_row[owner]==$username)) echo '<td align="center">'."".'</td>';
    if (($db_tipo == "amministratore") || ($db_tipo == "redattore")) echo '<td align="center">'."".'</td>';
    echo '</tr>';
    }
    echo'</table>

    '; //fine tabella dei documenti
    } else { // (') tutti gli altri ordinamenti tranne che autore
    while ($rigaOrdAut=mysql_fetch_array($risulOrdAut)) {// (?)

    $queryOrdAut2="select idDocumento from documentoAutori where idAutore='$rigaOrdAut[idAutore]'";
    $risulOrdAut2=mysql_query($queryOrdAut2);
    while ($rigaOrdAut2=mysql_fetch_array($risulOrdAut2)) {

    //$wstringa = "SELECT nfile, titolo, tipoDoc, date_format(data,'%d/%m/%Y') as data, dim, owner FROM documenti ";
    $wstringa = "SELECT nfile, titolo, tipoDoc, date_format(data_doc,'%d/%m/%Y') as data_doc, dim, owner FROM documenti ";

    if ($tip_filtro2 == "nessuna selezione")
    $wstringa=$wstringa." where idDocumento='$rigaOrdAut2[idDocumento]'";
    else $wstringa=$wstringa." where idDocumento='$rigaOrdAut2[idDocumento]' and tipoDoc='$tip_filtro2'";
    $wordina = mysql_query($wstringa);
    while ($a_row = mysql_fetch_array( $wordina )) {
    $queryIdAutori = "select idAutore from documentoAutori where idDocumento='$rigaOrdAut2[idDocumento]'";
    $risIdAutori = mysql_query($queryIdAutori);
    $numeroAutori=mysql_num_rows($risIdAutori);
    if ($a_row[dim]>=1000) $dimkb = intval ( $a_row[dim] / 1024 ) ; /* converto la dimensione da byte in kb e prendo l'intero /
    else $dimkb = $a_row[dim]; // lascio la dimensione in byte
    echo'<tr>';
    echo'<td align=left>'."[url='$file_url/$a_row[nfile]']".'<font color = "red">'.$a_row[titolo].'</font></td>';
    //echo'<td align=left>'.$a_row[nfile].'</td>';
    echo '<td align=left>';
    if ($numeroAutori==1) {
    $virgola=0;
    while ($a_row2 = mysql_fetch_array($risIdAutori)) {
    $queryAutore="select nomeAutore, cognomeAutore from autori where idAutore='$a_row2[idAutore]'";
    $risAutore=mysql_query($queryAutore);
    $nome=(mysql_fetch_array($risAutore));
    if ($virgola!=0) echo',';
    echo ' ';
    echo $nome[nomeAutore].' '. $nome[cognomeAutore] ;
    $virgola++;
    }
    } else {
    $queryAutore="select nomeAutore, cognomeAutore from autori where idAutore='$rigaOrdAut[idAutore]'";
    $risAutore=mysql_query($queryAutore);
    $nome=(mysql_fetch_array($risAutore));
    echo ' ';
    echo $nome[nomeAutore].' '. $nome[cognomeAutore] ;
    }
    echo '</td>';
    echo'<td align=left>
    '.$a_row[tipoDoc].'*</td>';

    //echo'<td align=left>'.$a_row[data].'</td>';
    echo'<td align=left>'.$a_row[data_doc].'</td>';

    echo'<td align=center width=100>('.$dimkb;
    if ($a_row[dim]>=1000) echo ' kb';
    else echo ' b';
    echo ')</td>';
    if (($db_tipo == "amministratore") || ($a_row[owner]==$username))
    echo '<td align="center">'."".'</td>';
    if (($db_tipo == "amministratore") || ($db_tipo == "redattore"))
    echo '<td align="center">'."".'</td>';
    echo '</tr>';
    }// fine while (?)
    } // fine else (')
    }
    echo'</table>

    '; //fine tabella dei documenti
    }
    }// fine else (+)
    ?>

    </body>
    </html>
    <?
    }// fine else (*)
    ?>
    il codice è un tantino modificato xkè troppo lungo!!!
    Vi ringrazio anticipatamente!!!!
    Grazie!!!!!!!!


  • User Attivo

    ciao mikys, benvenuto

    prima di guardare tutto il codice, cerca di spiegare meglio il problema. In che senso non ti apre i doc?
    l'output è corretto?


  • Super User

    Il titolo non è a norma... TI prego la prossima volta di metterne uno piu' consono. Ciao


  • Super User

    ciao,
    non vorrei sembrare scorbutico ma hai visto quanto è lungo il codice che hai postato?
    le persone (compresi i moderatori) cercano di aiutare chi fa domande in modo del tutto spontaneo e non retribuito, solo per il piacere di un "grazie".

    Se questo però comporta studiare per più di un'ora il codice di un'altra persona alla ricerca di un possibile errore o magari di una svista, diventa eccessivo non trovi?

    prova ad analizzare tu il tuo codice, estrapola solo le righe che pensi possano generare l'errore e contestualizzale per permettere agl'altri di capire ed aiutarti.

    per risolvere un problema di upload capisci anche tu che il codice necessario per la gestione delle sessioni, per il login, per l'accesso al database sono assolutamente inutili.

    tu che conosci il tuo codice lo vedi a colpo d'occhio, un'altra persona deve interpretare e capire quello che c'è scritto per arrivare forse alle righe che servono.

    io onestamente quando sono arrivato ai parametri di connessione al db mi sono stufato.

    spero tu non fraintenda il mio discorso e lo prenda nel verso giusto ovvero come un consiglio 🙂

    :ciauz: