Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema sessione php

  1. #1

    Problema sessione php

    Ho creato uno script php per caricare file in una cartella con il nome dell'utente.
    Come suggeritomi da un amico ho creato la sessione, ho memorizato nella sessione il nome utente, con la funzione echo stampo il contenuto della sesione ma se vado ad agiornare la pagina il valore della sessione scompare come mai?
    file da cui ricevo i dati dal form
    Codice PHP:
    <?php session_start();?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
    <?php
    $va_user
    =$_POST['camp_user'];
    $val_pass=$_POST['camp_pass'];
    $va_pass=md5($val_pass);
    //$ses=$_SESSION['utente']=$va_user;
    $_SESSION['utente']=$va_user;
    $connemysql_pconnect('localhost''root''miky25');
    mysql_select_db('tutorial'$conne);
    $query_mysql=mysql_query("SELECT * FROM `user` WHERE `Username` = '$va_user' AND `Password` = '$va_pass'");
    $numerorighe=mysql_num_rows($query_mysql);
    if(
    $query_mysql) { 

    while(
    $row01=mysql_fetch_row($query_mysql)) {
    $ID=$row01[0];
    $Campo01=$row01[1];
    $Campo02=$row01[2];

    //echo "La riga $IDRichiesto contiene i seguenti campi: $Campo01 $Campo02
    ";

    }

    echo 'Login ok';
    echo 
    $_SESSION['utente'];
    echo '
    <form action="
    controllo.php" method="post" enctype="multipart/form-data">
    <input type="
    file" name="upfile">
    <input type="
    hidden" name="MAX_FILE_SIZE" value="10000">
    <input type="
    submit" value="Invia il file">
    </form>
    ';

    // QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
    // DI PHP PRECEDENTI ALLA 4.1.0
    if(!isset(
    $_FILES)) $_FILES = $HTTP_POST_FILES;
    if(!isset(
    $_SERVER)) $_SERVER = $HTTP_SERVER_VARS;

    /********************* VARIABILI DA SETTARE ********************/
    // Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
    $upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/ess_php/upload/new/upload/";

    // Eventuale nuovo nome da dare al file uploadato
    $new_name = "";

    // Se 
    $new_name è vuota, il nome sarà lo stesso del file uploadato
    $file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

    if(trim(
    $_FILES["upfile"]["name"]) == "") {

    die("
    Non hai indicato il file da uploadare !");

    }

    if(@is_uploaded_file(
    $_FILES["upfile"]["tmp_name"])) {

    @move_uploaded_file(
    $_FILES["upfile"]["tmp_name"], "$upload_dir/".$va_user."/$file_name") 
    or die("
    Impossibile spostare il filecontrolla l'esistenza o i permessi della directory dove fare l'upload.");

    } else {

    die("
    Problemi nell'upload del file " . $_FILES["upfile"]["name"]);

    }

    echo "L'
    upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";
    } else { echo "
    Login errata"; }


    ?>
    <body>

    </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    lo script è logicamente (in senso tecnico) errato... usi i valori del form senza controllare se è stato inviato e sovrascrivi la variabile di sessione con tale valore anche se uno non digita nulla... devi avere qclsa come:

    Codice PHP:
    if (isset($_SESSION['utente'])) {
      
    // ... già settata, utente già loggato: usa questo valore
    } else {
      if (isset(
    $_POST[...])) {
        
    // form inviato: leggi i dati e verifica
      
    } else {
        
    // stampa il form
      
    };
    }; 

  3. #3
    come diventerebbe il codice? sono agli inizi, ho letto la guida su html.it e mi sto esercitando

  4. #4
    La funzione $_POST['camp_user'] prende i dati mandati (ad esempio) da un form. Se riaggiorni la pagina senza inviare i dati del form, la variabile sarà vuota perciò verrà sovrascritta vuota.

    Quindi dovrai fare un controllo che se la variabile $_SESSION è già settata (isset()) non dovrai scriverla.

  5. #5

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.