[PHP] Errore nome utente scompare dopo logout

Discussione in 'PHP' iniziata da fabry1986, 11 Febbraio 2017.

Tag (etichette):
  1. fabry1986

    fabry1986 Nuovo Utente

    Registrato:
    11 Febbraio 2017
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Salve a tutti sono un principiante del php.. sto costruendo un sito che contiene un blog... sono riuscito a fare la registrazione e il login... poi dal login dovrei riuscire a commentare col username loggato... e ci riesco..
    il problema è che una volta comparso a video il lo user nel blog... quando faccio il logout.. rimane solo il commento ed al posto del nome dello user mi compare una sorta di errore..sono disperato non so come risolvere..... fatemi sapere cosa devo fare.. grazie ancora..

    index.php (BLOG)
    PHP:
    <font color="white">
    <table border="2px" width="960px" cellpadding="30px"id="blog">
    <?php

    include('connect.php');

    $query mysql_query("SELECT * FROM comment WHERE n ORDER BY n DESC");


    while(
    $cicle=mysql_fetch_array($query))

    {
    ?> <tr><td width="160"align="center"  ><p > <?php  echo $_SESSION ['login'][1] ; ?> </p></td><td> <?php echo $cicle['comment'] ;
    ?> </td></tr>
    </table></font>   
    </div>
    connect.php
    PHP:

    <?php

    $db_hostname 
    'localhost';
    $db_username 'root';
    $db_password '';
    $db_name 'fatal';
    mysql_select_db($db_namemysql_connect($db_hostname$db_username$db_password)) or die("Impossibile connettersi.".mysql_error());
    mysql_query("CREATE TABLE IF NOT EXISTS comment (n INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(16)  NOT NULL, comment TEXT  NOT NULL)");

    function 
    clear($var) {
        return 
    addslashes(htmlspecialchars(trim($var)));
    }

    ?>
    PHP:
                                login.php

    <?php
    // Includo la connessione al database

    include('config.php');


    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {
       
        
    // Dati Inviati dal modulo
        
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
        
    $password = (isset($_POST['password'])) ? trim($_POST['password']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
       
        // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
        
    if (!get_magic_quotes_gpc()) {
            
    $username addslashes($username);
            
    $password addslashes($password);
        }
       
        
    // Crypto la password e la confronto con quella nel database
        
    $password md5($password);
       
        
    // Controllo l'utente esiste
         
    $query mysql_query("SELECT id, username FROM users WHERE username = '$username' AND password = '$password' LIMIT 1");  
       
        
    // Se ha trovato un record
        
    if(mysql_num_rows($query) == 1)
        {
            
    // prelevo l'id dal database
            
    $login mysql_fetch_array($query);
           

            
    // Creo una variabile di sessione
           
            
    $_SESSION['login'] = array($login['id'], $login['username']);  
           
           
            
    // reindirizzo l'utente
           
            
    header('Location: index.php');
            exit;
             
        }
        
    // se non esiste da l'errore
        
    else
            die(
    'nome utente o password errati');
           exit;
    }

    ?>

    comment.php

    PHP:
                       <?php
        
    require('connect.php');
            if(isset(
    $_POST['comment'], $_POST['submit'])){
            
    $comment$_POST['comment'];
            
    $submit$_POST['submit'];
       
        }
       
       
       
            if(isset(
    $submit))
            { 
               if(isset(
    $comment))
                {
                   
                    
    $insert=mysql_query("INSERT INTO comment (comment) VALUES ('$comment')");
                    
    header('Location: index.php');
                   
                }
                else
                {
                echo 
    "Please fill out a comment";
               
                exit;
            }   
            }
           
            
    ?>

     
  2. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.291
    Mi Piace Ricevuti:
    40
    Punteggio:
    48
    Località:
    TN
    Ciao, posta l'errore
     
  3. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.020
    Mi Piace Ricevuti:
    68
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao ha ragione criric
    comunque (qìguardando di corsa) un primo errore e nel ptimo script (index)
    cosa è quel
    $query = mysql_query("SELECT * FROM comment WHERE n ORDER BY n DESC") ?
     
  4. fabry1986

    fabry1986 Nuovo Utente

    Registrato:
    11 Febbraio 2017
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    PHP:
    while($cicle=mysql_fetch_array($query))

    {
    ?> <tr><td width="160"align="center"  ><p > <?php  echo $_SESSION ['login'][1] ; ?> </p></td><td> <?php echo $cicle['comment'] ;
    ?> </td></tr>
    </table></font> 
    </div>
    IL vero problema è che non c'è un vero e proprio errore... funziona tutto.. il problema è che quando faccio un commento.. mi compare il nome utente con di fianco il commento.... e fin li è tutto giusto... poi quando faccio il logout.. il nome utente non rimane e mi compare un errore... cmq è questo l'errore.. scusate sono nuovo.. avrei dovuto farlo prima :D
     
  5. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.291
    Mi Piace Ricevuti:
    40
    Punteggio:
    48
    Località:
    TN
    io non ho ancora capito ch errore ti compare.
    Manca il titolo a questa discussione
     
  6. localhost.nicola

    localhost.nicola Utente Attivo

    Registrato:
    11 Dicembre 2015
    Messaggi:
    58
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Sesso:
    Maschio
    Ciao, dove salvi i dati relativi ai post? Ad esempio: il nome dell'utente che scrive il post, l'ora ....
     
  7. Ibernato

    Ibernato Utente Attivo

    Registrato:
    2 Giugno 2016
    Messaggi:
    55
    Mi Piace Ricevuti:
    6
    Punteggio:
    8
    Sesso:
    Maschio
    Il tuo problema è che utilizzi la sessione per stampare l'user. E' normale che quando effettuio il logout la sessione che contiene la user non esiste più. Quindi, invece di utilizzare la variabile sessione, devi fare un ciclo che ti scorre tutta la tabella commenti e stampare le info.
     
  8. maxbossi

    maxbossi Amministratore Membro dello Staff ADMIN MOD

    Registrato:
    25 Febbraio 2003
    Messaggi:
    1.972
    Mi Piace Ricevuti:
    17
    Punteggio:
    38
    Sesso:
    Maschio
    Home Page:
    Esattamente come dice Ibernato. All'atto del logout la sessione dell'utente non è più attiva, quindi le info devi recuperarle dal DB.
     
  9. localhost.nicola

    localhost.nicola Utente Attivo

    Registrato:
    11 Dicembre 2015
    Messaggi:
    58
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Sesso:
    Maschio
    Era proprio quello a cui volevo arrivare io.
    Non puoi gestire una situazione del genere solo con l'usilio delle sessioni.
     
  10. fabry1986

    fabry1986 Nuovo Utente

    Registrato:
    11 Febbraio 2017
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    eh si cmq i dati vengono immagazzinati dal database phpmyadmin...cmq non so quale tipo di ciclo potrei riutilizzare.. come posso fare??
     
  11. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.020
    Mi Piace Ricevuti:
    68
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    potresti fare così. immagino che nella parte di logout ci sia la funzione session_destroy() per eliminare le sessioni per l'accesso
    se è così la commenti e metti l'eliminazione solo della sessione che serve all'accesso
    PHP:
    //......
    //session_destroy();
    unset($_SESSION['login']);
    //.....
    poi nella parte in cui l'utente si logga aggiungi una sessione
    PHP:
    //......
    $_SESSION['login'] = array($login['id'], $login['username']);
    $_SESSION['username'] = $login['username'];
    //.....
    e utilizzi $_SESSION['username'] dove ti serve, ricorda però due cose
    1) dove usi le sessioni ci deve essere session_start()
    2) le sessioni si distruggono comunque quendo esci dal browser e quindi quando rientri anche $_SESSION['username'] è sparita

    quindi probabilmente devi usare i dati del db, ma per sapere come dovresti dire cosa lega quella che penso sia la tabella dei commenti a quella che penso sia la tabella utenti (immagino che tu abbia una tabella commenti e una tabella utenti)
     
  12. fabry1986

    fabry1986 Nuovo Utente

    Registrato:
    11 Febbraio 2017
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    grazie borgo.. il problema è che quando esce dal browser.. l'utente deve rimanere stampato anche se ha fatto il logout.. cmq il problema è che in ho un database ho due tabelle diverse una è per i commenti mentre l'altra.. per la registrazione e il login.. mi sa che non dovrei utilizzare la session.. non so come fare..
     
Sto caricando...

Condividi questa Pagina