Forum Flash, Actionscript, PHP e MySQL
le sessioni.. queste sconosciute!

 
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP
Precedente  Successivo 
Autore Messaggio
xmario
intermedio
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia

MessaggioOggetto: le sessioni.. queste sconosciute!
Inviato: 18.09.07 | 21:33
Rispondi citando

salve a tutti.. ho costruito due semplici paginette, una di log in e l'altra di stampa delle informazioni prese dal database.. solo, le sessioni non danno segni di vita.. e ho provato molti metodi visti in giro per google..
vi posto il codice

File 1 (index.php)

 
Codice:
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <title>Login</title>
     <link rel="shortcut icon" href="graphics/icon.png"/>
     <meta http-equiv="author" content="xmario"/>
     <link href="graphics/css.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="login">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Nome utente </p><input size="15" name="usn" type="text">
<p>Password </p><input size="15" name="pwd" type="password"><br/><br/>
<input src="graphics/button_ok.png" alt="OK" type="image">
</form>
<p>Il tuo indirizzo ip: <?php $ip=$_SERVER['REMOTE_ADDR']; echo $ip?></p>
<?php
if(@isset($_REQUEST['usn']))
{
$name $_REQUEST['usn'];
$pass md5(md5($_REQUEST['pwd']));
$dbcon = @mysql_connect('localhost','utente_database','pass_database');
if(!
$dbcon)
{echo 
"<p style=\"color: red;\">Errore</p><p>Impossibile connettersi al database</p>";}
mysql_select_db('xmario_1',$dbcon);
$query "select * from users where userName like \"$name\";";
$userName = @mysql_query($query);
if(!
$userName)
{echo 
"<p style=\"color: red;\">Errore</p><p>Errata elaborazione della query MySQL</p>";}
$n mysql_fetch_array($userName);
if((
$n['userName'] != $name) or ($pass != $n['userPass'] ))
{
echo 
"<p style=\"color: red;\">Errore</p><p>Nome utente o password inseriti incorretti</p>";
}
else
{
echo 
"login corretto!<a href=\"news_list.php\">Entra!</a>";
Session_start();
session_register($_SESSION['nomeUtente']);
$_SESSION['nomeUtente'] = $name;
$_SESSION['passUtente'] = $pass;

}
}
?>
</div>
</body>
</html>


File 2 (news_list.php)

 
Codice:
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <title>News List</title>
     <link rel="shortcut icon" href="graphics/icon.png"/>
     <meta http-equiv="author" content="xmario"/>
     <link href="graphics/css.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="elenco">
<?php
session_start
();
$name $_SESSION['nomeUtente'];
$pass $_SESSION['passUtente'];
echo
"ssssssss $name $pass ";
$dbcon = @mysql_connect('localhost','utente_database','pass_database');
if(!
$dbcon)
{echo 
"<p style=\"color: red;\">Errore</p><p>Impossibile connettersi al database</p>";}
$select mysql_select_db('xmario_1',$dbcon);
if(!
$select)
{echo
"<p style=\"color: red;\">2: Error on chosing database.</p>";}
$query "select * from users where userName like \"$name\";";
$userName = @mysql_query($query);
if(!
$userName)
{echo 
"<p style=\"color: red;\">Errore</p><p>Errata elaborazione della query MySQL</p>";}
$n mysql_fetch_array($userName);
if((
$n['userName'] != $name) or ($pass != $n['userPass'] ))
{
echo 
"<p style=\"color: red;\">Errore</p><p>Nome utente o password inseriti incorretti</p>";
}
else
{
$query "SELECT id, DATE_FORMAT( newsDate, '%d-%m-%Y' ) AS newsData,newsText,TIME_FORMAT(newsTime,'%H:%i') as newsTime,userName,userMail FROM news,users WHERE authorId = users.userId ORDER BY newsTime,newsDate;";
$news_list_request = @mysql_query($query);
if(!
$news_list_request)
{echo 
"<p style=\"color: red;\">Errore</p><p>Errata elaborazione della query MySQL</p>";}
echo 
"<div class=\"head\"> Ciao! benvenuto nel forum comune del gioco dal nome ancora da decidere xD, sei loggato con l'utente: <b>".$name."</b></div>";
while(
$row mysql_fetch_array($news_list_request))
{
$i $row['id'];
$data $row['newsData'];
$time $row['newsTime'];
$userName $row['userName'];
$email $row['userMail'];
$text htmlspecialchars($row['newsText']);
echo 
"<div class=\"head\">N°$i  Author: <a href=\"mailto:$email\"><b>$userName</b></a>  Date: $data  Time: $time </div><p>$text</p><br/>
"
;
}
}
?>
</div>
</body>
</html>


grazie in anticipo per l'aiuto!!! ci sto sbattendo la testa da giorni ormai!
Torna in cima
Profilo Messaggio privato   HomePage
Sponsor
AngaraT
intermedio
intermedio



Registrato: 23/03/04 21:10
Messaggi: 152

MessaggioOggetto:
Inviato: 19.09.07 | 12:21
Rispondi citando

ciao, potrei anche sbagliarmi ma mi sembra che session_start() debba esseme messo prima di qualsiasi output del browser, prova e fammi sapere,

cmq ti cosgilio di leggere http://it.php.net/manual/it/ref.session.php

ciao ciao
Torna in cima
Profilo Messaggio privato  
xmario
intermedio
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia

MessaggioOggetto:
Inviato: 19.09.07 | 18:31
Rispondi citando

grazie!! adesso funziona perfettamente, il mio scopo iniziale era quello di creare la sessione solo se il log veniva effettuato, ma vedo che risulta impossibile!

solo, ci deve essere anche qualche altro errore nel codice.. perchè prima che le sessioni andassero, la pagina veniva aperta cmq senza che venisse dato errore durante la verifica dei dati nel database..
Torna in cima
Profilo Messaggio privato   HomePage
AngaraT
intermedio
intermedio



Registrato: 23/03/04 21:10
Messaggi: 152

MessaggioOggetto:
Inviato: 19.09.07 | 18:52
Rispondi citando

 
xmario ha scritto:
grazie!! adesso funziona perfettamente, il mio scopo iniziale era quello di creare la sessione solo se il log veniva effettuato, ma vedo che risulta impossibile!

diciamo che in teoria puoi creare la sessione solo se.... ovvio che la crei dopo aver reindirizzato l'utente alla pagina della session_start se il login ha avuto successo (circa) e al massimo le puoi distruggere quando l'utente fa logout

 
xmario ha scritto:

solo, ci deve essere anche qualche altro errore nel codice.. perchè prima che le sessioni andassero, la pagina veniva aperta cmq senza che venisse dato errore durante la verifica dei dati nel database..

scusa ma non ti ho capito che tipo di errore ti da: un errore di mysql un errore di php o un errore creato da te come risposta? e dove te lo da in index.php o in news_list.php
Torna in cima
Profilo Messaggio privato  
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 19.09.07 | 20:09
Rispondi citando

Come dice AngaraT,
il session_start() deve stare prima di qualsiasi output... se viene usata una sessione basata sui coockies.

Il problema relativo al topic quindi l'hai risolto? (le sesisoni)
Perchè se vi sono altri errori con la connessione al DB o con le varie query, è un'altra cosa :)
E' difficile che tu veda errori, in quanto anteponi alle varie funzioni il carattere @, che impedisce appunto la visualizzazione di eventuali errori.

Tornando al tema del topic, devi fare un'attimo uno studio sull'utilizzo delle sessioni, in quanto io farei il controllo dei dati inseriti per il login prima.
Non è molto buono utilizzare il LIKE nel controllo dei dati nel DB, in quanto basta indovinare un singolo carattere per passare l'autentificazione.

Prova così:
 
Codice:
<?php
session_start
();
if(isset(
$_POST['usn'])) {
    
    
# qui dovresti inserire il controllo dei dati inseriti
    # se corretti, settare le variabili di sessione
    
    
$_SESSION['auth']        = 'loggato';
    
$_SESSION['nomeUtente'] = $_POST['usn'];
    
$_SESSION['passUtente'] = $_POST['pwd'];    

}
?>

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" 
"http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
<link rel="shortcut icon" href="graphics/icon.png"/>
<meta http-equiv="author" content="xmario"/>
<link href="graphics/css.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="login">
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <p>Nome utente </p>
        <input size="15" name="usn" type="text">
        <p>Password </p>
        <input size="15" name="pwd" type="password">
        <br/>
        <br/>
        <input src="graphics/button_ok.png" alt="OK" type="image">
    </form>
    <p>Il tuo indirizzo ip: <?php $ip $_SERVER['REMOTE_ADDR']; echo $ip?></p>
    <?php
    
if (isset($_SESSION['auth']) && $_SESSION['auth'] == 'loggato') {
        echo
'<p>login corretto! <a href="news_list.php">Entra!</a></p>';
    }
    
?>
</div>
</body>
</html>

Come vedi, se viene inviata la form (anche se qui controlli solamente il campi "usn"), dovresti implementare il controllo nel DB e se andato a buon fine settare le variabili di sessione.
Sotto vi è il controllo della variabile di sessione "auth", che se settata (quindi passato il controllo nel DB) visualizza "login corretto! Entra!".

Nelle altre pagine, per verificare l'avvenuto login ti basterà mettere ad inizio pagina:
 
Codice:
<?php
session_start
();
if(!isset(
$_SESSION['auth']) || $_SESSION['auth'] != 'loggato') {
    
    
header("Location: index.php");

}
?>

Cosa fa questo codice?
Controlla la variabile di sessione "auth" e se non è ok... fa il redirect ad index.php

Trovi inoltre altre discussioni relative alle sessioni in PHP, usando la ricerca del Forum con la chiave: session


» Risultati usando la ricerca del Forum con la chiave session


P.S: con il codice indentato è più leggibile :)

.

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
xmario
intermedio
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia

MessaggioOggetto:
Inviato: 19.09.07 | 20:28
Rispondi citando

grazie per le risp, ade mi spiego meglio! il secondo problema era che, anche con le sessioni non funzionanti, chiunque poteva vedere la pagina cretrice della lista delle news.. cioè.. il processo per controllare se l'utente era loggato bene, non funzionava, perchè non c'è bisogno di essere loggati! e ciò non è bene! ma non capisco perche..
Torna in cima
Profilo Messaggio privato   HomePage
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona

MessaggioOggetto:
Inviato: 19.09.07 | 20:31
Rispondi citando

ok, hai guardato la mia risposta?
...e hai capito il codice ed il meccanismo che ti ho spiegato?

.

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
xmario
intermedio
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia

MessaggioOggetto:
Inviato: 19.09.07 | 20:41
Rispondi citando

perfettamente! grazie ancora, spero di riuscire a combinare qualcosa!
Torna in cima
Profilo Messaggio privato   HomePage
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » PHP Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

Discussioni Simili
Topic Autore Forum Risposte Ultimo Messaggio
Nessun nuovo messaggio SESSIONI cli PHP 1 07.09.04 | 17:16 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio sessioni p4r4n0|c PHP 2 27.07.06 | 18:34 Leggi gli ultimi messaggi
p4r4n0|c
Nessun nuovo messaggio Sessioni e formmail Rik PHP 11 17.11.06 | 16:36 Leggi gli ultimi messaggi
Rik
Nessun nuovo messaggio Come Usare le "sessioni" in... natuzzo PHP 2 12.07.04 | 13:29 Leggi gli ultimi messaggi
natuzzo



 
Vai a:  
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



Powered by phpBB © 2001, 2002 phpBB Group - phpBB SEO Designed by coachdesign - © 2003-2005