[PHP] Errore nome utente scompare dopo logout

fabry1986

Nuovo Utente
11 Feb 2017
7
2
1
37
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_name, mysql_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;
        }   
        }
       
        ?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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") ?
 

fabry1986

Nuovo Utente
11 Feb 2017
7
2
1
37
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
 

Ibernato

Utente Attivo
2 Giu 2016
70
6
8
31
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.
 

maxbossi

Amministratore
Membro dello Staff
ADMIN
MOD
25 Feb 2003
2.025
43
48
www.ikiweb.it
Esattamente come dice Ibernato. All'atto del logout la sessione dell'utente non è più attiva, quindi le info devi recuperarle dal DB.
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Era proprio quello a cui volevo arrivare io.
Non puoi gestire una situazione del genere solo con l'usilio delle sessioni.
 

fabry1986

Nuovo Utente
11 Feb 2017
7
2
1
37
eh si cmq i dati vengono immagazzinati dal database phpmyadmin...cmq non so quale tipo di ciclo potrei riutilizzare.. come posso fare??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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)
 

fabry1986

Nuovo Utente
11 Feb 2017
7
2
1
37
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..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se vuoi far apparire il nome dell'utente dopo che questo è uscito dal browser devi usare i cookie, ti schematizzo:
nella pagina in cui l'utente si logga
PHP:
<?php
setcookie("utente", "0", time()+3600);//questa appena prima o subito dopo session(start) nella pagina in cui l'utente si logga
session_start();
//....
$username=$_POST['username'];
$password=$_POST['passoword'];
$query= "SELECT * FROM utenti WHERE username='$username' AND password='$password'";
$ris=mysqli_query($conn, $query);
if(mysqli_num_rows($ris)>0){
    //l'utente è iscritto e user e pass OK
    $riga=mysqli_fetch_assoc($ris);
    $_SESSION['login']=$riga['username'];
    $_COOKIE['id']=$riga['id'];
    //e rimandi dove vuoi
}else{
    //l'utente non è iscritto e user o pass errati
    //e rimandi dove vuoi
}
?>

poi nella pagina dove ti serve e se l'utente è uscito dal browser (quindi le sessioni non esistono più) utilizzi il cookie
PHP:
<?php
session_start();
if(!isset($_SESSION['login']) && !isset($_COOKIE['id'])){
    //non esiste ne il cookie ne la sessione
    //l'utente non si è mai loggato o si è loggato più di un'ora fa
    //rimandi dove vuoi es alla pagina di log
}else{
    //esiste o la sessione o il cookie o entrambi
    if(isset($_SESSION['login'])){
        //esiste la sessione l'utente non è uscito dal brovser puoi usare la sessione
        echo "ciao ".$_SESSION['login']." benvenuto nel mio sito";
    
    }else{
        //l'utente è uscito non puoi usare la sessione quindi utilizzi il cookie
        if($_COOKIE['id']>0){
            //il cookie ha preso l'id
            //dati di connessione al db
            $id_utente=$_COOKIE['id'];
            //cerchi nel db il nome dell'utente
            $q=mysqli_query($conn,"SELECT username FROM utenti WHERE id=$id_utente");
            $riga=mysqli_fetch_assoc($q);
            echo "ciao ".$riga['username']." benvenuto nel mio sito";
        }else{
            //c'è stato quelche errore il cookie è rimasto 0
            //rimandi dove vuoi
        }
    }
    //ecc........
}
?>
considera che comunque è uno schema che devi mettere a punto e provare
 

fabry1986

Nuovo Utente
11 Feb 2017
7
2
1
37
ho modificato il login.php
PHP:
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 ''
    
    setcookie("utente", "0", time()+3600);//questa appena prima o subito dopo session(start) nella pagina in cui l'utente si logga

//....

$query= "SELECT * FROM utenti WHERE username='$username' AND password='$password'";
$ris=mysqli_query($conn, $query);    // riga 20
if(mysqli_num_rows($ris)>0){         // riga 21
    //l'utente è iscritto e user e pass OK
    $riga=mysqli_fetch_assoc($ris);
    $_SESSION['login']=$riga['username'];
    $_COOKIE['id']=$riga['id'];
    header('Location: index.php');
}else{
    //l'utente non è iscritto e user o pass errati
    //e rimandi dove vuoi
      
         echo "user or pass wrong";
        exit;
         }
 
}
ma mi da' 2 errori
Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Users\Fabry\Desktop\xampp\htdocs\www.flare-manga.com\login.php on line 20

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\Users\Fabry\Desktop\xampp\htdocs\www.flare-manga.com\login.php on line 21
user or pass wrong
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Errore PHP - Notice: Undefined index ... PHP 14
E Errore di lettura php in html PHP 8
A php metodo post jquery non da mai errore jQuery 4
M errore dopo passaggio Php 7.2 PHP 6
L form multipla php sql,errore in inserimento MySQL 0
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
F [PHP]Errore registrazione PHP 8
MarcoGrazia [PHP] Download di file con errore all'interno. PHP 1
M [PHP] WS-Security errore PHP 0
M [PHP] Errore di percorso, file not found PHP 3
ANDREA20 errore php PHP 1
N [PHP] ERRORE: SyntaxError: Unexpected token N in JSON at position 1 PHP 0
Tommy03 Errore invio email con PHP PHP 1
Shyson [PHP] Errore inspiegabile PHP 1
A index.php errore PHP 3
M Errore pagina php 'Cannot detect primary key' PHP 8
Tommy03 [PHP] Errore query selezione avg PHP 0
L [PHP] Errore 410 Gone... PHP 1
A [PHP] errore 404 e invio mai path pagina con link interrotto PHP 2
A [PHP] Errore select dati da db PHP 0
C [RISOLTO][PHP] Errore di sintassi PHP 8
A [PHP] ERRORE QUANDO CAMBIO SLUG NEL CMS e REWRITE PHP 6
Y [PHP] Errore di login dopo aver inserito Codice AdSense PHP 0
C [PHP] Errore "Fatal error: Call to undefined function getTotalUsers()" PHP 2
C [PHP] non trovo l'errore? PHP 3
S [PHP] errore funzione sleep PHP 5
L [PHP] Errore UPDATE su tabella DB PHP 22
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
L [PHP] upload con errore PHP 2
T [PHP] errore unexpected T_LNUMBER che non so interpretare PHP 6
F Form mail php errore invio PHP 5
Matilde1 PHP: errore connessione database PHP 12
M PHP: errore connessione a MySQL PHP 5
E [PHP] Errore Class 'JText' not found CMS (Content Management System) 2
A Errore PHP: Call to a member function on null PHP 5
C PHP errore Fatal Error: Allowed Memory Size of ... Bytes Exhausted PHP 7
C [PHP] PDO prepared statement - select query errore PHP 7
ANDREA20 [PHP] Errore $this->db_connection = new PDO PHP 0
S [PHP] Errore visualizzazione pagina web PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
A [RISOLTO]Errore caricamento file php PHP 21
ANDREA20 [PHP] Errore riga PHP 0
L [PHP] JTable Errore PHP 0
V [PHP] Non riesco a trovare errore PHP 25
M [PHP] Errore nell' assegnazione della variabile $this->id su una funzione PHP 1
Fuego2806 [PHP] Errore 500 Internal Server Error - sito Joomla! Joomla 10
M [PHP] Errore in ciclo foreach PHP 1
asevenx [PHP] Errore tasto submit per invio dati non funziona PHP 5
enzonero Errore di analisi php line 1 PHP 11
localhost.nicola Errore Apache su installazione php\ext - Unable to load dynamic library PHP 0

Discussioni simili