[PHP] Problema visualizzazione nome utente loggato su sito ecommerce

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Ciao, ho un problema con lo sviluppo di un sito ecommerce fatto con bootstrap(il sito comprende anche PHP, JAVASCRIPT, MYSQL), in particolare con la gestione degli utenti dato che una volta che l'utente fa l'accesso, dopo i dovuti controlli, deve visualizzare su ogni pagina del sito il suo username. Per fare ciò sto usando le sessioni, però se ad esempio dalla pagina dell'elenco dei prodotti vado nella pagina del singolo prodotto e subito dopo torno indietro, mi compare il messaggio di errore ERR_CACHE_MISS. Questo errore mi compare solamente se nella pagina dell'elenco dei prodotti c'è il session_start(), però se non lo metto non mi compare il nome utente ma solo l'accedi. Voi sapete per caso come posso risolvere questo problema? Grazie in anticipo
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
In realtà il sessiob_start() lo dichiaro solamente nella pagina che riceve i dati username e password tramite il POST, successivamente dichiaro una sessione, chiamata $_SESSION['logged'] e la inizializzo = false, se l'utente è registrato nel database allora session 'logged' diventa true e attraverso un header ritorno nella home. Nella home faccio il controllo per sapere se session 'logged' è settato, se lo è mi compare il nome utente altrimenti la scritta accedi. Lo stesso identico controllo lo faccio per la pagina dell'elenco dei prodotti, però appunto se vado nella pagina del dettaglio del prodotto e poi torno indietro mi chiede la conferma del reinvio del modulo (ERR_CACHE_MISS). Quando riuscirò a scoprire come mettere il codice direttamente in questi messaggio, magari riuscirò a spiegarmi meglio :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
session_start() deve esserci in tutte le pagine in cui utilizzi le sessioni.
per mettere il codice sulla riga di formattazione del post iconcina "inserisci" -> codice -> incolli il codice e selezioni quale o html o php o code
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao ti schematizzo
pagina di log
Codice:
<?php
session_start();
//.... da qui in poi se ti serve puoi mettere codice html
if($utente_loggato=="SI"){
    $_SESSION['utente']=$username;
}
//....
?>
altre pagine con errrore
PHP:
<htlm>
<?php
    $_SESSION['utente']="pinco";//manca session_start()
?>

PHP:
<htlm><!-- codice html o echo qualcosa -->
<?php
    session_start();
    $_SESSION['utente']="pinco";//session_start() c'è ma viene dopo un output html
?>

pagina senza errori
PHP:
<?php
session_start();
?>
<htlm><!-- codice html o echo qualcosa -->
<?php
    $_SESSION['utente']="pinco";
?>
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Niente da fare, sempre lo stesso errore :(
In pratica il mio sito è strutturato così:
PAGINA FORM LOGIN:
contiene solo il form HTML

PAGINA CONTROLLO LOGIN:
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
PHP:
<?php
    session_start();
?>
<html>
Struttura pagina HTML
<?php
            require_once('config.php'); //richiamo il collegamento del database
     
            $_SESSION['username'] = $_POST['username']; //richiamo le variabili username e password
            $_SESSION['password'] = $_POST['password'];
            $_SESSION['logged'] = false;

UTILIZZO UNA QUERY PER CERCARE IL NOME E LA PASSWORD NEL DATABASE
     
            if(mysql_num_rows($query) == 1) // Se trovo un utente allora ritorna direttamente nella pagina principale altrimenti apparirà un form di errore che richiederà di rifare il login
            {
                $row = mysql_fetch_assoc($query);
                $_SESSION['logged'] = true;
                header('location: home.php');
            }else{
                $_SESSION['logged'] = false;
                echo("<h2 class='section-heading' align='center'>Accedi</h2>
                        <div align = 'center'>
                        <form data-toggle='validate' name='accedi' method='POST' action= 'login.php'>
                                <div class='form-group has-error'>
                                <label class='control-label'>Dati errati o mancanti. Riprova</label>
                                <input class='form-control' style='width: auto;' type='text' placeholder='Username' name='username' size='50'></div>
                                <div class='form-group has-error'>
                                <input class='form-control' style='width: auto;' type='password' placeholder='Password' name='password' size='50'></div>
                                <div class='form-group'>
                                <input class='btn btn-primary' type='submit' value='Accedi'><br> Oppure <br><a href='form_registrazione.php'>Registrati</a></div>
                        </form></div>");
         
            }          
        ?>
</html>
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
PAGINA HOME.PHP:
PHP:
<?php
    require_once('config.php');
    session_start();
?>
<html>
STRUTTURA PAGINA CON ANCHE IL FORM PER LA RICERCA DI UN PRODOTTO
<?php
                if(isset($_SESSION['logged'])) //controllo se è settato la sessione e se lo è comparirà il nome utente altrimenti la scritta accedi
                {
                    echo("<li><a href='form_accedi.php'><i class='glyphicon glyphicon-user'></i> ".$_SESSION['username']."</a></li>");
                 
                }
                else
                {
                    echo("<li><a href='form_accedi.php'><i class='glyphicon glyphicon-user'></i> Accedi</a></li>");
                }
           ?>
</html>

PAGINA ELENCO PRODOTTI:

Il controllo è identico alla pagina home, in questa pagina richiamo la variabile della ricerca tramite post e usando una query seleziono tutti i dati che mi interessano

PAGINA DETTAGLIO PRODOTTO:

Controllo della sessione uguale alla home
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto una cosa, vedo che a $_session['logged'] da o il valore TRUE o FALSE, poi verifichi che la sessione esista, ora se provi questo mini script ti accorgi che non cambia nulla in funzione di true o false
PHP:
<?php
session_start();
//$_session['logged']=FALSE;
$_session['logged']=TRUE;
if(isset($_session['logged'])){
    echo "la sessione esite<br>";
}else{
    echo "la sessione NON esite<br>";
}
?>
l'output è sempre
la sessione è TRUE
sempre sia che tu inizializzi la sessione a true o false
se togli l'isset invece vedrai che l'if funziona secondo che sia true o false
PHP:
<?php
session_start();
$_session['logged']=FALSE;
//$_session['logged']=TRUE;
if($_session['logged']){
    echo "la sessione è TRUE<br>";
}else{
    echo "la sessione è FALSE<br>";
}
?>
verifica che gli errori non derivino da questo errore
stai attento gli errori di logica sono i più insidiosi perchè il codice è sintaticamente corretto, ma il fatto che sia sintatticamente corretto non vuol dire che faccia quello che intendi fargli fare
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Ho provato come mi hai detto, però l'ERROR_CACHE_MISS compare ugualmente. Pacciocando un po sul codice, ho scoperto che forse il problema è dovuto dal fatto che quando visualizzo l'elenco dei prodotti->vado nel dettaglio del prodotto->torno indietro, non mi tiene in memoria la variabile di ricerca
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Nella pagina dell'elenco dei prodotti la parte PHP lo scritta così
PHP:
<?php
                        if(!isset($_SESSION['prod'])) //in teoria servirebbe per controllare se la sessione della ricerca è stata settata
                        {
                            $_SESSION['prod'] = $_POST['ricerca'];
                            $prod = $_SESSION['prod'];
                        }
                        else
                        {
                            $prod = $_SESSION['prod'];
                        }
                        
                        require_once('config.php');
                        
                        /*utilizzo una query*/
                        $query= "SELECT * FROM prodotti WHERE nome LIKE '".$prod."%' OR marca LIKE '".$prod."%';";
                        
                        /*esegue la query scritta prima richiamandola con il nome della variabile*/
                        $risultato= mysql_query($query) or die("Errore mentre recuperavo i dati ".mysql_error());
                        
                        /*conta il numero di righe*/   
                        $righe= mysql_num_rows($risultato);
                        
                        echo("<h4>Risultati riscontrati ".$righe."</h4><br>");
                                                
                        for($i=0; $i<$righe; $i++)
                        {
                            
                            $nome= mysql_result($risultato, $i, 'nome');
                            $prezzo= mysql_result($risultato, $i, 'prezzo');
                            $img= mysql_result($risultato, $i, 'icone');
                            $codice= mysql_result($risultato, $i, 'cod_prod');
                            
                            echo(""); //Visualizzo ogni prodotto con il link che porta alla pagina del dettaglio
                        }
                        
                        //disconnetto il database
                        mysql_close($connessione);           
                    
                    ?>
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
La mia è solo un'ipotesi. Qualcuno di voi conosce un altro modo per memorizzare la variabile di ricerca? :)
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Il session_start lo richiamo all'inizio di tutta la pagina, fuori dall'HTML e ovviamente dentro il PHP :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per caso nella pagina di dettaglio hai qualcosa che elimini la/le sessione/1?
comunque prova ad aggiungere un var_dump e verifica cosa riporta non quando accedi alla pagina, ma quando torni indietro dalla pagina di dettaglio
PHP:
<?php
var_dump($_SESSION['prod']);//cosa ti riporta quando torni indietro dal dettaglio

if(!isset($_SESSION['prod'])) //in teoria servirebbe per controllare se la sessione della ricerca è stata settata
    {
        $_SESSION['prod'] = $_POST['ricerca'];
        $prod = $_SESSION['prod'];
    }
//eccetera....
?>
 

Alucard

Nuovo Utente
18 Feb 2017
13
0
1
27
Si si. Ma secondo te se nella parte del codice dove richiamo la variabile di ricerca, al posto della sessione utilizzo un cookie funzionerebbe?
 
Discussioni simili
Autore Titolo Forum Risposte Data
N ciao a tutti ho un problema con la visualizzazione delle pagine in php PHP 1
T Problema visualizzazione pagine php. Web Server 3
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Problema checkout carrello php PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
M Problema con php per calcolo costo percentuale PHP 7
O Problema Formmail in PHP su Aruba PHP 0
WebmasterFioriniAndrea Chat e php [problema] PHP 3
L [PHP] Problema con Telegram PHP 1
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
K Help: problema con uno script di booking in php! PHP 0
A [PHP] Problema query insert [RISOLTO] PHP 14
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
M [PHP] Problema con query select PHP 2
L Problema jQuery validation AJAX (PHP 7) PHP 6
L Problema funzione mail() PHP PHP 3
S [PHP] Problema con istruzione "use" PHP 23
A Problema PHP PHP 1
T [php] problema creazione query select-where PHP 5
M [PHP] problema if PHP 3
L [PHP] Problema su codice o server PHP 5
T [PHP] problema maggiore e minore PHP 4
Cosina [PHP] fwrite problema con le parole accentate PHP 9
M [PHP] Problema search form PHP 3
F [PHP] Problema con number_format PHP 3
L [PHP] problema count messo in una funzione. PHP 1
P [PHP] Progettino CRUD di esercitazione. Problema su $_FILE. PHP 9
trattorino [PHP] problema entrata immagini insert PHP 1
C Apache Cordova problema con php Programmazione 1
trattorino problema raccapricciante php conteggio query PHP 4
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
F [PHP] Problema con array multidimensionale PHP 4
F Problema con pagine login in PHP PHP 2
M [PHP] Problema script ricezione e invio posta... PHP 1
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
L [PHP] Problema Script 'Not Found' PHP 4
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5

Discussioni simili