|
|
| Autore |
Messaggio |
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto: Uscita da area riservata [php]
Inviato: 25.05.07 | 14:17 |
|
|
ciao, ho fatto una piccola area riservata in questo modo, si entra solo con valore password criptato in md5, successivamente questo valore poi lo manipolerò con le session
| Codice: | <?php
// connessione a database
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione.");
// seleziona database
mysql_select_db($personale, $db)
or die ("Errore nella selezione del database.");
// mostra contenuto database
$query = "SELECT password FROM ".$admin."";
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result)){
$access = $row['password'];
}
if(md5(@$_POST['access'])!=$access){
echo '<form action="session.php" method="post" enctype="multipart/form-data">
<label>password: <input type="password" name="access" /></label>
<input type="submit" value="entra" />';
}else{
echo 'accesso consentito
<input type="submit" value="esci" />';
}
?>
</form> |
ma per l'uscita da quest'area che azione devo dare all'input esci? Grazie |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 25.05.07 | 19:36 |
|
|
capito al volo! sono quindi arrivato a questo risultato:
| Codice: | <?php
require_once("config.inc.php");
// connessione a database
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione.");
// seleziona database
mysql_select_db($db_private, $db)
or die ("Errore nella selezione del database.");
// mostra contenuto database
$query = 'SELECT password FROM '.$tb_private.'';
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result)){
$access = $row['password'];
}
if(md5(@$_POST['access'])!=$access){
session_start();
$_SESSION = array(); #cancella tutti i dati di sessione
if (isset($_COOKIE[session_name()])){ #cancella l'eventuale cookie di sessione
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy(); #elimina la sessione
echo '<form action="session.php" method="post" enctype="multipart/form-data">
<label>password: <input type="password" name="access" /></label>
<input type="submit" value="entra" />';
}else{
session_start();
$_SESSION['password'] = $access;
echo '<form action="session.php" method="post" enctype="multipart/form-data">
accesso consentito
<input type="submit" value="esci" name="access" />';
}
echo '
</form>';
?> |
il while l'ho messo perché nn sono riuscito a fare in altro modo, servirebbe per andare a pescarmi nel database la password che poi vado a confrontarla con il campo form...
Post e varie altre cose che vedrai qui poi non è altro che un form dove scrivere la password ed entrare nell'area privata con un bottone (<input type="submit" value="entra" />), se questo dà esito positivo questi due oggetti verranno sostituiti da un altro bottone, ora d'uscita (<input type="submit" value="esci" name="access" />)...
Fatto così mi funziona anche bene (probabilmente ci saranno degli errori), non è che puoi darci un'occhiata veloce? Così se c'è qualcosa che non va(tipo il while) lo correggo.
Grazie della disponibilità comunque, ciao Coach |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 26.05.07 | 01:33 |
|
|
mmm,
personalmente credo ci sia un po' di caos.
Vedi il doppio session_start()... non serve metterlo sia sull'if che sull'else se va in entrambi mettilo prima.
Il while... così non ha senso, in quanto se all'interno assegni il campo password ad una variabile, ad ogni "giro" si sovrascriverà e quindi il valore sarà sempre uguale all'ultimo record.
Inoltre, se i controlli li fai utilizzando $_SESSION... non serve che cancelli i COOKIES.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 29.05.07 | 14:50 |
|
|
sono riuscito a sistemarlo un po', così ora potrebbe andare?
| Codice: | <?php
require_once("config.inc.php");
// connessione a database
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione.");
// seleziona database
mysql_select_db($db_private, $db)
or die ("Errore nella selezione del database.");
// mostra contenuto database
$query = 'SELECT password FROM '.$tb_private.'';
$result = mysql_query($query, $db);
$access = mysql_fetch_object($result);
session_start();
if(md5(@$_POST['access'])!=$access->password){
$_SESSION = array(); #cancella tutti i dati di sessione
session_destroy(); #elimina la sessione
echo '<form action="login.php" method="post" enctype="multipart/form-data">
<label>password: <input type="password" name="access" /></label>
<input type="submit" value="entra" />';
}else{
$_SESSION['password'] = $access;
echo '<form action="login.php" method="post" enctype="multipart/form-data">
accesso consentito
<input type="submit" value="esci" name="access" />';
}
echo '
</form>';
?> |
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 30.05.07 | 16:08 |
|
|
Scusa... ma hai solamente 1 utente???
A questo punto non vedo l'utilità di utilizzare un DB.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 31.05.07 | 08:15 |
|
|
in effetti ho solo una password e basta (nn l'ho scritto prima? Dove ho la testa... ), cmq leggendo in giro sulle varie guide dicono che è più sicuro così. Tu come faresti, sarebbe differente se ne avessi due di accessi? |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 31.05.07 | 11:14 |
|
|
Bhè, se l'accesso è unico puoi scriverli nel PHP... tanto viene interpretato dal server (come fai daltronde per l'accesos al DB).
Il DB ha senso di venire usato se vi sono più dati o se vi è una possibile registrazione degli utenti...
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 04.06.07 | 13:19 |
|
|
alla fine la mia scelta è caduta su database e sessioni... (ho pensato un po' verso il futuro se magari dovessi aggiungere un altro utente). Xò ora mi sono bloccato in una specie di rompicapo che non riesco a trovare uno sbocco. Scrivo subito il codice
| Codice: | <?php
// connessione a database
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione.");
// seleziona database
mysql_select_db($db_private, $db)
or die ("Errore nella selezione del database.");
// mostra contenuto database
$query = 'SELECT password FROM '.$tb_private.'';
$result = mysql_query($query, $db);
$access = mysql_fetch_object($result);
session_start();
echo '<html>
<head>
<title>Primo php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stili.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/javascript" src="swap_visibilita.js"></script>
</head>
<body bgcolor="#FFFFFF">
<div id="content">
<div id="top">
';
if(md5(@$_POST['access'])!=$access->password){
/*$_SESSION = array(); #cancella tutti i dati di sessione
session_destroy(); #elimina la sessione*/
// form entra
echo '<form action="index.php" method="post" enctype="multipart/form-data">
<label>password: <input type="password" name="access" /></label>
<input type="submit" value="entra" />
';
}elseif(@$_SESSION['password']== $access->password){
// form esci
echo '<form action="index.php" method="post" enctype="multipart/form-data">
<input type="submit" value="esci" />
';
}else{
$_SESSION['password'] = $access->password;
// form esci
echo '<form action="index.php" method="post" enctype="multipart/form-data">
<input type="submit" value="esci" />
';
}
echo '</form>
<h3>Lista DVD</h3></div>
<!-- Content -->
';
?> |
Questa sarebbe la parte superiore della pagina e viene ripetuta in tutte le pagine web che ho con un require (o include). Diciamo che è molto simile all'accesso in questo forum... Non riesco però a trovare il giusto modo di fare l'entra e esci interagendo con la sessione
Aiutino? Grazie mille
Ultima modifica di mesk8 il 04.06.07 | 14:48, modificato 1 volta in totale |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 04.06.07 | 13:34 |
|
|
Potresti essere più preciso sul cosa non riesci a fare?
Per l'entra serve una form di login, mentre per l'esci... basta che implementi quella prima funzioncina che ti ho postato, dove vai a resettare la sessione.
Se il tuo problema è quello di sapere se si è o meno loggati, basta controllare se vi è la variabile in sessione... se c'è sei loggato, altrimenti no (con il logout resetti $_SESSION).
P:S: come fai ora la query ed il controllo sulla password del DB non funzionerà in caso di più records (quindi più account).
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 04.06.07 | 15:14 |
|
|
ok, io a dir la verità ho già tutte le varie parti (compreso il logout che ora è commentato e quindi escluso), ho difficoltà a sistemarli e collegare il tutto. Nel mio codice infatti ho già
- il form per entrare (prima parte - if)
- la verifica della sessione se è avvenuto l'accesso oppure no (seconda parte - elseif)
- l'uscita o logout con eliminazione sessione (terza parte - else)
ma messo giù così com'è il codice non è corretto e non so di preciso dove modificarlo... se vuoi ti faccio un piccolo elenco di problemi che ha
- facendolo partire crea una sessione vuota che non vorrei lo facesse
- se lascio non commentato l'eliminazione sessione l'entrata e uscita va, appena però cambio pagina mi esce dall'accesso
- ho due campi di codice molto simili (la seconda e terza parte) che mi piacerebbe fondere tutto in un singolo else o if a seconda di cosa serve
diciamo che queste sono le cose principali che dovrei risolvere |
|
| Torna in cima |
|
|
|