Ciao a tutti ragazzi,
sono nuovo del forum e nuovo nello studio del PHP. Sto seguendo dei corsi online e leggendo un buon manuale...solo che poi la mente va e...ora mi sono incasinato con un piccolo problema.
Come da titolo, le sessioni in PHP.
Non mi vergogno di dire che sto vedendo anche codici commentati sul web per darmi un'idea del "modo di programmare". Volevo provare a fare due paginette in php e html dalla grafica "agricola" per capire meglio le parti "in chiaro" dalle parti accessibili solo tramite login. E, appunto, mi sono imbattuto nelle sessioni.
Il mio "sito" (cioè le due pagine su altervista su cui sto facendo le prove) simula la composizione di un questionario di gradimento di un certo servizio. La particolarità è che la password per entrare nell'area riservata viene fornita da me (ad esempio) e la password, una volta utilizzata, non può essere più usata (filosofia della OTP)
I file sono cosi strutturati premettendo che, per il momento, mi sono bloccato non nella gestione della OTP e della sua scadenza quanto nelle sessioni del sito e nella definizione dell'area pubblica e privata. In breve:
1. Ho una pagina di index (con frasi a caso e un link che mi manda alla fase di login) nome file: index.html
[/HTML]
2. La pagina di index, tramite href, rimanda alla pagina di accesso (solo con password) nome file: main_login.html
3. Nome file checklogin.php con questo file controllo se la password è presente sul DB o no
4. nome file login_success.php che praticamente verifica che la sessione sia attiva con la password digitata.
il problema è questo: se, senza loggarmi all'inizio, vado direttamente alla pagina login_success.php che dovrebbe far parte dell'area "privata" del sito (perchè ho inserito all'inizio session_star(), la pagina mi si apre lo stesso! (ovviamente mi stampa un array vuoto.)
Chi mi può aiutare a capire meglio? Non trovo soluzione.
sono nuovo del forum e nuovo nello studio del PHP. Sto seguendo dei corsi online e leggendo un buon manuale...solo che poi la mente va e...ora mi sono incasinato con un piccolo problema.
Come da titolo, le sessioni in PHP.
Non mi vergogno di dire che sto vedendo anche codici commentati sul web per darmi un'idea del "modo di programmare". Volevo provare a fare due paginette in php e html dalla grafica "agricola" per capire meglio le parti "in chiaro" dalle parti accessibili solo tramite login. E, appunto, mi sono imbattuto nelle sessioni.
Il mio "sito" (cioè le due pagine su altervista su cui sto facendo le prove) simula la composizione di un questionario di gradimento di un certo servizio. La particolarità è che la password per entrare nell'area riservata viene fornita da me (ad esempio) e la password, una volta utilizzata, non può essere più usata (filosofia della OTP)
I file sono cosi strutturati premettendo che, per il momento, mi sono bloccato non nella gestione della OTP e della sua scadenza quanto nelle sessioni del sito e nella definizione dell'area pubblica e privata. In breve:
1. Ho una pagina di index (con frasi a caso e un link che mi manda alla fase di login) nome file: index.html
HTML:
[HTML]<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="AlterVista - Editor HTML"/>
<title></title>
</head>
<body>
Ciao!<br />
Cliccando sul link avrai la possibilità di fare un questionario <br />
Clicca sul link di seguito e fatti consegnare la password OTP<br />
<a href="main_login.html">ACCEDI AL QUESTIONARIO</a>
Attenzione: ricorda che la password vale solo per l'inserimento di 1 solo questionario, <br />
al termine del quale non è più possibile re-inserirlo <br />
</body>
</html>
2. La pagina di index, tramite href, rimanda alla pagina di accesso (solo con password) nome file: main_login.html
HTML:
<HTML>
<HEAD>
<TITLE>Accesso</TITLE>
</HEAD>
<BODY>
<table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody>
<tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td>
<table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody>
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input id="mypassword" name="mypassword" type="password" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input name="Submit" type="submit" value="Login" /></td>
</tr>
</tbody></table>
</td>
</form></tr>
</tbody></table>
</BODY>
</HTML>
3. Nome file checklogin.php con questo file controllo se la password è presente sul DB o no
PHP:
<?php
session_start();
$host="localhost"; // Hostname
$username="nomeutentesualtervista"; // Mysql username
$password=""; // Mysql password
$db_name="my_nomeutentesualtervista"; //Nome del Database
$tbl_name="passwordOTP"; // Nome della Tabella
// Procedimento per connettersi al Database
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Nome utente e password inviate attraverso il form
$mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $tbl_name WHERE OTP='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['mypassword'] = $mypassword;
header("location:login_success.php");
}
else {
echo "Attenzione username o password errati";
}
?>
4. nome file login_success.php che praticamente verifica che la sessione sia attiva con la password digitata.
PHP:
<?php
session_start();
$_SESSION['mypassword'];
print_r($_SESSION);
?>
il problema è questo: se, senza loggarmi all'inizio, vado direttamente alla pagina login_success.php che dovrebbe far parte dell'area "privata" del sito (perchè ho inserito all'inizio session_star(), la pagina mi si apre lo stesso! (ovviamente mi stampa un array vuoto.)
Chi mi può aiutare a capire meglio? Non trovo soluzione.