- Home
- Categorie
- Coding e Sistemistica
- PHP
- Area privata senza database
-
Ho quindi i tre fogli:
utenti.php:
[php]<?php
$utenti[]=array('id' => 'id1', 'nomeutente' => 'user1', 'password' => 'pass1');
$utenti[]=array('id' => 'id2', 'nomeutente' => 'user2', 'password' => 'pass2');
header('Location: login.php');
exit;
?>[/php]protetta.php:
[php]<?php
session_start();
fopen("utenti.php","a+");
if(isset($_SESSION['login']))
echo 'Contenuto privato';
else
echo 'Contenuto pubblico';
?>[/php]login.php:
[php]<?php
include('utenti.php');
$c = count($utenti);
$i = 0;
while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
$i++;
if($i<$c)
{
$_SESSION['login'] = $utenti*['id'];
// reindirizzo l'utente
header('Location: protetta.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>[/php]In questo modo però aprendo la pagina di login mi esce scritto: Nome Utente o Password errati.
Ho saltato qualche pezzo? In pratica non carica il contenuto di body dando subito il messaggio di errore..
-
In utenti.php le righe che fanno il redirect dovresti toglierle.
Mentre in login.php dovresti controllare che il modulo sia inviato prima di fare le operazioni.
-
Ah visto che ne hai parlato, in utenti.php avevo messo il redirect perchè aprendo appunto la pagina utenti.php rimaneva il foglio bianco, e quindi l'ho messo per reindirizzare chi ci potrebbe passare alla pagina di login. Disturba lo script in questo modo? Meglio che lo tolgo?
Per la pagina di login efettivamente mettendo il codice sotto il form mi carica la pagina..
Solo che inserendo nome e password di un utente mi reindirizza alla pagina protetta ma stampa il contenuto pubblico e non privato..
-
Se vuoi mettere il redirect fai un controllo sull'url richiesto in modo da fare il redirect solo se viene richiesta quella pagina, altrimenti fai redirect ogni volta che usi il file in lettura.
[php]
<?php
session_start();
if(isset($_POST['user'])){
include('utenti.php');
$c = count($utenti);
$i = 0;
while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
$i++;
if($i<$c)
{
$_SESSION['login'] = $utenti*['id'];
// reindirizzo l'utente
header('Location: protetta.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>
[/php]
-
Ora va perfetto, ho provato anche la pagina di logout e almeno quella sono riuscito da solo
Per ora penso possa bastarmi questo, vedrò di adattarlo allo scopo che ho in mente, e in caso avessi problemi ritorno quiGrazie mille!
-
Figurati.
-
Ciao a tutti,
mi sono appena iscritto in questo forum perchè è molto bello e molto utile per me che sono alle prime armi in php.
A me serviva uno script di login senza database ed ho trovato questo,l'ho provato in locale e sul web ma al momento dell'invio dei dati non fa niente,cioè mi spiego meglio quando immetto i dati rimane la pagina del login e non mi dà nè Nome utente e password errati e nè mi indirizza alla pagina privata...Che devo fare?Da cosa è dovuto? Vi posto lo script.Login.php
[PHP]<?php
session_start();
if(isset($_POST['user'])){
include('utenti.php');
$c = count($utenti);
$i = 0;
while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass)
$i++;
if($i<$c)
{
$_SESSION['login'] = $utenti*['id'];
// reindirizzo l'utente
header('Location: privata.php');// se non esiste da l'errore
}else{
die('Nome Utente o Password errati');
}}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onFocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onFocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>[/PHP]Ah,un'ultima cosa ma per il file utenti nome utente e password gli devo scrivere a mano giusto? se è così in quali campi devo scriverli?
Scusate se sto facendo domande da vero principiante ma la verità è che sto alle prime con il php...
Grazie e spero mi rispondiate...
Stek
-
Ciao a tutti volevo sapere come devo fare ad aggiungere nomeutente e password al file utenti.php....mi potreste dare una mano??
Grazie mille
-
[php]
$utenti[]=array('id' => 1, 'nomeutente' => 'nomeutente1', 'password' => 'password1');
$utenti[]=array('id' => 2, 'nomeutente' => 'nomeutente2', 'password' => 'password2');
[/php]
-
Grazie TheDarkita,
il file ce l'ho pure io, solo che non ho capito dove devo inserire i dati di ogni utente...quindi password e user.....non è che mi pioi fare un'esempio?
grazie stek
-
L'esempio è proprio quello invece di nomeutente1, devi mettere il nome utente dell'utente 1, in password1 la password dell'utente 1, e cosi via...
-
Grazie TheDarkita,
ora provo...!
-
Ciao TheDarkita,
ho provato lo script on-line una volta modificato il file utenti.php,sono andato a vedere se mi faceva entrare ma mi dice sempre:Nome utente o password errati...Che devo fare? Posto il codice...Login.php:
[php]<?php
session_start();
if(isset($_POST['user'])){
include('utenti.php');
$c = count($utenti);
$i = 0;
while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass) $i++;
if($i < $c)
{
$_SESSION['login'] = $utenti*['id'];
// reindirizzo l'utente
header('Location: protetta.php');
exit;
}
// se non esiste da l'errore
else
die ('Nome Utente o Password errati');}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onFocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onFocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>[/php]utenti.php
[php]<?php
$utenti[]=array('id' => 1, 'nomeutente' => 'stefano', 'password' => 'stefano');
$utenti[]=array('id' => 2, 'nomeutente' => 'nomeutente2', 'password' => 'password2');
?> [/php]Protetta.php:
[php]<?php
session_start();
fopen("utenti.php","a+");
if(isset($_SESSION['login']))
echo 'Contenuto privato';
else
echo 'Contenuto pubblico';
?>
[/php]Mi puoi dare una mano TheDarkita??
Grazie Stek=)=)
-
Ciao TheDarkita,
sto provando a capire dov'è l'errore, ma non lo sto riuscendo a trovare...
Mi potresti dare una dritta???
Grazie Stek
-
Ad un primo sguardo mi sembra manchino le variabili $user e $pass che qui recupero con
$user = $_POST['user']; $pass = $_POST['pass'];
ed anche l'action del form era da completare:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
quindi dovrebbe essere (ma devo testare pure io, ANZI chiedo agli esperti consigli e ragguagli):
login.php
<?php session_start(); if(isset($_POST['user'])){ $user = $_POST['user']; $pass = $_POST['pass']; include('utenti.php'); $c = count($utenti); $i = 0; while($i < $c && $utenti*['nomeutente'] != $user && $utenti*['password'] != $pass) $i++; if($i<$c) { $_SESSION['login'] = $utenti*['id']; // reindirizzo l'utente header('Location: protetta.php'); // se non esiste da l'errore }else{ die('Nome Utente o Password errati'); }} ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Login</title> </head> <body> <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> <input name="user" type="text" id="user" value="Nome Utente" onFocus="if(this.value=='Nome Utente') this.value='';" /><br /> <input name="pass" type="password" id="pass" value="Password" onFocus="if(this.value=='Password') this.value='';" /><br /> <input name="login" type="submit" value="Login" /><br /> </form> </body> </html>
-
Ciao Motorpsyco,
grazie per la risposta, comunque l'ho provato e l'autentificazione avviene, solo che avviene anche se c'è un solo dato corretto(pass o user) ed una volta entrato mi da contenuto privato ma l'ho da anche se si mette l'URL nella barra del browser....Aspetto una vostra risposta
Grazie Stek
-
ciao stek,
è vero: ho fatto una prova anche io.
purtroppo non ho le conoscenze tali da capire al volo di cosa si tratta e sono impegnatissimo con il lavoro (mi aspetta un sabato notte niente male ohibò)speriamo in qualche anima pia...
-
Ciao motorpsyco,
spero anch'io che qualcuno mi possa aiutare sto veramente impazzendo!!!
Comunque per questa sera Buon Lavoro...
Grazie stek
-
Ciao a tutti,
da quanto tempo...nono è che qualcuno sarebbe così gentile da darmi una mano per quaesto script,ve ne sarei molto grato,perche non so più dove sbattere la testa...x
Spero che qualcuno risponda...
Ciao Stek
-
Ciao stek96,
ti basta verificare che sia settata la variabile
$_SESSION['login'].