Problema SESSION e LOGIN

anastasi.fr

Nuovo Utente
4 Apr 2013
1
0
0
Ciao a tutti, vi mostro i file che sto usando e poi vi spiego dove sta il problema...

1-FILE configuraammdip.php
PHP:
<?php

function connect(){

mysql_connect("localhost", "root", "");
mysql_select_db("sito");

}


?>

2-FILE headerammdip.php

PHP:
<?php

include 'configuraammdip.php';
connect();
session_start();

?>

3-FILE loginammdip.php

PHP:
<?php

include 'headerammdip.php';

?>
<form name="form1" method="post" action="accedialcontrollo.php">
<table width="95%" align="center" >
<tr>
<td colspan="2"><div align="center"><strong>Accesso privato per i Dipendenti</strong></div></td>
</tr>
<tr>
<td><strong>Username</strong></td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td><strong>Password </strong></td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="Accedi">
</div></td>
</tr>
</table>
</form>

4-FILE accedialcontrollo.php

PHP:
<?php
$user=$_POST["username"];
$pass=$_POST["password"];
if($user=='admin' && $pass=='admin'){
header("Location: paginaamministratore.php");
}
elseif($user=='dipendente' && $pass=='dipendente'){
header("Location: paginadipendente.php");
}
else{echo"non sei un dipendente";
header( "refresh:3;url=index.php" );
}

?>

praticamente c'è un problema, dopo aver letto la teoria non ho capito come usare bene le session.Infatti le pagine paginaamministratore.php e paginadipendente.php sono raggiungibili anche senza fare il login.Il mio scopo sarebbe vietare quelle pagine a chi non fa il login.
Potreste modificare questi file cosi che possa capire??

VI ringrazio in anticipo.....
 
Ultima modifica di un moderatore:
ciao
intanto, secondo me, l'istruzione session_start è meglio metterla direttamente nella pagina dove usi le sessioni, ricordati che deve essere la prima istruzione: nemmeno uno spazio prima.
poi dove fai il controllo e reindirizzi crei le sessioni

PHP:
<?php
session_start();
$user=$_POST["username"];
$pass=$_POST["password"];
if($user=='admin' && $pass=='admin'){
	//poi qui valorizzi la sessione dell'amministratore
	$_SESSION['admin']="admin";
	//se l'admin puo entrare anche nella pag del dipendente valorizzi anche la sua sessione
	$_SESSION['dipendente']="dipendente";
	header("Location: paginaamministratore.php");
	exit();//ti conviene aggiungere anche questa
}elseif($user=='dipendente' && $pass=='dipendente'){
	//oppure qui valorizzi la sessione del dipendente
	$_SESSION['dipendente']="dipendente";
	//per sicurezza distruggi eventuale sessione dell'admim
	if(isset($_SESSION['admin'])){unset($_SESSION['admin']);}
	header("Location: paginadipendente.php");
	exit();
}else{
	//echo"non sei un dipendente";//attento questa da errore nell'header (anche header non vuole output html)
	//qui distruggi per sicurezza eventuali sessioni presenti
	if(isset($_SESSION['admin'])){unset($_SESSION['admin']);}
	if(isset($_SESSION['dipendente'])){unset($_SESSION['dipendente']);}
	//header( "refresh:3;url=index.php" );
	header( "location: index.php" );//meglio questa
	exit();
}
?>
poi nelle due pagine
1) paginaamministratore.php
PHP:
<?php
session_start();
if(!isset($_SESSION['admin'])){//verifichi che la sessione esista
	// non esiste
	header( "location: index.php" );
	exit();
}
//e qui fai quello che devi fare
?>
2)paginadipendente.php
PHP:
<?php
session_start();
if(!isset($_SESSION['admin'] && !isset($_SESSION['dipendente'])){//verifichi che le sessioni non esistano
	// non esistono
	header( "location: index.php" );
	exit();
}
//e qui fai quello che devi fare
?>

spero di essere stato chiaro, eventualmente chiedi
 

Discussioni simili