|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
Lele
nuovo utente

Registrato: 24/09/07 21:18
Messaggi: 5
|
Oggetto: Problema con il logout
Inviato: 24.09.07 | 21:24 |
|
|
Ciao a tutti, sono nuovo di questo forum.
Ho appena iniziato a cimentarmi con php e mi è sorto un problema con il logout:
io ho du pagine php, login.php:
| Codice: | <?php
if($_POST['tasto']){//controllo se è stato premuto il tasto di login
//se è stato premuto effettuo la connessione al data base
$connessione=mysql_connect("localhost","nomeutente","password");
mysql_select_db("my_db",$connessione);
//controllo se l'utente è registrato
//effetto la query
$query=mysql_query("SELECT NomeUtente,Password,Admin FROM utenti WHERE NomeUtente='".$_POST['NomeUtente']."'And Password='".$_POST['Password']."'") or die("query non valida:".mysql_error());
//controlliamo se è admin
if($ris_query=mysql_fetch_array($query)){//se esiste l'utente
$esiste=1;
//creiamo la sessione
session_start();
//header("Cache-control:private");
$_SESSION['name']=$_POST['NomeUtente'];
if($ris_query[Admin]==1){
$admin=1;
$_SESSION['admin']=1;
}
else{
$admin=0;
$_SESSION['admin']=0;
}
}
//Disconnettiamoci
mysql_close($connessione);
}
$logout=$_GET['logout'];
if($logout==1){
$_SESSION=array();
session_destroy();
$logout=0;
}
?>
<html>
<head>
<script type="text/javascript">
function funz() {
window.top.frames[3].location.reload();
}
</script>
</head>
<body>
<table>
<tr>
<?php
if($esiste){//se esiste l'utente
//Diamo il benvenuto
print "<table width='100%'>
<tr>
<td align='left'>
<font size='2' color='red'>Benvenuto ".$_SESSION['name']."</font>
</td>";
if($admin){
echo "<td align='right' width='6%'>
<A href='admin.php'target='blank'>Admin</A>
</td>";
//echo "<SCRIPT Language=\"Javascript1.2\"> window.top.frames[3].location.reload();</SCRIPT>";
//echo "<script type=\"text/javascript\">funz();</script>";
echo "<script type=\"text/javascript\"> parent.principale.location.reload(true); </script>";
}
echo "<td align='right' width='6%'>
<A href='login.php?logout=1' onClick=\"funz();\">Logout</A>
</td>
</tr>
</table>";
}
else{
print "<form name='login' action='login.php' method='POST'>
<td><input name='NomeUtente' type='TEXT' value='Nome Utente'></td>
<td><input name='Password' type='PASSWORD' value='Password'></td>
<td><input name='tasto' type='SUBMIT' value='Login'></td>
<td><A href='registrati.php' target='registrati.php'>Registrati</A></td>
</form>";
}
?>
</tr>
</table>
</body>
</html> |
e principale.php:
| Codice: | <?php
session_start();
if(isset($_SESSION['admin']))
$admin=1;
else
$admin=0;
?>
<html>
<head>
</head>
<body>
<?php
//effettuo la connessione
$connessione=mysql_connect("localhost","nomeutente","password");
mysql_select_db("my_db",$connessione);
$numero_record=5;
if(!isset($_GET["inizio"]))
$inizio=0;
else
$inizio=$_GET["inizio"];
//vediamo se ci sono messaggi da eliminare
if($_GET['cancella'])
$query=mysql_query("delete from blog where messaggio='".$_GET['messaggio']."'")or die("ERROR3:".mysql_error());
//calcolo il numero di messaggi
$query2=mysql_query("SELECT * FROM blog") or die("ERROR1:".mysql_error());
$numero_record_totali=mysql_numrows($query2);
//calcolo il numero di pagine
$numero_pagine=ceil($numero_record_totali/$numero_record);
//stampo a video i messsaggi del blog
//eseguo la query che legge i messaggi dal database
$lettura_risultati=mysql_query("select messaggio, date_format(data_ora, '%d/%m/%Y - ore %H:%i:%s') as data_formattata from blog order by data_ora limit $inizio,$numero_record") or die("ERROR2:".mysql_error());
//scrivo i messaggi del blog
echo "<table width='100%'>";
$index=0;
while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
$index++;
$testo_messaggio=$scatola_temporanea[messaggio];
$data_inserimento=$scatola_temporanea[data_formattata];
echo "<tr>
<td><font size='2' color='blue'>$testo_messaggio</font><br><font size='1'>$data_inserimento</font><br>
</td>
</tr>";
if($admin){
echo "<tr>
<td><a href='principale.php?messaggio=$testo_messaggio&cancella=1'>cancella</a>
</td>
</tr>";
}
} //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo
//stampiamo i collegamenti alle altre pagine se ci sono altre pagine
if($numero_pagine>1){
echo "<tr><td><font size='2' color='blue'>Pagine:</font>";
for($pagina=1; $pagina<=$numero_pagine; $pagina++)
echo "<a href='principale.php?inizio=".(($pagina-1)*$numero_record)."'>" .$pagina." </a>";
}
echo "</td></tr></table>";
//disconnettiamoci dal database
mysql_close($connessione);
?>
</body>
</html> |
quando mi collego come admin e poi effettuo il logout è come se non venissero cancellate le variabili di sessione infatti sotto ogni messaggio, nella pagina principale.php, i link CANCELLA per cancellare i missaggi stessi non si tolgono quando effettuo il logout dell'admin. Come mai? Sto uscendo pazzo  |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 25.09.07 | 02:29 |
|
|
Ciao Lele, ti do il Benvenuto nel Forum.
quando effettui il "logout" non ti viene dato nessun errore?
In login.php tu fai il session_start(), solamente al momento dell'invio della form, quindi... quando effettui il logout no.
Prova a mettere il session_start() all'inizio e non dentro la condizione.
Attenzione nell'usare variabili con lo stesso nome di variabili di sessione...
Ah, i controlli li puoi effettuare direttamente sulle variabili di sessione, senza dover ogni volta fare il controllo e ulteriormante inizializzare altre variabili.
P.S: ho editato il tuo post, usando i tag "CODE" il codice risulta più leggibile. Inoltre non è essenziale postare tutto il codice della pagina HTML, basta anche esporre il problema o le righe inerenti al problema
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Lele
nuovo utente

Registrato: 24/09/07 21:18
Messaggi: 5
|
Oggetto:
Inviato: 25.09.07 | 20:02 |
|
|
Ok grazie mille per la risposta Coach
La pagina principale.php si aggiorna solo dopo che aggiorno tutta la pagina, nonostanta abbia creato nella pagina login.php una funzione funz() per aggiornare pagina principale.php quando premo il link logout. Perchè?
Poi volevo chiederti come mai devo mettere session_start() all'inizio? in teoria quando mi sono connesso come utente admin non avevo gia creato una sessione?perchè devo rieseguire session_start() se l'ho gia eseguita quando mi sono connesso come admin?
Scusa per le troppe domande, forse sono banali, ma sono un principiante (noob)
Ah comunque anche io giocavo a starcraft  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto: PHP session_start()
Inviato: 26.09.07 | 17:54 |
|
|
Non ho ben capito la prima parte.
session_start serve si ad inizializzare la sessione, ma anche a mantenerla.
OT: grande Starcraft
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Lele
nuovo utente

Registrato: 24/09/07 21:18
Messaggi: 5
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 27.09.07 | 14:49 |
|
|
Qui si passa a javascript... ma queste pagine non saranno mica in frame?
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Lele
nuovo utente

Registrato: 24/09/07 21:18
Messaggi: 5
|
Oggetto:
Inviato: 27.09.07 | 15:53 |
|
|
| Eh si sono all'interno di frame.E' un problema? |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 27.09.07 | 17:50 |
|
|
Se lo specifichi magari è meglio
Sinceramente non ho mai avuto a che fare con sessioni e frames, in quanto evito l'utilizzo dei frames a priori.
Comunque si, dovresti chiamare quella funzione javascript, ma subito dopo aver distrutto la sessione... non al momento del click.
P.S: noto che sbagli a chiudere tutti i tag HTML, metti il backslash (\) invece dello slash (/)
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
Lele
nuovo utente

Registrato: 24/09/07 21:18
Messaggi: 5
|
Oggetto:
Inviato: 27.09.07 | 23:27 |
|
|
ok risolto il problema grazie mille  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 28.09.07 | 00:06 |
|
|
Bene!
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
|
|
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum Non puoi allegare files in questo forum Non puoi downloadare gli allegati in questo forum
|
|