|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
xmario
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia
|
Oggetto: le sessioni.. queste sconosciute!
Inviato: 18.09.07 | 21:33 |
|
|
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 |
|
|
Sponsor
|
|
 |
AngaraT
intermedio


Registrato: 23/03/04 21:10
Messaggi: 152
|
Oggetto:
Inviato: 19.09.07 | 12:21 |
|
|
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 |
|
|
xmario
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia
|
Oggetto:
Inviato: 19.09.07 | 18:31 |
|
|
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 |
|
|
AngaraT
intermedio


Registrato: 23/03/04 21:10
Messaggi: 152
|
Oggetto:
Inviato: 19.09.07 | 18:52 |
|
|
| 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 |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 19.09.07 | 20:09 |
|
|
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 |
|
|
xmario
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia
|
Oggetto:
Inviato: 19.09.07 | 20:28 |
|
|
| 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 |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 19.09.07 | 20:31 |
|
|
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 |
|
|
xmario
intermedio


Età: -1990
Registrato: 19/06/07 20:16
Messaggi: 149
Località: Bologna provincia
|
Oggetto:
Inviato: 19.09.07 | 20:41 |
|
|
| perfettamente! grazie ancora, spero di riuscire a combinare qualcosa! |
|
| 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
|
|