Proteggere una pagina di un sito con password

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
Salve a tutti. Ho creato una pagina di login in cui ogni utente che si vuole collegare alla pagina protetta da password deve inserie username e password da me forniti. Tutto funziona correttamente ma vorrei sapere se fosse possibile aggiungere un maggior numero di username e password in modo che ogni utente possa avere user e pass personali e non la stessa password per ogni utente. Il codice che utilizzo è questo:

<?php
//recupero user e pass dal form di login
$user = (isset($_GET['user'])) ? $_GET['user'] : '';
$pass = (isset($_GET['pass'])) ? $_GET['pass'] : '';

//verifico user e pass
if ((strcasecmp($user, 'pincopallino') == 0
&& strcmp($pass, '12345') == 0)
) {
echo 'Login effettuato.' ;
} else {
echo 'Login fallito.' ;
}
?>


L'user è pincopallino e la password è 12345. Ecco, io vorrei sapere se fosse possibile aggiungere un username e una password per ogni utente (da qualche parte ho letto che è possibile utilizzando un array che associa tutti gli user alle rispettive pass). Se qualcuno ha una soluzione ne sarei davvero grato, grazie.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Passa i dati con post e crea delle sessioni, così è parecchio insicuro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
a parte il get, se non vuoi usare un db, potresti fare così anche se gli iscritti sono molti è una pizza

PHP:
<?php
//crei array per pass e uno per user
$pass_l=array();
$usrn_l=array();
//metto dei nomi a caso
$pass_l['pinco']="123";
$usrn_l['pinco']="piripacchio";
$pass_l['pallino']="777";
$usrn_l['pallino']="abracadabra";
//...eccetera.......
//cosi vedi a chi attribuisci la pass e user
// potresti fare anche una pagina chiamata password_user.php
//dove metti le righe sopra
// e poi fai
//include_once "password_user.php";
//metti $_POST, anche nel method= del form ( method="post" )
$pass = (isset($_GET['pass'])) ? $_GET['pass'] : '';
$user = (isset($_GET['user'])) ? $_GET['user'] : '';

//e verifichi che le pass e user esistano nell'array

if (in_array($pass, $pass_l) && in_array($user, $usrn_l)){
	echo "puoi accedere";
	//eccetera....
}else{
	echo "accesso negato";
	//eccetera....
}
?>


p.s.
alex permettendo:D
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
ok grazie, adesso provo quest'ultimo tuo suggerimento. Tanto la pagina è riservata a una decina di utenti quindi alla fine il codice non si incasinerà troppo. Provo e ti faccio sapere se funziona
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
non ho capito l'associazione di user e pass

$pass_l['pinco']="123";
$usrn_l['pinco']="piripacchio";
$pass_l['pallino']="777";
$usrn_l['pallino']="abracadabra";


cioè se io come user metto pinco poi ke pass devo mettere?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
dato che:
PHP:
$pass_l['pinco']="123";
$usrn_l['pinco']="piripacchio";

pinco avrà come username "piripacchio" e come password "123"
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Borgo, magari dico una scemata, ma col tuo script uno non potrebbe entrare anche combinando usr e pass di utenti diversi?
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
Borgo, magari dico una scemata, ma col tuo script uno non potrebbe entrare anche combinando usr e pass di utenti diversi?

esattamente, vabbè ma tanto su 10 persone che avranno accesso al sito non penso ci siano così tante possibilità di andare a inserire l'esatta password di un altro
 

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
ok comunque ho risolto il problema inziale x cui ho aperto questo thread quindi vi ringrazio x l'aiuto :D
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Aspetta, adesso creo una piccola classe che faccia quello che chiedi in maniera più efficiente di quella di borgo. Un attimo, eh...

EDIT: Eccola qui, completa di esempio.
PHP:
<?php
// codici di errore interni
define('ERR_EMPTY_USER', 1);
define('ERR_EMPTY_PASS', 2);
define('ERR_USER_EXISTS', 3);

// codici di errore login
define('ERR_NOT_EXISTS', 3);
define('ERR_BAD_PASSWD', 4);

// codice di successo
define('LOGIN_SUCCESS', 5);

// definizione classe
class phpLogin
{
	// [privata, con metodi di accesso] variabile dati utente
	private $users;
	
	// [pubblica] costruttore
	public function __construct()
	{
		// definisce correttamente il tipo
		$this->users = array();
	}
	
	// [pubblica] aggiunte un nuovo utente (username, password)
	public function addUser($username, $password)
	{
		// controlla la validità dello username
		if($username == '' || !is_string($username))
			return ERR_EMPTY_USER;
		// controlla la validità della password
		if($password == '' || !is_string($password))
			return ERR_EMPTY_PASS;
		// controlla che l'utente non esista
		if($this->userExists($username))
			return ERR_USER_EXISTS;
		
		// aggiunge l'utente alla variabile
		$this->users[$username] = $password;
	}
	
	// [privata] controlla che un utente esista (username)
	private function userExists($username)
	{
		// controlla che sia presente nell'array
		if(!in_array($username, array_keys($this->users)))
			return false;
		
		// restituisce true
		return true;
	}
	
	// [privata] controlla che username e password siano corretti (username, password)
	public function checkLogin($username, $password)
	{
		// controlla la validità dello username
		if($username == '' || !is_string($username))
			return ERR_EMPTY_USER;
		// controlla la validità della password
		if($password == '' || !is_string($password))
			return ERR_EMPTY_PASS;
		
		// controlla che l'utente esista
		if(!$this->userExists($username))
			return ERR_NOT_EXISTS;
		// controlla che la password sia corretta
		if($this->users[$username] != $password)
			return ERR_BAD_PASSWD;
		
		// restituisce il valore di successo
		return LOGIN_SUCCESS;
	}
}
?>
E qui invece l'esempio:
PHP:
<?php
// controllo che il form sia stato inviato
if(isset($_POST['submit']))
{
	// includo la classe
	require('phpLogin.php');
	
	// creo una nuova istanza della classe
	$phpLogin = new phpLogin();

	// aggiungo qualche utente
	$phpLogin->addUser('admin', 'admin');
	$phpLogin->addUser('pinco', 'pallino');
	$phpLogin->addUser('mario', 'rossi');
	
	// recupero i dati inseriti dall'utente
	$username = isset($_POST['username']) ? trim($_POST['username']) : '';
	$password = isset($_POST['password']) ? trim($_POST['password']) : '';

	// tento di loggare l'utente
	$exec = $phpLogin->checkLogin($username, $password);

	// controllo che username e password siano stati inseriti
	if($exec == ERR_EMPTY_USER)
		die('Non hai inserito uno username valido.');
	if($exec == ERR_EMPTY_PASS)
		die('Non hai inserito una password valida.');

	// controllo che l'utente inserito esista
	if($exec == ERR_NOT_EXISTS)
		die('L\'utente inserito non è esistente.');

	// controllo che la password sia corretta
	if($exec == ERR_BAD_PASSWD)
		die('La password inserita non è corretta.');

	// se il login è avvenuto visualizzo un messaggio di successo
	if($exec == LOGIN_SUCCESS)
		echo 'Login effettuato con successo!';
	// la condizione qui sotto probabilmente non si verificherà mai
	else
		echo 'Errore non definito durante il login.';
}
// altrimenti visualizzo il form
else
{
	// stampo il codice HTML del form
	echo <<<EOF
<html>
	<head>
		<title>Autenticazione con phpLogin</title>
	</head>
	<body>
		<h1>Autenticazione</h1>
		<form action="{$_SERVER['PHP_SELF']}" method="post">
			<label>Username:</label>
			<input type="text" name="username" /> <br /> <br />

			<label>Password:</label>
			<input type="password" name="password" /> <br /> <br />

			<input type="submit" name="submit" value="Login" />
			<input type="reset" name="reset" value="Reimposta" />
		</form>
	</body>
</html>
EOF;
}
?>
Tutto testato e funzionante. Alessandro 1 - Borgo 0 :D
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Borgo, magari dico una scemata, ma col tuo script uno non potrebbe entrare anche combinando usr e pass di utenti diversi?
no, è vero ma l'avevo fatto così di getto

quanto dici, anche se Rikardinho90 ha risolto, potrebbe essere risolto così

$utente[pinco]=array("123", "piripacchio");
e l'if
if (in_array($pass, $utente) && in_array($user, $utente)){
echo "puoi accedere";
//eccetera....
}else{

credo

p.s.
alex è il solito esagerato:D
 

claudio valeri

Nuovo Utente
3 Feb 2010
2
0
0
Aiuto

?
include 'config.php';
$username=$_POST['username'];
$password=$_POST['password'];

if ($username==$usern && $password==$passd) {
?>

ragazzi perdonate l'ignoranza. Ho scaricato questo script e l'ho inserito come incipit di una pag.protetta.php.Non so dove devo inserire username e password ( es. username ... claudio). Ancora vorrei rendere infinite le passwor e username user1,2,3, etc come devo fare???
vi ringrazio anticipatamente.
 

claudio valeri

Nuovo Utente
3 Feb 2010
2
0
0
grazie per la risposta

Ti ringrazio per la risposta.. ho letto la discussione. Ma per come ho impostato la mia protezione devo solo sapere dove inserire user e passw e come integrare il codice che ho postato per rendere le pass infinite..
ti ringrazio cmq.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Proteggere una pagina con password usando ASP Classic ASP 6
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
R [c#] Proteggere il codice dell'applicazione C/C++ 0
S [PHP] proteggere pagine PHP 10
B Proteggere cartella Apache ma non le sottocartelle!!! Apache 0
anton Proteggere un file con htaccess Apache 0
anton Proteggere un file su host HTML e CSS 9
S proteggere download dei file PHP 7
M proteggere un file testuale da accesso diretto PHP 4
G Proteggere le tabelle in access MS Access 0
P Sistema migliore per proteggere le immagini? Discussioni Varie 8
A Proteggere Cartella con .htaccess su Xoom.it Web Server 2
max_400 Proteggere i cookie PHP 7
M Proteggere PHP PHP 4
Jam1 proteggere foto con watermark da accessi tramite $_GET[''] PHP 16
max_400 Proteggere login con autenticazione database PHP 19
maurodefilippis Software Per DRM per proteggere pdf ed epub Windows e Software 1
C Proteggere file sul server Apache 2
asevenx proteggere dati con password sicura PHP 8
max_400 Nascondere indirizzo o visualiz. un altro oppure Proteggere pagina php ricevente PHP 6
S [VB.NET] Proteggere le applicazioni .NET Framework 0
M [htaccess] Proteggere file con password Web Server 1
I proteggere le pagine internet PHP 25
M Proteggere più pagine con password PHP 12
G php - codice per proteggere le pagine PHP 10
M Proteggere un intero sito con .htaccess PHP 1
S Proteggere file e dati nel FTP Web Server 0
M come posso proteggere le mie immagini? Javascript 5
Z proteggere pagine Classic ASP 2
Maverick1000tt Proteggere pagina html HTML e CSS 2
C Come proteggere le immagini Webdesign e Grafica 1
D Proteggere immagini HTML e CSS 3
grottafelix Tutorial Asp: come proteggere le pagine Supporto Mr.Webmaster 6
peppoweb Proteggere PHP: guida passo passo PHP 0
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
I stampare una stringa echo PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
L Rendere una parte trasparente Photoshop 3
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
otto9due Ordinare option di una select Javascript 5
N Come si crea una variabile dinamica da incrementare? Javascript 1
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
L Riempimento di una tabella al click di un bottone Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1

Discussioni simili