• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema Problema nel form di login

SmeetSM

Nuovo utente
Autore del topic
11 Ottobre 2013
27
0
Miglior risposta
0
Ciao ragazzi stò facendo un piccolo progetto per un server samp roleplay. Praticamente ho scaricato un form di login, ma vorrei che questo una volta autenticato cliccando su login mi porti sulla pagina che hanno accesso i soli registrati. Qua sorge un problema, perchè questo sistema non utilizza un database, e quindi credo vada inserita la password nella index.html, e non ne sono capace. Vorrei in oltre capire come si fa a creare una pagina che possa essere raggiunta solo eseguendo il login. Inserisco qua il codice html della pagina principale (index). Premetto che sono qua per imparare come avete fatto tutti voi. So che ciò che richiedo è anche la solita richiesta chiamata "pappa pronta", ma credo che sia anche un modo per imparare insieme a voi! Vedendo opinioni diverse, collaborando fra di noi e aiutando il prossimo. Detto questo spero che qualcuno mi aiuti, o per lo meno mi spieghi come si fa. Ciao ragazzi! Ah! Felice anno nuovo a tutti quanti!
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ciao ragazzi stò facendo un piccolo progetto per un server samp roleplay. Praticamente ho scaricato un form di login, ma vorrei che questo una volta autenticato cliccando su login mi porti sulla pagina che hanno accesso i soli registrati. Qua sorge un problema, perchè questo sistema non utilizza un database, e quindi credo vada inserita la password nella index.html, e non ne sono capace. Vorrei in oltre capire come si fa a creare una pagina che possa essere raggiunta solo eseguendo il login. Inserisco qua il codice html della pagina principale (index). Premetto che sono qua per imparare come avete fatto tutti voi. So che ciò che richiedo è anche la solita richiesta chiamata "pappa pronta", ma credo che sia anche un modo per imparare insieme a voi! Vedendo opinioni diverse, collaborando fra di noi e aiutando il prossimo. Detto questo spero che qualcuno mi aiuti, o per lo meno mi spieghi come si fa. Ciao ragazzi! Ah! Felice anno nuovo a tutti quanti!
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

Ci vuole per forza una pagina PHP nel form.
Nella pagina PHP collegata al database crei un redirect che porta nella pagina desiderata.
Ovviamente il tutto all'interno di un if, altrimenti anche se sbagli password ti reindirizza.
 
Ci vuole per forza una pagina PHP nel form.
Nella pagina PHP collegata al database crei un redirect che porta nella pagina desiderata.
Ovviamente il tutto all'interno di un if, altrimenti anche se sbagli password ti reindirizza.

Potresti farmelo tu e magari spiegarmi i passaggi? Ti ringrazio tantissimo!
 
Certamente, ma se mi aiutate nel risolvere il problema poi saprò farlo in futuro.

Non è così semplice, ad esempio il fatto che nell'action del form hai messo una pagina PHP vuol dire che non ti sei studiato le documentazioni xD
Ti do i passaggi:
Tramite un file PHP dichiari tutto quello che serve per connettersi al server MySQL e scrivi il codice per aprire la connessione e per effettuare il login(Ti serve una query di conferma);
All'interno dell'action del form inserisci login.php;
All'interno del file .php inserisci un if che se il login è errato ti rispedisce alla pagina iniziale, se è corretto ti rispedisce alla pagina desiderata.
Good Luck ;)
 
Ciao ragazzi stò facendo un piccolo progetto per un server samp roleplay. Praticamente ho scaricato un form di login, ma vorrei che questo una volta autenticato cliccando su login mi porti sulla pagina che hanno accesso i soli registrati. Qua sorge un problema, perchè questo sistema non utilizza un database, e quindi credo vada inserita la password nella index.html, e non ne sono capace. Vorrei in oltre capire come si fa a creare una pagina che possa essere raggiunta solo eseguendo il login. Inserisco qua il codice html della pagina principale (index). Premetto che sono qua per imparare come avete fatto tutti voi. So che ciò che richiedo è anche la solita richiesta chiamata "pappa pronta", ma credo che sia anche un modo per imparare insieme a voi! Vedendo opinioni diverse, collaborando fra di noi e aiutando il prossimo. Detto questo spero che qualcuno mi aiuti, o per lo meno mi spieghi come si fa. Ciao ragazzi! Ah! Felice anno nuovo a tutti quanti!
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

Se ti interessa imparare a creare un sistema di login, innanzitutto studia le basi e poi segui qualche guida nel dettaglio.
Ti consiglio
Perfavore, Entra oppure Registrati per vedere i Link!
di @Kaito :emoji_slight_smile:
 
Beh, un sistema a login senza database è fattibile ma non è dinamico, ciò vuol dire che dovrai inserire manualmente i valori username e password nel file.. dunque non è sicuro quanto un sistema di autenticazione tramite database, ma se è quello che vuoi e sei pienamente cosciente delle possibili conseguenze ti accontenterò!

Incominciamo con il rinominare il file da file.html a file.php. Ora possiamo lavorare con il PHP:

Nel codice del form togli index.html nell'action in modo che quando invii il form verrà ricaricata la pagina eseguendo le istruzioni PHP che gli abbiamo dato qualora venga settato il form. Dovrebbe risultare così:

HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

Perfetto, ora andiamo a scrivere le prime righe di codice PHP prima della dichiarazione <!DOCTYPE html>.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Dentro i tag PHP definisco le prime variabili scegliendo un username e una password:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Una volta stabilito quali siano le credenziali per l'autenticazione passo al controllo dei dati. Prima di ciò definisco in due variabili quello che viene digitato nei campi del form:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Qua bisogna soffermarsi 5 minuti per capire bene cosa stiamo facendo. Come hai notato, nell'action del form abbiamo definito il metodo POST, ma cosa vuol dire? Vuol dire che i dati del form vengono passati al codice PHP in modo invisibile, senza che si possano vedere nell'url o in qualsivoglia altra parte. Se avessimo voluto farli vedere nell'url avremo dovuto usare il metodo GET. Dentro gli apici nel codice $_POST[' ']; devo inserire lo stesso valore che abbiamo messo in name nel tag dell'input. In questo modo, quando io digiterò qualcosa in quel campo e premo invio, il testo verrà inviato a $_POST[' '] e lo memorizzerà nella variabile associata. Dunque, se nell'input dell'username abbiamo specificato name="login", nella variabile $login verrà memorizzato il valore inserito in quel campo, grazie alla variabile $_POST['login']. Stessa cosa identica per la password.

Qui sorge un piccolo problema di logica, infatti se il form non è stato inviato le variabili $login e $password sono vuote. Per questo, dobbiamo specificare che queste variabili vengano definite solamente dopo che è stato inviato il form, dunque utilizziamo una funzione PHP, fatta appositamente per queste situazioni, chiamata isset();. Naturalmente dobbiamo usufruire di un flusso di controllo o più comunemente chiamato condizione:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Come avrai notato dal commento che ti ho scritto, puoi utilizzare qualsiasi campo per assicurarti che sia stato invitato il form. Tuttavia, io consiglio sempre di assegnare un name all'input submit e utilizzare quello, onde evitare problemi relativi a campi vuoti. Dunque, siccome hai già specificato un name nell'input submit, il codice più corretto è il seguente:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Perfetto, ora possiamo procedere con la vera e propria autenticazione. In poche parole dobbiamo assicurarci che l'username e la password inseriti nel campo corrispondano a quelli che abbiamo scelto noi per il login. Per farlo abbiamo bisogno ancora di una condizione. Ricordati che le condizioni possono essere concatenate fra di loro all'infinito, il server controllerà la prima, se risulta vera passerà alla seconda e così via fin quando una non risulterà falsa, quando ciò accadrà interromperà lo script e tutto quello che c'è all'interno e, se glielo abbiamo specificato, eseguirà un codice condizionale.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ricordati che session_start(); deve sempre essere scritta prima di qualsiasi output a video, dunque prima di qualsiasi tag HTML e qualsiasi echo(); PHP.

Ora non ci resta che creare un redirect una volta creata la sessione:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ora, se invece le credenziali sono sbagliate, possiamo creare un codice condizionare per reindirizzare a una pagina (oppure assegnare a una variabile un messaggio di errore e richiamarla nella pagina) diversa:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ora non ti resta che creare un redirect alla pagina di login se l'utente non ha effettuato l'accesso. Per farlo, nel member.php per esempio, inseriamo il seguente codice:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Come avrai notato, abbiamo usato di nuovo la funzione isset();, stavolta però per controllare se è stata creata la sessione. Inoltre, abbiamo utilizzato l'operatore logico " ! " che indica la negazione di ciò che stiamo scrivendo. La funzione die(); invece serve per interrompere l'esecuzione di qualsiasi codice venga scritto dopo. Lo si mette in genere per sicurezza e per evitare esecuzioni di codici inutili.

Ricordati che il redirect come la sessione deve sempre essere dichiarato prima di qualsiasi output a video.

Se vuoi puoi creare un redirect anche nella pagina di login, in modo tale che se uno ha già eseguito il login verrà indirizzato alla pagina dei membri:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Perfetto, credo di averti scritto le basi per un sistema a login. Chiaramente puoi personalizzare quanto vuoi aggiungendo altre funzioni PHP come, per esempio, controllare se i campi del form sono stati lasciati vuoti tramite la funzione empty(); e restituire un determinato messaggio di errore. Oppure registrare i cookie se uno ha spuntato la voce "ricordati", oppure eseguire il codice PHP in un file esterno, chiamato per esempio login.php, e nell'action del form metterci:

HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

In modo che possa mettere il form del login in più pagine senza dover riscrivere decine di volte lo stesso codice.

Qua ti riporto il codice completo (sperando che tu non faccia un copia e incolla che non serve a niente ma che ti legga bene la guida che ti ho scritto):

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ultima modifica:
  • Like
Reactions: 1 person