Php e sessioni

alexanderale

Nuovo Utente
29 Giu 2017
3
0
1
39
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:
[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>
[/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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
nella pagina privata devi verificare che la sessione esista
PHP:
<?php
session_start();
if(!isset($_SESSION['mypassword'])){
    //la sessione NON esiste, tentativo di accesso non consentito
    //e riinvii a dove vuoi
    header('location:dove_vuoi_tu.php');
    exit();
}else{
    //la sessione esiste (log OK) quindi fai quello che devi fare
    print_r($_SESSION);
    //e tutto il resto che ti serve
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dimenticavo session_star() non vuol dire che sei in una pagina privata, ma è la funzione indispensabile da usare in tutte le pagine ove usi le sessioni
 

alexanderale

Nuovo Utente
29 Giu 2017
3
0
1
39
Grazie mille Borgo Italia,

effettivamente la parte che mi hai suggerito non l'avevo proprio capita durante le mie prove. Funziona tutto perfettamente e al momento del logout (ho inserito la funzione session_destroy() e il redirect tramite header ad una pagina specifica, provando a richiamare le pagine "private" mi rimanda, correttamente, ad una pagina di "alert" e di login.

Grazie ancora e...penso che tornerò a disturbarti e disturbarvi molto presto! ;-)
 
Discussioni simili
Autore Titolo Forum Risposte Data
AC1 Sessioni php PHP 16
S [PHP] problemi con le sessioni PHP 3
B [PHP] Reload pagina e sessioni PHP 3
J sessioni in PHP PHP 3
T gestione livelli sessioni php msqli PHP 1
C Sessioni in php (urgente) PHP 4
L Sessioni rank [#PHP] PHP 3
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
A Sessioni php PHP 0
otto9due [risolto] Problema sessioni php e login PHP 5
redevilduil Php problema nelle sessioni PHP 6
L Gestire la durata sessioni in PHP PHP 2
E [PHP + MySql] Sito con login e sessioni PHP 8
L Guida sessioni php PHP 3
SolidSnake4 aituo per sessioni in php PHP 8
P problema sessioni php [function.session-start] PHP 2
A php sessioni PHP 2
R Sessioni php PHP 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1

Discussioni simili