Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Creare una nuova variabile

    sul mio sito ho creato una area riservato dove è possibile accedere dopo essersi registrati.

    tra i dati della registrazione c'è il campo email, quindi presente anche nel mio database.

    ora vorrei creare la varaibile $email dove, e quando mi serve, potrò far visualizzare l'email dell'utente collegato. come posso fare per crearla??

    aiutooo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi usare le variabili di sessione...

    p.es.:
    Codice PHP:
    $email = (isset($_SESSION['email']))?($_SESSION['email']):(''); 
    avendo cura di impostarla nello script dove ci si "logga" con:
    Codice PHP:
    $_SESSION['email'] = $email

    ...c'è molto da "studiare" per le variabili di sessione... ma le poche righe sopra potrebbero risolvere: prova!

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Maro quante parentesi!!!!

    pare corretto cmq nn usare le parentesi anche dove nn servono .

    Codice PHP:
    $email = (isset($_SESSION['email'])) ? ($_SESSION['email']) : ('') ;

    // puoi anche scriverlo cosi' 

    $email = isset($_SESSION['email']) ? $_SESSION['email'] : '' ;

    // Molto piu' pulito. 
    Cmq le sessioni sono un campo spesso ostico. Ognuno le usa e les gestice come crede.
    Fai sempre attenzione a non allocare troppi dati per l'utente , per il resto puoi le usarai come meglio credi.

    Piccola nota:
    in php puoi generare dinamicamente praticamente ogni cosa da variabili a funzioni ad interi oggetti con tanto di metodi etc.

    prova questo codice :

    Codice PHP:
    $name "ciao" ;
    $
    $name "hello";
    echo 
    $ciao
    e vedi che succede

  4. #4
    le variabili dinamiche ora non fanno al mio caso.

    devo creare la pagina recupera password, che compie le seguenti funzioni

    1. preleva i dati dal form compilato dall'utente
    2. controlla prima se esiste il nick (se no da errore) e controlla se l'email inserira sia uguale all'email nel record dove ha trovato il nickname (se no da errore)
    3. genera una stringa casuale che sarà la password
    4. cambia la password con i caratteri generati
    5. invia l'email con la nuova password all'email fornita dall'utente


    per i punti 1-3-5, ho già tutto pronto
    per il punto 2 ho creato la struttura degli if e degli else, mi manca la query da eseguire sul db (se sempre si debba eseguire una query XD)
    per il punto 4 mi manca la query, ma ancora ci devo proprio arrivare (diciamo che è il punto abbasta semplice, è solo una query senza controlli ecc ecc).

    ora quello che vi chiedo se è possibile fare questa ricerca nel database e farmi restituire qualche info, che ne so tipo il numero della riga o qualche cosa di simile per far controllare anche l'email.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Per le query:

    Il punto 4 è un semplice "INSERT".
    Il punto 2 pare sia una SELECT con due campi da verificare, tipo: SELECT * FROM users WHERE nick='$nick' AND mail='$mail'

    Solo un'osservazione sulle parentesi: è meglio invece metterle in questi casi.
    In generale si può scegliere di fare una cosa o l'altra, ma fornendo indicazioni si suppone a chi probabilmente ha qualche difficoltà è meglio essere più "precisi" possibile... al massimo un'osservazione tipo "può essere sufficiente...".
    Nel caso dell'inizializzazione della varibile con l'operatore ternario, avendo già le parentesi impostate è poi molto semplice fare delle modifiche a uno dei tre operandi che potrebbero trarre in inganno chi non è particolarmente "ferrato" (come suppongo te, in questo caso)... ecco il perchè delle parentesi...

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Io eviteri una la query di select proposta.

    Codice PHP:
    SELECT FROM users WHERE nick='$nick' AND mail='$mail' 

    In quanto, se nn hai precedentemente controllato il corretto escaping delle stringhe inserite, qualsiasi persona conosca sql injection potrebe ottenere dati oppure cancellarti in toto il database.

    Ricorda sempre di controllare se le magic_quotes sono abilitate.

    una cosa del tipo

    Codice PHP:


    $name 
    $_REQUEST[name] ;

    if( 
    get_magic_quotes_gpc() )
       
    $namestripslahes($name) ;

    $conn mysql_connect("server","user"ì,"pwd") ;
    // OPPURE usa la tua funzione-classe di connessione al db
    // senno la funziona usata sotto non puo' operare

    $name mysql_real_escape_string($name) ;

    // E solo a questo punto inserisci la variabile nella stringa di querying sql. 
    Non credo ci sia molto altro da dire sul punto 2, la query e' assolutamente necessaria e va fatta con attenzione. Se fai questi controlli eliminerai tantissimi problemi su possibili iniezioni di codice sql.

    Mi pare cmq di capire che trovi difficolta' al punto 4.
    Credo che sia oppurtuno per te scrivere una funzione che generi un codice nuovo per la password e la salvi nel db.

    Innanzi tutto dovrai fare un'update e nn una insert se la pwd e' salvata sulla stessa tabella/riga.

    Puoi usare una timestamp con un piccolo random per generare la password poi magari passi tutto ad una funziona di hashing come md5 e ne estrapoli solo una porzione.

    Sennò puoi lavorare con le funzioni char() ord() dei su valori generati dalla rand() per ottenere il codice che ti serve.

    Le soluzioni sono le piu' svariate dipende tutto dal livello di sicurezza che vuoi tenere e da quanto vuoi smazzarti con il codice.


    P.S.
    La mia era una semplice osservazione sulla "pulizia del codice".
    Oguno metta le parentesi come gli pare.
    Ed effettivamente per chi e' poco esperto l'uso sovrabbondante di parentesi puo' essere di aiuto a capire come si suddividono le differenti istruzioni-controlli etc....

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Sottoscrivo in generale... intanto per le query la questione delle variabili relativamente all'uso di mysql_real_escape_string ([I]faccio presente comunque che per la query io ho scritto "tipo..." perchè intendevo mostrare il formato, non il codice finale da usare[/I[) e poi certamente verificare se fare un INSERT o un UPDATE.

  8. #8
    grazie a tutti... ora prova a completare la pagina, aggiungendo il criptaggio della password come consigliato (di base già c'è solo nel cambio password non era ancora previsto).

    poi penso che sia meglio un upload che un insert

    dato che deve modificare solo un valore della tabella del database

    (giusto per informarvi il database in questione è formato da una sola tabella con le varie colonne circa 7)

    quindi penso sia meglio un upload giusto?

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Si l'operazione da eseguire e' quella di "UPDATE" non di upload occhio

    Attento che non ho parlato di criptaggio password.
    QUello che dicevo io era di usare funzioni di hashing che sono diverse da quelle di criptaggio.
    Cmq se vuoi criptarle non c'e' problema, solo una piccola nota sulla differenza tra funzione di hashing e criptaggio .

    Le funzioni di hashing generano una stringa con caratteri che dipendono dalla stringa di partenza.
    Una volta generata la hash non si puo' piu' risalire alla stringa originale. Qunidi non puoi ricostruire l'originale a partire da una stringa di hash. Inoltre bisogna considerare il fatto che le funzioni di hashing soffrono di collisioni. CIoe' stringhe diverse(in rari casi) hanno hash identici.

    Le funzioni di crittazione invece ti consentono (in base all'algoritmo) di tornare indietro, ossia un dato crittato puo' essere decrittato e quindi possono essere recuperate le informazioni originali.

    Solitamente per le password si usano gli hash per nascondere le password proprio per il fatto che la pwd cosi' non e' piu' recuperabile a meno di effetturare un brute-force. Quindi anche se se qlkuno dovesse scaricare la tabella utenti le pwd non potrebbero essere usate.

    Queste sono solo un paio di note di sicurezza si potrebbe stare mesi a paralare di ste robe.
    Ciauz.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.