Aiuto per le sessioni

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Ho un nuovo problema. Ho creato un sito con la registrazione, con l'accesso di autenticazione (username & password), efino a qui tutto ok. Mi riconosce perfettametnte l'utente che si connette, gli dice benvenuto pincopallino. Poi c'è un file chiamato benvenuto.php che ha tre require. I require servono per chiamare la connessione al db, la visualizzazione della data e il nome del sito, e il terzo require serve per proteggere la pagina, se non sei loggato. Fino a qua tutto bene. Piccola premessa, prima si visualizzava Benvenuto superpippo (ossia lo username), poi mi sono reso conto che non era molto elegante e ho chiesto aiuto per visualizzare il nome reale dell'utente. Quindi non più "benvenuto superpippo", ma "benvenuto pippo (nome)". Nella pagina di benvenuto mi sono scordato di mettere anche un tastino "logout". E l'ho messo. Ma non riesco a capire il perchè non visualizza il benedetto tastino "logout". Una cosa sola mi è chiara, se tolgo il richiamo di paginaprotetta.php visualizza il tastino ma non la frase di "il benvenuto pipppo". Come posso risolvere ????? Posto qua il codice, se qualcuno mi può dare una mano grazie.

PHP:
LOGIN CON VISUALIZZAZIONE NOME:
========================================

<?php

require_once("connetti.php");
require_once("data.php");

session_start();

if(isset($_SESSION['utente'])) {
    $username =$_SESSION['utente'];
    $qry= "select * from utenti where username = '".$username."'";

    $result = mysql_query($qry)or die (mysql_error());
    $riga = mysql_fetch_assoc($result);
    echo "<center> <h1> <br> Benvenuto ".$riga['nome']."!";


}
else
{
	if(isset($_POST['log']))
	{
                error_reporting(E_ALL ^ E_NOTICE);

		$username = $_POST['username'];
		$password = mysql_real_escape_string(md5($_POST['password']));

                $result = mysql_query("SELECT * FROM utenti  WHERE username = '$username' AND password = '$password' ")or die (mysql_error());
                $controllo = mysql_num_rows($result);
                if($controllo > 0)
                {$_SESSION['utente'] = $username;
			header("location:benvenuto.php");
		}
		else
		{
                    	echo " <h1> <center> <br> La password e/o lo username sono sbagliati. Riprovare grazie !!! </center> </h1>";
		}
	}

	else{

		echo "<form action='' method='POST'>

                <center>
                <br> <br> <br> <br>

		Username: <input type='text' name='username'> <br> <br>
		Password: <input type='password' name='password'> <br> <br>
		<input type='submit' name='log' value='Loggati'>
                <input type='submit' name='reg' value='Registrati'>
                </center>
                </form>";
	}

}
$userreg = mysql_num_rows(mysql_query("SELECT * FROM utenti"));

         echo "<b> <br> <br>".$userreg."</b> utenti registrati</div>";
  if(isset($_POST['reg']))
	{
      header("Location:iscrizione2 - (funziona).php");
  }
?>


PAGINAPROTETTA.PHP:
========================

<?php

session_start();

session_regenerate_id(TRUE);

// Controllo accesso

if (!isset($_SESSION['utente'] ) )
{
header('location:login.php');
exit;
}
else
{
//echo "Benvenuto ".$_SESSION['$login'];
}

?>

BENVENUTO.PHP
=================

<?php

require_once("connetti.php");
require_once("paginaprotetta2.php");

?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

    <center>
        <form>
    <input type="submit" name="out"  id="out" value="Logout" >
</form>
    </head>
    <body>
        <?php
        // put your code here
        ?>
    </body>
</html>

Aspetto vostri consigli grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
partiamo da quello che mi salta subito all'occhio
in quella che chiami BENVENUTO.PHP
perchè metti il form fuori dai tag body?
poi a cosa punta il form? e a che ti serve il pulsante logout?
poi (anche se talvolta può andare bene) metti (in tutte) session_start() alla prima riga le inclusioni dopo.
poi se vuoi visualizzare il nome perche non passi in sessione anche quello? così lo visualizzi dove vuoi
PHP:
<?php
//.........
$result = mysql_query("SELECT * FROM utenti  WHERE username = '$username' AND password = '$password' ")or die (mysql_error()); 
if(mysql_num_rows($result) > 0){
	$riga=mysql_fetch_array($result);
	$_SESSION['nome']=$riga['nome'];//poi questa sessione la usi dove vuoi
	$_SESSION['utente'] = $username; 
	header("location:benvenuto.php"); 
}else{
//.............
?>
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Sicuramente errore di programmazione il fatto di mettere il form fuori dai tag body. Secondo il form, mi serve per poi fare l'action dei bottoni. Il logout che vorrei far visualizzare su benvenuto.php, mi serve poi se uno vuole uscire dal sito, con quello glielo permette di fare. Altrimenti, chiudendo semplicemente la schedda, credo (dico credo eprchè non ho provato), che la sessione rimanga aperta. Per quanto riguarda la prima domanda ossia: poi (anche se talvolta può andare bene) metti (in tutte) session_start() alla prima riga le inclusioni dopo. E allora la paginaprotetta.php. a che serve ?????? se metto session_stat(); su tutti i form ??? E con le modifiche che mi hai detto secondo te il tasto logou si visualizza ???? un ultima, cosa. Il pezzo di codice che mi hai postato, serve per visualizzare il nome ???? Considera che il nome non è username. Sono due cose distinte e separate. Grazie e spero di essere stato abbastanza chiaro nell'espormi.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao

Secondo il form, mi serve per poi fare l'action dei bottoni.
qui non capisco cosa intendi
Il logout che vorrei far visualizzare su benvenuto.php, mi serve poi se uno vuole uscire dal sito, con quello glielo permette di fare.
Altrimenti, chiudendo semplicemente la schedda, credo (dico credo eprchè non ho provato), che la sessione rimanga aperta.
si se chiudi semplicemente la scheda la sessione rimane, ma anche se vai ad altre pagine del sito rimane, si annulla solo se esci dal sito e/o dal bw
ma quando entri nella pag di benvenuto cosa fai? non vedo alcun altro rimando ad altre pagine, cioè in parole povere non si capisce cosa fa.
Per quanto riguarda la prima domanda ossia: poi (anche se talvolta può andare bene) metti (in tutte) session_start() .....
intanto session_start() non c'entra con la verifica se una sessione esiste o meno, tu non verifiche che esista una sessione generica ma $_SESSION['utente']
è evidente che session_start() serve solo nelle pagine in cui usi le sessioni, però il fatto di metterla prima delle inclusioni è sempre meglio, potresti impazzire perche in un file da includere hai uno spazio in più (quindi output html)
E con le modifiche che mi hai detto secondo te il tasto logou si visualizza ???? un ultima, cosa. Il pezzo di codice che mi hai postato, serve per visualizzare il nome ???? Considera che il nome non è username. Sono due cose distinte e separate.
è evidente che sono due cose, infatti ti ho scritto di estrarlo (e quella mi sembra la posizione migliore per leggerlo) dal db e di fare un'altra sessione per poi usarla dove vuoi
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Ti dico la santa verità che non ricordo più perchè ho creato la pagina di benvenuto eheheheh. Ah si, in principio, c'erano i bottoni "Aggiungi", "Cancella", "Cerca" ecc, stava nel mio archivio e quelli si vedevano perfettamente. Però quando entravo, non c'era nessuna scritta di " benvenuto pincopallino". Tanto era una cosa mia e non m'interessava averla, senza contare che ero solo l'unico utente ad entrare quindi.... E la pagina era protetta dal file paginaprotetta.php. Sul vecchio progetto che avevo fatto, funzionava perfettamente. ora qua le cose sono cambiate, perchè questo sito che sto facendo (per mio nipote), mi chiede determinate cose e determinate verifiche da fare. Cosa che se tu vedi ho fatto sul file iscrizione. Poi lui vorrebbe, poter aggiungere file caricati da youtube e immagini e la possibilità che ogni utente li possa commentare. insomma una specie di blog su misura. In ultima cosa, l'iscrizione.php. dovrebbe provvedere a mandare un'email di conferma, e l'amministratore, che sarebbe mio nipote, dovrebbe poter decidere di accettare oppure no tale iscrizione. Questo è la cosa principale. Poi vabbè le sottigliezze del tipo "mi piace", "+1" come stanno su alcuni siti e questi tipi di kazzate qua.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ok grazie. un cosniglio. Goditeli i nonni tu che ne hai e cerca sempre di soddisfare le loro esigenze. Io qualche volta con nonna mi ci arrabbiavo e mi sono poi pentito. Te lo dico da esperienza vissuta.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Ti sei dimenticato per caso ???? Mi avevi detto che mi avresti buttato giù qualcosa. Una cosa vorrei sapere, mettento questa:

PHP:
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";

Per ricaricare la pagina in automatico. Solo che, scompaiono tutti i dati inseriti precedentemente. Come faccio a non perderli ?????
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Allora, i dati precedentemente inseriti per la registrazione, quando fa il reload svaniscono e li debbo ridigitare. Ti posto un pezzo di codice di come l'ho messo.

PHP:
<?php
}else{
 $nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = mysql_real_escape_string(trim ($_POST['password']));
 $passw = mysql_real_escape_string(trim ($_POST['passw']));

 //crittografa la passowrod

 $pass = mysql_real_escape_string(md5(trim($_POST['password'])));

 $errore ="";
//if($rivista ==""){$errore .= "non hai inserito il titolo della rivista<br>";}

 if($nome ==""){$errore .=  "Attenzione: il campo nome deve essere compilato. <br> <br>";}
 if($username ==""){$errore .=  "Attenzione: il campo username deve essere compilato. <br> <br>";}
 if($password ==""){$errore .=  "Attenzione: il campo password deve essere compilato. <br><br>";}
 else{

 if($password != $passw){$errore .=  "Attenzione: le due password non coincidono. <br> <br>";}
}

     // Controllo se esiste lo username nel db

$checkuser=mysql_query("SELECT username FROM utenti WHERE username='$username'");
$vuota=mysql_num_rows($checkuser);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare username. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}

In pratica, quando mi dice username è già occupato, ritorna indietro e svaniscono i dati.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

perdonami ma ho ulteriore bisogno di te. Sto lavorando sulle sessioni per cercare di capire il loro funzionamento. Ti posto l'intero codice del login.php e c'è sempre il benvenuto .php Ora te li posto.

PHP:
<?php
require_once("connetti.php");

session_start();

if(isset($_SESSION['utente'])) {
    $username =$_SESSION['utente'];
    $qry= "select * from utenti where username = '".$username."'";

    $result = mysql_query($qry)or die (mysql_error());
    $riga = mysql_fetch_assoc($result);
    echo "<center> <h1> <br> Benvenuto ".$riga['nome']."!";
}
else
{
	if(isset($_POST['log']))
	{
                error_reporting(E_ALL ^ E_NOTICE);

		$username = $_POST['username'];
		$password = mysql_real_escape_string(md5($_POST['password']));

                $result = mysql_query("SELECT * FROM utenti  WHERE username = '$username' AND password = '$password' ")or die (mysql_error());
                $controllo = mysql_num_rows($result);
                if($controllo > 0)
                {$_SESSION['utente'] = $username;
			header("location:benvenuto.php");
		}
		else
		{
                    	echo " <h1> <center> <br> La password e/o lo username sono sbagliati. Riprovare grazie !!! </center> </h1>";
		}
	}
}
?>

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title></title>
        <form action= '' method="POST">

            <font face="Comic Sans MS">

                <center>

                    <H1>INSERIRE LOGIN & PASSOWRD O REGISTRARSI</H1>

                    Username: <input type="text" name="username"  maxlength="30" size ="35" > <br> <br>

                    Password:    <input type='password' name='password'  maxlength="8" size="8"> <br> <br>
    
                </center>
            </font>
            <center>
                <input type="submit" name="log" value="Login" />
                <input type="submit" name="uscita" value="Registratti" />
            </center>

        </head>
        </body>
    </html>

Ecco il benvenuto.php

PHP:
<?php
session_start();
$username =$_SESSION['utente'];

require_once("connetti.php");

if(!isset($_POST['esci'])){

}

?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        ?>
    </body>
</html>

Tu intendevi così quando mi dicevi di mettere sulle pagine la "session_start();" Ho ho capityo male ????? Perkè funziona a kazzo dove sbaglio ????
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quello che ho visto tu riinvii col meta... se l'user esiste già (e immagino se user e/o pass sbagliati).
dato che si tratta di log io comunque imporrei di ridigitre il tutto, altrimenti faciliti eventuali intrusioni indesiderate (devo azzeccare solo l'user).
il fatto che il form si riempia con quello che hai scritto in precedenza (tramite cookie o sessioni) secondo me va bene solo quando nel form ci sono dei campi abbastanza lunghi,
o se devi modificare qualcosa
es. nei form contattami dove riscrivevere (es) tutto il testo può essere noioso (vedi es. nel form di contatti del mio sito dove se es. non metti l'emeil il testo scritto comunque si ripresenta.

p.s.
salvo problemi nel pomeriggio ti mando come faccio io per l'accesso alle riservate (metodo mio+genio di alex)
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Aiuto per le sessioni PHP 3
E Aiuto per query PHP 8
I aiuto urgente per thunderbird Posta Elettronica 0
I aiuto per outlook Posta Elettronica 0
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
P Aiuto per rendere un Bot Telegram Privato PHP 1
A Aiuto per pagina php PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
L Aiuto per programma web php/mySQL PHP 2
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
T Aiuto per php7 e mysqli PHP 3
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
wildcity9 aiuto per sbloccare account instagram bannati Social Media Marketing 0
A Aiuto per configurare il banner di Iubenda su un sito in html HTML e CSS 0
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [HTML] aiuto per visualizzazione su tablet Offerte e Richieste di Lavoro e/o Collaborazione 6
W [PHP] Un aiuto per il mio primo "Multithread" PHP 0
G Vuoi fare successo? Abbiamo bisogno di aiuto per un app! Offerte e Richieste di Lavoro e/o Collaborazione 1
K [javascript] Aiuto per programma subnetting Javascript 0
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
L [PHP] aiuto per installazione mrbs PHP 0
1 Aiuto per nuovo sito SEO e Posizionamento 4
K Server per sito di annunci: aiuto nella scelta Hosting 4
P [Javascript] Aiuto per recupero variabili da script Javascript 10
P [PHP] Aiuto per gestione file CSV PHP 24
A scambio lavoro per aiuto con android Sviluppo app per Android 0
A aiuto per un codice... PHP 1
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
StelladelSud Cerco aiuto per una demo Offerte e Richieste di Lavoro e/o Collaborazione 3
G Piccolo aiuto per php mail PHP 2
G aiuto per semplice menu onclick HTML e CSS 6
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
A AIUTO per impostazione doppia cifra in tabella HTML e CSS 6
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 3
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 0
A Aiuto per Flash player Flash 0
J Aiuto per localstorage con jquery/js/json Javascript 4
M Cerco aiuto per una modifica di un codice Javascript 2
A Aiuto per ordine cronologico lista file all'interno di una cartella protetta PHP 2
G Aiuto! Studente cerca aiuto per un codice PHP PHP 1
S Aiuto per 2 codifiche java Java 4
G Aiuto per creare chat stile Facebook Javascript 7
Sevenjeak Aiuto e consigli su adattamento sito per dispositivi mobile HTML e CSS 2
S aiuto per script PHP/OOP PHP 2
J Aiuto per un sitema di upload per un progetto PHP 0
K Aiuto per sito Discussioni Varie 0
D Richiesta aiuto siti per indirizzamento forum HTML e CSS 1
M Aiuto per una libreria per generare grafici PHP 1
B Saluti ed aiuto per pagina web html HTML e CSS 11

Discussioni simili