Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 38
Like Tree1Likes

Discussione: Sistema di registrazione e login

  1. #1
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito Sistema di registrazione e login

    Salve a tutti,

    continuo ostinatamente verso quello che spero possa un giorno essere il mio progetto. Per realizzarlo avrei bisogno di realizzare un sistema di registrazione e login di chi visita il mio sito.

    Solo che da autodidatta è un pò tosta...

    Ho però trovato la guida di alemappo, ho scaricato i file e ho provato a capirci qualcosa una volta caricati nel sito...però riscontro un problema con il captcha (non posso vedere il codice al momento della registrazione) quindi non posso continuare e non posso modificare a mio piacimento...sapreste darmi una mano? E' successo anche a voi? Ho scritto anche ad Ale.

    Grazie!

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Controlla di aver caricato anche la cartella "caratteri".

    Ciao!

  3. #3
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Ale innanzitutto devo ringraziarti perchè hai creato un sistema fantastico!!! E inoltre hai ragione!! avevo caricato il file senza inserirlo in una nuova cartella "caratteri"!!!

    scusa ma vorrei domandarti una cosa....

    Ho notato che i "requisiti di sistema" (localhost, username, password e nome database) sono sempre i medesimi...non c'è il rischio che qualcuno possa entrare nel database visto che è sempre my_nomeutentealtervista??? oppure non è possibile perchè il database posso gestirlo solo dal pannello phpadmin?

    Non so se mi sono spiegato...so di non avere un gran lessico in informatica...

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Non è possibile entrare nel database perché l'accesso è consentito solo agli script che si trovano nel tuo spazio. Se provi (ad esempio) dal tuo spazio a connetterti al mio database (my_alemoppo), vedrai che la connessione non andrà a buon fine... o almeno, spero

    Ciao!

  5. #5
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    ok!! Ho capito... volevo anche dirti che il tuo (fantastico) sistema di login rimanda alla pagina principale del mio sito...

    però ho un problema... se vado su un sito generico www.sito.com io vedo subito la sua prima pagina...perchè con il mio sito no?

    Mi spiego meglio...il mio sito è goalmanager.altervista.org ma è vuoto.... e invece con la pagina home page no....

    Come si fa a mettere la home page direttamente nel sito...oppure non si può fare???

  6. #6
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    si può fare, chiamando il file della home page "index.html" oppure "index.htm" oppure se usi PHP "index.php".

    Ciao!

  7. #7
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    grazie mille!!! Ma questo potrò farlo anche quando acquisirò un dominio di secondo livello?

  8. #8
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Teoricamente sì, perché l'hosting non cambia: lo spazio e i file rimangono sempre quelli del terzo livello. Però non so se funziona correttamente la connessione dal database, perché preleva l'indirizzo dall'url (nel topic l'ho scritto). Bisognerebbe provare...

    Ciao!

  9. #9
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    E scusa un'altra domanda ma io ho sia index.html che index.php tra le pagine create perchè uso questo dominio gratuito come banco di prova, e quindi chi vede il mio sito quale pagina vede?

  10. #10
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Mi sembra che index.html abbia priorità rispetto index.php. Comunque è sufficiente far una prova, no? .

    Ciao!

  11. #11
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Scusa, sono stato frettoloso nel porti la prima domanda (o meglio nello scriverla). Volevo dire, se potrò fare (quando acquisirò un dominio di secondo livello) la stessa cosa che mi hai detto tu ora (ossia chiamare una pagina index.html(o php) e far si che quella sia la homepage generica di chi si connette al mio futuro sito www.miofuturosito.it per esempio...)

    Spero di essermi espresso bene...mi esprimo malissimo lo so!! Per fortuna che voi moderatori avete pazienza con noi...

    Personalmente io la vivo così: tutto è una scoperta qui dentro e sto cercando di apprendere più nozioni possibili nel tempo libero con il vostro ausilio e leggendo guide su internet (html ne ho lette 3 e in questi giorni php).... ecco perchè sembro schizzofrenico con le domande...

    quando riesco a far qualcosa unendo le informazioni che mi date sono gasatissimo!!!

  12. #12
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da goalmanager Visualizza messaggio
    Scusa, sono stato frettoloso nel porti la prima domanda (o meglio nello scriverla). Volevo dire, se potrò fare (quando acquisirò un dominio di secondo livello) la stessa cosa che mi hai detto tu ora (ossia chiamare una pagina index.html(o php) e far si che quella sia la homepage generica di chi si connette al mio futuro sito www.miofuturosito.it per esempio...)
    Esatto. Come ti ho detto sopra, il dominio di II livello su altervista è circa un redirect al tuo attuale spazio. Non cambia nulla. Comunque cerca sul forum perché ci sono altre info da conoscere per il dominio.


    Citazione Originalmente inviato da goalmanager Visualizza messaggio
    Personalmente io la vivo così: tutto è una scoperta qui dentro e sto cercando di apprendere più nozioni possibili nel tempo libero con il vostro ausilio e leggendo guide su internet (html ne ho lette 3 e in questi giorni php).... ecco perchè sembro schizzofrenico con le domande...

    quando riesco a far qualcosa unendo le informazioni che mi date sono gasatissimo!!!
    Ti capisco, anche io ci son passato. Ti consiglio quindi di non usare il mio sistema di login, ma di farne uno tuo così hai più soddisfazione e soprattutto impari ancora meglio il PHP.

    Ciao!

  13. #13
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    infatti!! Per ora devo studiare php..e poi potrò 1) capire passo passo il tuo ragionamento 2) provare ad adattarlo alle mie esigenze di login (che sono un pò diverse dalle usuali) 3) farne uno mio. Anche se (scusa se sembro smielato) ma quello che hai fatto te è davvero forte...!! Con il link da cliccare sulla mail..fantastico!! Non vedo l'ora di capirlo tutto!! Al momento posso solo capirne piccole parti...(guardando il codice intendo)

  14. #14
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Sono sempre io!!! Scusate... sto sbattendo la testa su questa cosa e non ne vengo a capo...

    Allora io vorrei creare un sistema di registrazione e login per il mio (futuro) sito....

    Ciò di cui necessito è comunque decidere in prima persona gli accessi (senza procedure automatiche che mi scavalchino) quindi ho pensato di impostare un form con dei campi da compilare sul mio sito. Dal form l'utente mi invia questi dati che io ricevo per mail e provvedo ad inserirli nella tabella del database e provvedo ad attribuire una password all'utente (e a comunicargliela ovviamente) con la quale egli potrà loggarsi...

    Fino a qui ci sono...ma per il sistema di login non riesco...Nonostante io abbia cercato e abbia provato a fare un bel pò di tentativi...

    Mi potreste spiegare per punti ( 1) 2) 3) ecc..) cosa devo fare?

    Io ho agito così (consentire login di un utente con dati già presenti in tabella e a lui conosciuti)


    1) connessione al database (e fin qui non ho problemi)

    2) fare un form action

    poi?

  15. #15
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Hai provato a dare uno sguardo ad uno script già pronto, e cercare di capire come funziona il codice? Io trovo sia una cosa sempre utile.

    Comunque, a grandi linee il processo dovrebbe essere questo: l'utente compila il modulo per l'accesso con le proprie credenziali, i dati di questo vengono ricevuti dallo script PHP che li verifica.
    Adesso, se usi un database per registrare i dati degli utenti devi effettuare una query (richiesta) per verificare che le credenziali inserite siano corrette, solitamente la query va espressa mediante un linguaggio apposito, l'SQL. Lo script PHP poi riceve il risultato della query e da questo determini il successo o meno dell'autenticazione da parte dell'utente. Solitamente poi viene registrata questa informazione (se l'utente si è autenticato, e con quali credenziali) in una variabile di sessione.

    Ora, le cose importanti da tenere sempre a mente per script di questo tipo sono:
    • mai registrare in chiaro nel database o da qualsiasi altra parte le password
    • attenzione a come si costruisce la query, evitando di consentire attacchi di tipo SQL injection


    Le password non vanno mai registrate in chiaro, perché se sfruttando qualche vulnerabilità (e fidati, capita non di rado) un malintenzionato riuscisse ad estrapolare dei dati dal database, potrebbe leggere le password di tutti gli utenti, direttamente.
    Le password quindi non vanno memorizzate, ma va memorizzato il loro hash.
    Cosa sarebbe? L'hash è una funzione studiata appositamente in modo che prenda in ingresso un dato (in questo caso la password dell'utente) e restituisca un altro dato, in modo tale che dal risultato sia molto ma molto difficile risalire al dato in ingresso. Quindi, se nel database c'è registrato l'hash della password, per verificare se l'utente è in possesso delle credenziali, è sufficiente confrontare il dato memorizzato nel database con l'hash calcolato al momento della password appena fornita. In questo modo, se anche un malintenzionato avesse accesso ai dati del database, avrebbe serie difficoltà ad ottenere le password degli utenti.

    Questa è una spiegazione super compressa (e spero non troppo contorta) delle basi per costruire un sistema di autenticazione. In rete trovi tantissimo altro materiale nel caso tu voglia approfondire uno specifico argomento, o comunque puoi sempre chiedere qui a noi.

  16. #16
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Buongiorno Karl!!! Grazie mille per la risposta!!!

    Ho provato a guardare almeno 7/8 modelli e metodi di creazione di un sistema di registrazione\login che ho trovato online, ma ho riscontrato che tutti hanno un loro metodo, un loro sistema di logica che io, essendo un neofita che ingurgita più nozioni possibili su guide online (sono in attesa che mi arrivi un libro Hoepli che ho ordinato online che tratta dell'interazione tra php e mysql), non riesco a capire perchè quasi sicuramente mi mancano basi solide...

    Non mi piace piangermi addosso e nemmeno abusare del tempo altrui per cui mi metto li di sana pianta ogni volta che qualcosa non mi riesce nonostante i chiarimenti che ottengo da voi moderatori che avete una pazienza incredibile...

    Ma stavolta è più complessa la faccenda.... e allora è bene a mio avviso che io realizzi la questione man mano, passo passo, altrimenti mi perdo per strada come ho fatto fin'ora...ecco il perchè del mio post qui sul forum...

    Allora parto con il descriverti ciò che mi serve (cerco di spiegare al meglio delle mie possibilità)

    1.Ho bisogno di agganciare l'accesso al mio sito a chi dispone delle credenziali
    2.questo perchè una volta entrati ognuno dovrà entrare in una pagina che verrà a configurarsi in maniera differente a seconda dell'utente che si connette...Praticamente chi entra vedrà la sua squadra, le sue finanze, ecc... (tutti dati presenti sul database) e quindi mi servirebbe un ulteriore aggancio legato all'utente

    Detto ciò che mi serve ti dico come ho predisposto la cosa:

    1. Ho previsto che sia l'utente che intende registrarsi a comunicarvi mia mail dal mio sito i dati che mi servono per registrarlo...Ho bypassato la procedura di registrazione non per avere una cosa in meno da fare quanto per decidere in prima persona gli ingressi e avere più sicurezza (perchè voglio che assieme ai dati vengano in essere anche dati obbligatori (come indirizzo ip con la funzione gentv)) in modo da impedire più login con stesso indirizzo ip
    2. ho creato la tabella nel database mysql

    da qui in avanti visto che devo creare il tutto ho agito così

    ho immesso dei miei dati nella tabella e ho provato a predisporre un sistema affinchè io possa fare il login (ho guardato molti esempi già fatti come ti dicevo ma (giustamente) ognuno ha il suo sistema "di ragionamento" e io non riesco ad avere un filo conduttore strutturato a livello di ragionamento per poter impostare passo passo la cosa della quale necessito...

    Se non vi crea troppo impegno\disturbo avrei bisogno di una mano...anche consigliandomi qualcosa da leggere in rete...sarei già felice...non pretendo codici o che mi facciate il "lavoro" (anche perchè oltre a none essere giusto vorrei capire cosa faccio)..

    Altra questione poi è la sicurezza....ti chiderei se così basta per essere sicuri...

    Grazie mille!!

  17. #17
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Prima di tutto ti consiglio di imparare PHP in generale (se non lo conosci, ovviamente). È molto importante padroneggiare i concetti fondamentali di programmazione come i costrutti di selezione (if) e iterazione (while, for, foreach, do while), le variabili, gli array, le classi, i metodi, le proprietà. Poi dovresti passare a qualcosa di più "PHP", come le sessioni, i cookie ed i dati prelevati da richieste http (POST, GET).
    Solo quando sarai padrone delle cose sopra, ti consiglierei di passare alla interazione con il database. A suo tempo, io ho letto questa ma era completamente diversa da ora perché giustamente ai tempi c'era PHP4 e non PHP5, con tutte le conseguenze che ne derivano.

    Solo dopo (per far meno confusione) ti consiglierei di metter tutto insieme e fare un sistema di login, e magari pensare alla sicurezza.

    EDIT:
    ho sfogliato le prime pagine della guida che ti ho linkato, ma ancora usano le vecchie funzioni mysql_* come ai tempi!

    Ciao!
    Ultima modifica di alemoppo : 28-03-2014 alle ore 14.32.31

  18. #18
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Grazie Ale.... seguirò il tuo consiglio (che in parte stavo già facendo)!!

    Mi sono immerso completamente in questo linguaggio che è fantastico!!! Praticamente ho smesso di vivere.... ahahahahahah!!!!!!

    Vi faccio sapere appena sfondo il muro delle mie "incapacità" :-)

  19. #19
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    RAGAZZI ci sono riuscitoooo!!!! Oddio sono felicissimo!!! Mettete che sono 3 giorni che ho smesso di vivere praticamente!! ahahahah

    Appena entro meglio nel discorso poi vorrei un consiglio sulla sicurezza perchè ho impostato un md5, secondo voi basta??

    praticamente mi tramuta la password in un codice di milleeseicentocinquantanove lettere e numeri...

  20. #20
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Mi sono scordato di dirvi una cosa... Grazie mille perchè mi avete dato ottimi input...andare per tentativi e basta non va bene!!

  21. #21
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da goalmanager Visualizza messaggio
    Appena entro meglio nel discorso poi vorrei un consiglio sulla sicurezza perchè ho impostato un md5, secondo voi basta?
    Mi sembra che anche io nello script ho usato md5, ma dicono che non è molto sicuro, ed è meglio utilizzare sha2 (1, 2, ...).
    Sicuramente, a meno che non fai account di "valore", nessuno userà una rete di calcolatori per decriptare gli hash, quindi direi che un sha2 può bastare. Altrimenti un po' più sicuro può essere concatenare queste funzioni, ad esempio:
    Codice PHP:
    $hash = sha2(md5($stringa));
    O magari fare anche una tua funzione che genera un hash.

    Ciao!

  22. #22
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Grande Ale!! è vero!! Grande idea!!! Non ci avevo pensato!! Comunque appena mi sarà possibile voglio pubblicare qui cosa ho fatto così che chi vuole può vederlo e usarlo...
    karl94 likes this.

  23. #23
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da goalmanager Visualizza messaggio
    Grande Ale!! è vero!! Grande idea!!! Non ci avevo pensato!! Comunque appena mi sarà possibile voglio pubblicare qui cosa ho fatto così che chi vuole può vederlo e usarlo...
    Ottimo! Così potrai ricevere anche altri consigli riguardanti il codice.
    Per quanto concerne la sicurezza, oltre quello che ha già scritto Alemoppo, documentati riguardo i salted hash.

  24. #24
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Ciao ragazzi,

    come vi avevo detto ho il tempo di pubblicare ciò che 'ho fatto'. Con la doverosa premessa che 1. mi sono messo a studiare ma 2. ho dovuto necessariamente basarmi su qualcosa di già fatto che ho trovato in rete 3. facendo si da coniugare i più input ricevuti\trovati in modo tale da soddisfare il mio fine (che ribadisco essere quello di creare un sistema di registrazione tramite mail e di login\autenticazione successiva sicura).

    Il sistema si articola così: chi intenderà visitare parte del contenuto del mio futuro sito dovrà necessariamente possedere credenziali per accedere al medesimo. Le credenziali le otterrà inviandomi una mail (tramite form presente nel sito) ed attendendo la conferma delle stesse tramite mia risposta alla sua mail e con quelle egli potrà autenticarsi nel sito e poterne visitare la parte di contenuto nascosto (che altro non sarà che un gioco di calcio manageriale, sperando di realizzarlo :-) )

    Finito il preambolo pubblico a step ciò che ho fatto:

    1) ho inserito nel mio sito un link che mi rimanda ad una pagina di registrazione
    Codice:
    <a href="registrazione.php" title="Iscriviti">Iscriviti</a>
    2) a questo punto occorre creare 2 pagine web
    2 a) creare la pagine registrazione.php dove si inserisce il form, ossia il corpo che dovrà essere compilato dall’utente che vuole registrarsi con i suoi dati. Il form che ho fatto io è il seguente:
    Codice:
    <form action="invio.php">
    <div><table border="10" align = "center" cellpadding="10" cellspacing="10" >
    <tr width="150">
    <td width="300" align="center"><FONT FACE="Arial" SIZE="5" color="red"> REGISTRAZIONE </FONT></td>
    </tr>
    <tr width="150" >
    <td  width="300"> Username <input name="username" type="text"></td>
    </tr>
    <tr width="150" >
    <td  width="300">	Mail <input name="mail" type="text"></td>
    </tr>
    <tr width="150" >
    <td  width="300"> Password  <input name="pw" type="text"></td>
    </tr>
    <tr width="150" >
    <td width="300"> Squadra  <input name="squadra" type="text"></td>
    </tr>
    <tr> 
    <td width="100" align="center">
    <input type="hidden"  name="ip" value="<?php
    /* prendere ip del visitatore*/
    echo $_SERVER['REMOTE_ADDR'];
    ?>" >
    <input type="submit" align="center" value="Registrati" title="Una volta cliccato, dovrai attendere la mail di conferma dati!!">
    </td>
    </tr>
    </table></div>
    </form>
    In sintesi questo form si collega ad una pagina invio.php (punto 2 b) che prende I dati inseriti dall’utente e li manda alla vostra mail. Non manda solo dati inseriti ma anche un dato (ip) che l’utente non inserisce. L’ho fatto perché a me servirebbe di evitare che un utente possa registrarsi con molti account (anche se utilizzando altra rete internet lo potrebbe comunque fare, ma è comunque una forma seppur minima di tutela).
    2 b) si crea la pagina invio.php connessa al punto precedente
    Codice:
    <?php
    
    
    $mail = "miamail@altervista.it";
    $oggetto = "email";
    $testo = "username: ".$_GET['username']."
    mail: ".$_GET['mail']."
    pw: ".$_GET['pw']."
    squadra: "
    .$_GET['squadra']."
    ip: ".$_GET['ip'];
    
    mail($mail,$oggetto,$testo);
    ?>
    3) a questo punto inserirete i dati inviati dall’utente nel database, invierete conferma all’utente e lui si potrà autenticare sul sito. Per farlo creiamo un link nella pagina del sito che lo mandi alla pagina autenticazione.php:
    Codice:
    <a href="autenticazione.php" title="login">login</a>
    4) nella pagina php ho probabilmente fatto un po’ di confusione perché è la pagina scaturita dal famoso ‘mix di contunuti’ che ho anche in parte copiato da altri suggerimenti..
    Codice:
    <?php
    $DB_host     = 'host';
    $DB_user     = 'miousername';
    $DB_password = 'miapassword';
    $DB_name     = 'miodatabase';
    
    $link = mysql_connect($DB_host, $DB_user, $DB_password); 
    if (!$link) {
    	die ('Non riesco a connettermi: ' . mysql_error());
    }
    
    $db_selected = mysql_select_db($DB_name, $link);
    if (!$db_selected) {
    	die ("Errore nella selezione del database: " . mysql_error());
    }
    
    if($_POST) {
    	effettua_login();
        
    } else {
    	mostra_form();
    }
    
    function mostra_form()
    {
    	// mostro un eventuale messaggio
    	if(isset($_GET['msg'])) {
    		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    	}
    	?>
        
        
        
    	<html> 
        <table>
        <tr>
        <td>
    <form name="form_login" method="post" action="">
    <div><table align = "center" cellpadding="10" cellspacing="10" >
    <tr width="150">
    <td width="300" align="center"><FONT FACE="Arial" SIZE="5" color="red"> Autenticazione </FONT></td>
    </tr>
    <tr width="150" >
    <td width="300"> Username  <input name="nome" type="text" value=""></td>
    </tr>
    <tr width="150" >
    <td width="300"> Password <input name="password" type="password" value=""></td>
    </tr>
    <tr> 
    <td width="100" align="center">
    <input name="invia" type="submit" value="Autenticati">
    </td>
    </tr>
    </table></div>
    
    </form>
    </td>
    </tr>
    </table>
        
    	<?
    }
    
    function effettua_login()
    {
    	// recupero il nome e la password inseriti dall'utente
    	$nome      = trim($_POST['nome']);
    	$password  = trim($_POST['password']);
    	// verifico se devo eliminare gli slash inseriti automaticamente da PHP
    	if(get_magic_quotes_gpc()) {
    		$nome      = stripslashes($nome);
    		$password  = stripslashes($password);
    	}
    
    	// verifico la presenza dei campi obbligatori
    	if(!$nome || !$password) {
    		$messaggio = urlencode("Non hai inserito il nome o la password");
    		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    		exit;
    	}
    	// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
    	$nome     = mysql_real_escape_string($nome);
    	$password = mysql_real_escape_string($password);	
    
    	// preparo ed invio la query
    	$query = "SELECT id FROM utenti WHERE nome = '$nome' AND pswd = MD5('$password')";
    	$result = mysql_query($query);
    	// controllo l'esito
    	if (!$result) {
    		die("Errore nella query $query: " . mysql_error());
    	}
    
    	$record = mysql_fetch_array($result);
    
    	if(!$record) {
    		$messaggio = urlencode('Nome utente o password errati');
    		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    	} else {
    		session_start();
    		$_SESSION['user_id'] = $record['id'];
    		$messaggio = urlencode('Login avvenuto con successo');
    		header("location: homepage.php");
    	}
    }
    ?>
    5) adesso in tutte le pagine che collegherete (io ho collegato homepage.php) inserirete il codice seguente così solo chi avrà le credenziali sarà nella possibilità di accedere al relativo contenuto!

    Codice:
    <?php
    
    
    
    session_start(); // se la sessione non è stata già avviata altrove
    
    if(empty($_SESSION['user_id'])) {
    die('accesso non consentito');
    }
    
    
    
    
    
    ?>
    Concludo con
    1. Ringraziamenti verso Karl94, Miki92 e Alemoppo che con me hanno un sacco di pazienza :-)
    2. I codici riportati in parte sono presi da altri lavori di altre persone alle quali giustamente do il merito di tutto. Io li ho solo utilizzati, dopo aver capito come poterli usare, per i miei fini
    3. Se volete vedere come è realizzato il sistema, esso è ospitato sul sito di alter vista del mio account

  25. #25
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Ricordati che i dati inviati da form sono molto facilmente modificabili (anche gli input hidden).

    Invece di fare:
    Codice PHP:
    <input type="hidden" name="ip" value="<?php
    /* prendere ip del visitatore*/
    echo $_SERVER['REMOTE_ADDR'];
    ?>" >
    Codice PHP:
    "ip: ".$_GET['ip'];
    Puoi far più semplicemente così:
    Codice PHP:
    "ip: ".$_SERVER['REMOTE_ADDR'];
    ---

    Perché usi GET invece di POST (funziona uguale, ma solitamente si preferisce POST in questi casi).

    ---

    la session_start() cerca di metterla sempre all'inizio dello script: anche se non la usi è meglio metterla per evitare di richiamarla dopo aver fatto un output di html.

    ---

    Nella connessione al database, non mettere la tua password, ma lascia vuoto il campo: funzionerà ugualmente, ma il tutto sarà più sicuro.

    ---

    Evita di lasciare vuoto il campo "action" dei form: se vuoi inviare i dati alla stessa pagina, fai così:
    Codice PHP:
    <form ... action="<?= $_SERVER['PHP_SELF'] ?>">
    ---

    In generale, stai usando codice obsoleto: per interfacciarti con mysql, usa mysqli. Lato html invece evita di utilizzare le tabelle. Inoltre è sconsigliatissimo l'utilizzo del tag <font>. Invece di queste cose, devi usare css.

    ---

    Nell'ultimo codice, invece di empty() io userei isset().

    Comunque magari guarderò il codice con più calma.. Queste comunque sono le cose più evidenti.

    Ciao!
    Ultima modifica di alemoppo : 02-04-2014 alle ore 17.54.25

  26. #26
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Grazie Ale!! Questo è un pò il mio primo lavoro e per quanto sia contento, sicuramente può essere migliorato un sacco...

    Guarderò di approfondire le cose che mi hai detto il prima possibile...soprattutto i css e la connessione al database...

    Al momento, a proposito di connessione, però non riesco a fare una cosa... forse io stesso non ho capito bene in fondo il funzionamento degli script che ho postato...

    Mi spiego meglio... ho il problema che il mio utente una volta entrato nella nuova pagina debba vedere taluni suoi dati presenti in database...

    ecco non riesco a capire se ora come ora, così come sono messo con il codice postato c'è qualche possibilità di farlo...

    Mi spiego meglio..

    con questi script l'utente registrato si autentica e finisce in una pagina a lui libera perchè il "programma" memorizza i suoi dati..
    ecco ma come posso fare affinchè lo stesso programma gli mostri altri suoi dati connessi a quelli che ha memorizzato?
    Ho provato ad interagire con il database ma niente...

  27. #27
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    ad esempio vorrei che l'utente una volta entrato nella pagina post-autenticazione veda nella stessa il suo id, il suo username e la sua squadra...

  28. #28
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Codice PHP:
    <?php
    session_start
    ();

    if(!isset(
    $_SESSION['user_id']))
    die(
    'Non sei loggato');

    //connessione al db (tuo stesso codice [obsoleto ma funzionante])

    $DB_host = 'host';
    $DB_user = 'miousername';
    $DB_password = '';
    $DB_name = 'miodatabase';

    $link = mysql_connect($DB_host, $DB_user, $DB_password);
    if (!
    $link) {
    die (
    'Non riesco a connettermi: ' . mysql_error());
    }

    $db_selected = mysql_select_db($DB_name, $link);
    if (!
    $db_selected) {
    die (
    "Errore nella selezione del database: " . mysql_error());
    }
    //fine connessione db

    $risultato = $mysql_query('SELECT * FROM utenti WHERE id='.mysql_real_escape_string($_SESSION['user_id'])); //sarebbe "SELECT * FROM utenti WHERE id=1" ("1" è un esempio)

    $riga = mysql_fetch_array($risultato);

    if(
    $riga)
    echo
    'Il tuo username è: '.$riga['nome'].' mentre il tuo id è: '.$riga['id']; //come id avresti potuto benissimo usare anche $_SESSION['user_id'] visto che è la stessa cosa
    else
    echo
    'Errore: sei loggato ma non sei stato trovato nel database!';
    ?>
    Prova a vedere le somiglianze con il tuo script che fa il login: alla fine anche quando un utente si logga devi leggere il database...

    p.s: ho utilizzato la mysql_fetch_array() perché ho visto che l'hai utilizzata sopra. In generale io preferivo usare la mysql_fetch_assoc() perché non sono presenti i risultati con chiave numerica, ma solo un array associativo. Puoi simulare la mysql_fetch_assoc() passando un opportuno secondo parametro alla mysql_fetch_array().

    Ricorda comunque che tutte le funzioni che iniziano per mysql_ sono deprecate, come fa presente la documentazione che ti ho linkato

    Ciao!
    Ultima modifica di alemoppo : 02-04-2014 alle ore 19.00.11

  29. #29
    goalmanager non è connesso Utente
    Data registrazione
    08-03-2014
    Messaggi
    140

    Predefinito

    Grazie Ale!! Lo provo subito e ci studio su!!

    Io stavo provando con $_SESSION['user_id'] ma non ci riuscivo.. perchè non ho fatto la connessione al database...

    ecco questo mi fa capire che forse non ho chiaro il concetto...potresti dirmi se sbaglio adesso dal punto di vista concettuale:

    loggandosi un utente immagazzina i suoi dati in $record, che viene dichiarato uguale a $_sessione così che quando si apre la nuova pagina (alla quale in origine non si può accedere se non si è loggati) e si dichiara la sessione aperta i suoi dati vengono riconosciuti e rimangono immagazzinati in $_session. Quindi se io dopo connetto il database, posso prendermi i dati dalla $_session e renderli visibili... giusto? Perchè non ho capito il ruolo della sessione aperta sennò...
    io pensavo che la sessione aperta (il materiale che ho sorvola molto sul punto) volesse dire libero accesso anche al database (che quindi non andava riaperto) ma vedo che quindi avevo capito male...
    Ho problemi dal punto di vista concettuale della cosa...l'iter serve a immagazzinare i dati per quando si accede ad una pagina protetta...ma una volta aperta occorre riaprire la connessione al database praticamente...

  30. #30
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    La sessione è solamente una variabile. Nella variabile tu (giustamente) ci salvi l'id dell'utente: un numero.
    Il database non centra nulla. La connessione al database devi farla sempre quando vuoi interagire con il database.

    Ciao!
    Ultima modifica di alemoppo : 02-04-2014 alle ore 20.16.28

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •