Creazione sistema di login

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti,
sono nuovo ma leggo il forum abitualmente e con molta frequenza, fin ora non mi era mai servito postare, dato che, o con l'aiuto delle guide e \ o tutorial e sia con l'aiuto del tasto cerca, ero sempre riuscito a risolvere.
Ora ho un problemino.. Io dovreif are uno script di login, ho gia creato ovviamente la pagina del form.
La pagina php invece sono rimasto bloccato cosi.

Riesco a connettermi al database, riesco a selezionarlo, riesco a fare una ricerca e ovviamente restituire vero o falso (0 o 1).
ora il problema è . Come faccio a farlo rimanere loggato? come faccio un redirect che gli dice che si è autenticato? come gestisco la sessione e in modo che quando chiude l'IE , se non spunta rimani loggato, farlo eliminare dagli utenti connessi? Ciao e Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Come faccio a farlo rimanere loggato? come faccio un redirect che gli dice che si è autenticato? come gestisco la sessione e in modo che quando chiude l'IE , se non spunta rimani loggato, farlo eliminare dagli utenti connessi?
la sessione scade quando chiudi il bw, quindi (in caso di spunta) per farlo rimanere loggiato o usi i cookie o fai aun'apposita tabella nel db
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io uso le sessioni in quanto a mio parere se uno che esce dal bw non dovrebbe rimanere loggato,
e mi piacciono poco i cookie (e qundi non so usarli bene, o viceversa).
generalmente io faccio così (anche se semplifico);
pagina di log login.php con il form
PHP:
<?php
if(!isset($_SESSION)){session_start ();}//in TUTTE le pagine in cui uso le sessioni
/*serve perchè l'utente non debba riscrivere user e password
se è un utente autorizzato*/
if(isset($_SESSION['usn']){$usn=$_SESSION['usn'];}else{$_SESSION['usn'];==""}
if(isset($_SESSION['pas']){$pas=$_SESSION['pas'];}else{$_SESSION['pas'];==""}
?>

<form action="passator_cortese.php" method="post">
inserisci username<input name="usn" type="text" value="<?php echo $usn;?>">
inserisci password<input name="pas" type="text" value="<?php echo $pas;?>">
</form>

faccio la pagina passator_cortese.php (che nome:rolleyes:) che è solo una pagina di transito e di verifica
che non viene visualizzata dall'utente in quanto non ha out html

PHP:
<?php
//creo la sessione
if(!isset($_SESSION)){session_start ();}//in TUTTE le pagine in cui uso le sessioni
//verifico di provenire da login.php e non digitando sul bw il nome della pagina
if(basename($_SERVER['HTTP_REFERER']) != 'login.php'){
	//non provengo da login.php
	unset($_SESSION);
	//distuggo eventuali sessioni e quindi rimando a login
	@header('Location:login.php');
}else{
	//ho verificato che provengo da login
	//collegamento al db
	//verifiche sui post ....e li leggo
	$usn=$_POST['usn'];
	$pas=$_POST['pas'];
	//interrogo il db, non ho messo la codifica dell'user e pass
	$query=mysql_query("SELECT * FROM urtenti_registrati WHERE usn='$usn' and pas='$pas'");
	//verifico che esista un utente con tale username e tale password
	$esiste=mysql_num_rows($query);
	//se $esiste == 0 non cè
	if($esiste > 0){//esiste
		//estraggo usn e pass
		$rows=mysql_fetch_array($query);
		//e li passo in sessione
		$_SESSION['usn']=$rows['usn'];
		$_SESSION['pas']=$rows['pas'];
		//accedo alla/alle pag riservate
		@header('Location:pagina_riservata.php');
	}else{//non esiste
		unset($_SESSION);
		@header('Location:login.php');
	}
}
?>

tutte le pagine riservate iniziano con
PHP:
<?php
if(!isset($_SESSION)){session_start ();}//in TUTTE le pagine in cui uso le sessioni
//verifico l'esistenza delle sessioni
if(!isset($_SESSION['usn']) || !isset($_SESSION['pas']){
	//le sessioni non esistono per cui riinvio al login (o alla pagina che voglio)
	@header('Location:login.php');
}
//ecc, ecc.....
?>

prendi quello che ho scritto come un esempio, adattandolo alle tue esigenze, comunque prova, se non funzia come vuoi siamo qui
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
innanzi tutto grazie per la risposta cosi esaustiva e soprattutto cosi rapida. :)
Ora faccio delle prove e vi diro il riscontro :):fonzie:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
semplificando (e col copia/incolla) ho fatto un errore:crying:
//......
if(isset($_SESSION['usn']){$usn=$_SESSION['usn'];}else{$usn=""}
if(isset($_SESSION['pas']){$pas=$_SESSION['pas'];}else{$pas=""}
//.........
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Comunque, per quanto riguarda il sistema "rimani loggato", è più semplice di quello che sembri. Praticamente hai bisogno di una tabella del database in cui memorizzare l'ID di sessione, l'ID dell'utente e la data di scadenza del login.
Poi, quando l'utente effettua il login, e seleziona la scadenza, tu salvi i dati nel database, salvi l'ID utente nella sessione, e l'ID di sessione in un cookie.
Quando invece l'utente accede alla pagina controlli se esiste un cookie con l'ID di sessione e se trova un riscontro nel database. Se sì, crei una sessione con l'ID utente salvato nel database.
Mi rendo conto che così non è facile, però è più semplice a farsi che a dirsi. In realtà la scadenza "per sempre", non esiste, perché i cookie hanno una scadenza massima, che, attualmente, è di 11 anni. Io uso 10 per arrotondare, e direi che sono abbastanza! :D
Però, ora che ci penso, potrei incrementare di tot secondi la scadenza del cookie ad ogni accesso dell'utente. Ma questa è una cosa avanzata, e non penso che a te serva.
Se hai problemi e dubbi (dopo la mia spiegazione ne avrai più di prima, immagino! :D) fammi sapere.
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ma che centra? O_O cioè mi spiego che centra quello che ha scritto l'utente con la mia richiesta\domanda?

Cmq sono riuscito a testare quella parte di codice.. ma sinceramente non mi sembra chiara.. Vi spiego meglio a cosa devo arrivare...
Il mio obiettivo è quello di creare un login che funzioni in questa maniera :
  • Registrazione (registrazione.htm)( Connetto DB inserisco dati)
  • Login (login.php)(inserisco user e pass,connetto DB,verifico esistenza, genero una variabile booleana per dichiarare se autorizzato o non) (qui ho bisogno delle sessioni)
  • Pagina Protetta (protetta.php) ( Funzione da richiamare in caso voglia proteggere una pagina ai solo iscritti)
  • Recupera Dati (recupera_dati.php) (Connetto DB controllo esistenza email, rimando all'email i suoi dati con link per il cambio password)(richiamo le sessioni)
  • Registrazione con autorizzazioni e convalida tramite email

Questo è ciò a cui devo arrivare.
Premetto non mi interessano script preconfezionati a mode CMS altrimenti utilizzavo Joomla e via.
Voglio arrivare a questo risultato da SOLO (ovviamente intendo creando e scrivendo il codice da solo, ma chiedendo aiuto ove serve)
Grazie ancora per le risposte :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao emix
scusa ma scorrendo i post non mi ero accorto che un altro utente si era intrufolato, e quindi pensavo che la richiesta fosse tua.

...Voglio arrivare a questo risultato da SOLO...
, bene.
comincia a scrivere le pagine, poi se hai bisogno siamo qui
 
Ultima modifica:

Emix

Utente Attivo
15 Feb 2010
596
0
16
d'accordissimo con te infatti io la pagina di registrazione e login la ho. il mio problema sono le sessioni (vedi post addietro). Io riesco a far registrare l'utente (inserimento dati dentro db) e riesco a controllare se esiste o meno stampando qualcosa a video.
Ora non so come far rimanere loggato l'utente finche non chiude browser e non so come farlo rimanere loggato anche dopo (cookie).
In tutto ciò mi è venuta in mente un altra cosa.
Se io effettuo login, come faccio a far stampare a video per X secondi il msg di avvenuto login e il redirect a un altra pagina ? grazie ancora. Molto ma molto cordiali e gentili, ma sopratutto preparati.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Ora non so come far rimanere loggato l'utente finche non chiude browser e non so come farlo rimanere loggato anche dopo (cookie).
per rimanere loggato sino alla chiusura del bw, ti avevo gia risposto (vedi il post con scripit: la seconda parte)
per rimanere loggato anche dopo la chiusura guarda cosa ti aveva scritto alex.
anche se non mi sembra giusto rimanere loggati dopo la chiusura del bw perchè entrare nel tuo sito e loggarmi è un'azione volontaria mia. chiudo il bw e vado a prendere il caffè, pinco può sedersi al mio posto (anche dopo alcuni giorni) e (essendo sempre loggato) può scrivere/fare quello che vuole passando per me
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
borgo, è per questo che hanno inventato una cosa che si chiama "account" ed è molto utile. Praticamente ogni utente di un computer ha dei cookie diversi, e non sono condivisi. Chi ci ha pensato è un vero genio, non è neanche una cosa tanto vecchia... :D

Comunque anche tu hai ragione (strano!), però prova a pensare: quanti sono gli utenti paranoici che vogliono disconnettersi ad ogni chiusura del browser, e quanti invece quelli che si rompono a dover fare ogni volta il login? Poi, se chiudendo il browser voglio disconnettermi perché ho paura che pinco distrugga la mia reputazione online, hanno, sempre recentemente, inventato un sistema chiamato "logout". Ah, questa tecnologia... ma dove arriveremo? :D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Ah, questa tecnologia... ma dove arriveremo?
al computer che fa anche il caffè (spero).
comunque ancora non è facile trovare utenti con un computer che riconosca (web cam e/o riconoscimento vocale?) chi gli sta seduto di fronte, quindi comunque per riconoscere l'utente questi (il computer) deve far inserire un qualcosa che lo riconosca (vedi nota) e quindi tanto vale ripetere il login se uno è uscito dal bw.



nota:
a te ti riconoscono dappertutto...e scappano:D
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
asd, nonostante tutto stasera posto la parte del codice che son riuscito a fare cosi mi aiutate.

P.s: borgo hai msn o qualsiasi altro instant messanger? magari parliamo in tempo reale.

Grazie ancora a tutti!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
vediamo il codice

...borgo hai msn o qualsiasi altro instant messanger?...
mi spiace, ma come direbbe alex, sono "antiquato", se vuoi scrivermi personalmete o usi la messaggistica del forum o mi invii em a info[at]borgo-italia.it
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
mhmh quindi stiamo da capo a dodici.. ossia sempre aspettando risposte.. tanto vale usare il forum. Grazie cmq.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Se io effettuo login, come faccio a far stampare a video per X secondi il msg di avvenuto login e il redirect a un altra pagina ?

secondo me puoi fare in due modi, pero entrambi presentano un difetto
nella pagina che ho chiamato passator_cortese.php
PHP:
//............
 if($esiste > 0){//esiste 
        //estraggo usn e pass 
        $rows=mysql_fetch_array($query); 
        //e li passo in sessione 
        $_SESSION['usn']=$rows['usn']; 
        $_SESSION['pas']=$rows['pas']; 
        //accedo alla/alle pag riservate 
        @header('Location:pagina_riservata.php'); 
    }else{//non esiste 
        unset($_SESSION); 
//.....................
al posto di
PHP:
@header('Location:pagina_riservata.php');
puoi mettere

PHP:
echo "grazie di esserti loggato, tra 4 secondi verrai reinidirizzato alla tua pagina";
echo "<meta http-equiv='Refresh' content='4; URL=pagina_riservata.php'>";

oppure utilizzando js

nell'head metti (o con file esterno)

Codice:
<script type="text/javascript" language="JavaScript">
<!--
//eventualmente cambiare url sotto
var targetURL="pagina_riservata.php"
//modifica i secondi di attesa
var countdownfrom=4
var currentsecond=document.redirect.redirect2.value=countdownfrom+1
function countredirect(){
if (currentsecond!=1){
currentsecond-=1
document.redirect.redirect2.value=currentsecond
}
else{
window.location=targetURL
return
}
setTimeout("countredirect()",1000)
}
countredirect()
//-->
</script>

e sempre al posto di
PHP:
@header('Location:pagina_riservata.php');

PHP:
?>
<form name="redirect" class="Stile5">
   tra
     <input type="text" size="2" name="redirect2">
   secondi sarai reindirizzato alla pagina riservata
</form>
<?php

il difetto è che se uno mentre è in attesa dei 4 secondi con visualizza sorgente vede
il nome della pagina riservata
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Per evitarlo puoi fare così:
PHP:
header('Refresh: 4; URL=pagina_riservata.php');
echo "grazie di esserti loggato, tra 4 secondi verrai reinidirizzato alla tua pagina";
In modo che l'header venga inviato direttamente da PHP. Comunque a me cosa interessa che l'utente loggato veda la pagina riservata? Tanto appena redirezionato la vede dall'URL!
 
Discussioni simili
Autore Titolo Forum Risposte Data
loois Ho un problema nella creazione di un sistema di commenti in PHP PHP 11
P Creazione sistema banner news (HELP!! Entrate perfavore!) Database 0
I script per creazione area download con sistema di pagamento PHP 2
S Visualizza l'errore di creazione in MSSQL Database 4
M [Cerco][Gratuito] Artista/designer per creazione grafica gioco di società Offerte e Richieste di Lavoro e/o Collaborazione 0
N Creazione sito web senza Partita IVA (Era: mettersi in regola) Leggi, Normative e Fisco 1
F NetBeans problema creazione progetto Java Windows e Software 0
A Creazione cookie e gestione accessi PHP 0
D Creazione sito e-commerce WP CMS (Content Management System) 0
A Consiglio per creazione sito web CMS (Content Management System) 1
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 3
spider81man Creazione di un UNICA tabella da più file .CSV PHP 1
M Creazione menu a tendina Javascript 3
S Download di un file in automatico dopo la sua creazione PHP 2
G creazione menu a tendina e invio a pagina php PHP 1
M Problemi con creazione maschere Presentati al Forum 1
F Creazione script Tv Presentati al Forum 1
W Creazione Cartella Classic ASP 2
A recuperare data creazione di un file PHP 6
D Neofita. Creazione applicativo prenotazione automezzi Offerte e Richieste di Lavoro e/o Collaborazione 12
L Aiuto creazione menu mancante WordPress 0
E Creazione URL per chat whatsapp WordPress 0
L Creazione di 2 o più record PHP 6
W Creazione di una griglia HTML e CSS 1
E Creazione di un sito di news PHP 16
S Scelta software/cms per creazione sito Webdesign e Grafica 6
E Creazione gestionale timesheet partendo da foglio excel Offerte e Richieste di Lavoro e/o Collaborazione 0
M Creazione notifica sonora Javascript 1
R Creazione sito eccomerce privato. Offerte e Richieste di Lavoro e/o Collaborazione 2
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
D Difficile creazione excel di dati di grandi dimensioni Classic ASP 2
I creazione stile css HTML e CSS 3
A [Offro][retribuito] Creazione siti web/ web app (Django) Offerte e Richieste di Lavoro e/o Collaborazione 2
Stefano Migotto Creazione di un div con php o js PHP 9
G [OFFRO][RETRIBUITO] Creazione siti web e loghi professionali Offerte e Richieste di Lavoro e/o Collaborazione 0
D Creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 0
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
C [WordPress] Retribuzione creazione Sito Web vetrina Discussioni Varie 3
I [Javascript] Creazione di una piccola libreria e integrazione in angular Javascript 2
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
T [php] problema creazione query select-where PHP 5
Daniele_Carrara [PHP] Creazione Carrello PHP 1
G Creazione Landing Page Offerte e Richieste di Lavoro e/o Collaborazione 2
P [HTML] Creazione pagina web da dove iniziare HTML e CSS 2
L Creazione form html HTML e CSS 3
Monital [PHP]Far riconoscere stringa o numerico epr creazione campo tabella PHP 6
W [PHP] Creazione classe PDO PHP 4
K [PHP] Creazione di Calendario con orario PHP 4
V [CREO] Creazione profilo INSTAGRAM ad hoc per SVILUPPO MARKETING aziendale Offerte e Richieste di Lavoro e/o Collaborazione 0
Store creazione campo search in php PHP 1

Discussioni simili