Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17

    Come mandare dati a utente che se li è dimenticati

    salve a tutti, son alle prime armi col php. Ho iniziato a fare una specie di piccola community nel mio sito, costruendolo con dreamweaver. Mi ha facilitato di molto quindi la registrazione e il login...ora sono alle prese quindi con 1 problema che dreamweaver non sa risolvere in maniera facile...e ho iniziato a studiar 1 po il php..l'algoritmo del mio problema è :
    -costruire una pagina chiedi_dati.php che contiene un form dove l utente mette il suo bell username. questo form si chiama Richiedi e ha 1 campo Username.Il form ha 1 azione POST che mi manda alla pagina chiedi.php, che dovrebbe contenere le istruzioni per:
    - controllare se l utente esiste nel database
    - se si, allora prendi il record corrispondente nel database
    (username, password, email) e mandagli 1 email con questi
    dati.
    - se no dagli 1 pagina di errore.

    naturalmente è la pagina chiedi.php che non so fare!
    avevo tentato la seguente cosa:
    da notare che nella prima istruzione io voglio chiamare cosa l utente m scrive nel form Richiedi ...e penso che qui sia l errore, o x lomeno il piu grosso

    <?php
    $form_username = $_POST['Username'];
    $query = "SELECT Username FROM tab_utenti WHERE Username = '$form_username' ";
    $esegui_query = mysql_query($query);
    while ($risultato == mysql_fetch_array($esegui_query)) {
    $controllo = $risultato[0];
    }

    if ($controllo)
    {
    #mandagli l email..so che bisogna usare la funz mail()
    }
    else
    {
    echo "Non esiste l'username";
    }
    ?>

    qualcuno m aiuta?

  2. #2
    per mandare la mail si usa sì la funzione mail (sul manuale di php trovi spiegato come usarla)...

    solitamente per il recupero delle informazioni si chiede di compilare un campo dove mettere username o email con cui ci si è iscritto...poi, se non hai la password criptata nel database mandi direttamente la mail con la password, altrimenti se ce l'hai criptata e non la puoi decriptare generi una password casuale da assegnare, la invii all'utente e poi sta a lui decidere se cambiarla o meno...

    ciao
    ratatuia

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    ratatuia, allora, io la funzione mail la so fare..volevo far dare all utente l username nel form. e perfetto il form (che ho chiamato Richiedi)n ho problemi a farlo. Il form ho messo che ha il metodo POST alla pagina chiedi.php. In questa pagina dovrei mettere "il seguente algoritmo"(che non riesco a fare):
    - controlla se l username immesso c'è dentro il database
    - se c'è mandagli la password con la funz mail
    - se non c'è dai la pagina di errore...

    ti metto il codice che avevo scritto:

    <?php
    $form_username = $_POST['Username'];
    $query = "SELECT Username FROM tab_utenti WHERE Username = '$form_username' ";
    $esegui_query = mysql_query($query);
    while ($risultato == mysql_fetch_array($esegui_query)) {
    $controllo = $risultato[0];
    }

    if ($controllo)
    {
    #mandagli l email..so che bisogna usare la funz mail()
    }
    else
    {
    echo "Non esiste l'username";
    }
    ?>

    la seguente pagina n fa nulla e dopo 15 sec m dice che il time is expired...

  4. #4
    Originariamente inviato da switchak
    ratatuia, allora, io la funzione mail la so fare..volevo far dare all utente l username nel form. e perfetto il form (che ho chiamato Richiedi)n ho problemi a farlo. Il form ho messo che ha il metodo POST alla pagina chiedi.php. In questa pagina dovrei mettere "il seguente algoritmo"(che non riesco a fare):
    - controlla se l username immesso c'è dentro il database
    - se c'è mandagli la password con la funz mail
    - se non c'è dai la pagina di errore...

    ti metto il codice che avevo scritto:

    <?php
    $form_username = $_POST['Username'];
    $query = "SELECT Username FROM tab_utenti WHERE Username = '$form_username' ";
    $esegui_query = mysql_query($query);
    while ($risultato == mysql_fetch_array($esegui_query)) {
    $controllo = $risultato[0];
    }

    if ($controllo)
    {
    #mandagli l email..so che bisogna usare la funz mail()
    }
    else
    {
    echo "Non esiste l'username";
    }
    ?>

    la seguente pagina n fa nulla e dopo 15 sec m dice che il time is expired...
    allora,

    qui
    while ($risultato == mysql_fetch_array($esegui_query))

    togli == e metti = poichè stai facendo un assegnamento, non un confronto
    in generale però ti conviene impostare la risoluzione in maniera diversa, semplicemente esegui la query e con mysql_num_rows controlli che la query coinvolga un record, altrimenti vuol dire che l'username non esiste...tradotto in termini di codice sarebbe qualcosa come qui di seguito

    $query = mysql_query("SELECT username FROM users WHERE username = '".mysql_escape_string($_POST["username"])."'");
    $num = mysql_num_rows($query);
    if ($num > 0)
    {
    $risultato = mysql_fetch_assoc($query);
    mail();
    } else {
    print "username non presente.";
    }


    ciao
    ratatuia

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    dai che ci siamo quasi....praticamente ora non m da errori di sintassi, ma logici..perche non mi entra nell if e mi stampa sempre username non presente.
    il codice è:

    <?php
    $query = mysql_query("SELECT Username FROM tab_utenti WHERE Username = '".mysql_escape_string( $_POST["Username"])."'");
    $num = mysql_num_rows($query);
    if ($num > 0)
    {
    $risultato = mysql_fetch_assoc($query);
    mail("info@email.it","info","info");
    print "email inviata";
    }
    else
    {
    print "username non presente";
    }
    ?>

    problema 1: se cambio la condiz dell if e metto <= 0 e nella mail metto 1 email normale, effettivamente manda l email, quindi vuol dire ke non fa bene il confronto fra gli username!

    problema 2: come faccio a prendere il record corrispondente all username..? per esempio potrei fare 1 variabile $Password ma a cosa le metto il valore?

    scusa, son abbast ignorantello..ti ho detto che ho iniziato da poco...

  6. #6
    Originariamente inviato da switchak

    problema 1: se cambio la condiz dell if e metto <= 0 e nella mail metto 1 email normale, effettivamente manda l email, quindi vuol dire ke non fa bene il confronto fra gli username!
    prova a stampare la query a video in maniera tale da vedere cosa realmente passi a mysql...eventualmente testala anche con phpmyadmin


    problema 2: come faccio a prendere il record corrispondente all username..? per esempio potrei fare 1 variabile $Password ma a cosa le metto il valore?
    la password la salvi senza criptarla? se sì allora la query deve diventare "SELECT username, password FROM tabella WHERE" ecc ecc e poi la username la recuperi tramite $risultato[username] e la password come $risultato[password]

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    sul 2 problema ho capito! grazie!
    ma sul 1 non so come stampare a video cosa fa la query...

  8. #8
    Originariamente inviato da switchak
    sul 2 problema ho capito! grazie!
    ma sul 1 non so come stampare a video cosa fa la query...

    porti l'argomento di mysql_query in una variabile e poi fai stampare la variabile...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    allora ti scrivo il codice e poi commentiamo...

    <?php
    $query = mysql_query("SELECT Username,Password,Email FROM tab_utenti WHERE Username = '".mysql_escape_string($_POST["Username"])."'");
    $num = mysql_num_rows($query);
    print "$num";
    $prova = "SELECT Username,Password,Email FROM tab_utenti WHERE Username = '".mysql_escape_string($_POST["Username"])."'";
    print "$prova";

    if ($num > 0)
    {
    $risultato = mysql_fetch_assoc($query);
    mail("$risultato[Email]","I tuoi dati nel Fedesito","I tuoi dati sono: "."\nUsername: ". $risultato[Username]."\nPassword: ".$risultato[Password]."\nEmail: ".$risultato[Email]);
    print "email inviata\n";
    }
    else
    {
    print "$num";
    }
    ?>

    L'output della stampa della variabile prova è il seguente:
    SELECT Username,Password,Email FROM tab_utenti WHERE Username = 'Federico'
    effettivamente volevo proprio trovare l username Federico..ma n so xke non incrementi $num
    come vedi avevo anke provato a stampare $num ma n me lo stampa!

  10. #10
    Originariamente inviato da switchak
    allora ti scrivo il codice e poi commentiamo...

    <?php
    $query = mysql_query("SELECT Username,Password,Email FROM tab_utenti WHERE Username = '".mysql_escape_string($_POST["Username"])."'");
    $num = mysql_num_rows($query);
    print "$num";
    $prova = "SELECT Username,Password,Email FROM tab_utenti WHERE Username = '".mysql_escape_string($_POST["Username"])."'";
    print "$prova";

    if ($num > 0)
    {
    $risultato = mysql_fetch_assoc($query);
    mail("$risultato[Email]","I tuoi dati nel Fedesito","I tuoi dati sono: "."\nUsername: ". $risultato[Username]."\nPassword: ".$risultato[Password]."\nEmail: ".$risultato[Email]);
    print "email inviata\n";
    }
    else
    {
    print "$num";
    }
    ?>

    L'output della stampa della variabile prova è il seguente:
    SELECT Username,Password,Email FROM tab_utenti WHERE Username = 'Federico'
    effettivamente volevo proprio trovare l username Federico..ma n so xke non incrementi $num
    come vedi avevo anke provato a stampare $num ma n me lo stampa!

    hai provato a prendere quella query e testarla in phpmyadmin?

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.