• User

    Ho provveduto a eliminare la righa fin qua tutto ok, ma quando provo con il form di cancellazione mi dice:
    [HTML]Password e/o indirizzo email non valido[/HTML]
    Penso che riguarda questa parte del codice che non va:
    [PHP]$query = mysql_query("SELECT id FROM utenti WHERE mail = '$mail' AND pass = '$pass' LIMIT 1");
    // Controllo se la password sia giusta
    if(mysql_num_rows($query) == 0)
    die('Password e/o indirizzo email non valido');[/PHP]
    Eppure l'utente fittizio che ho creato è stato registrato correttamente; in quanto ho esaminato il DB è vi è inserito.

    Per quello che riguarda la fine del codice era un errore mio, invece di rimandare l'utente ad una pagina di conferma dell' avenuta cancellazione della sua registrazione avevo inserito un'interruzione del processo con un "die". Errore madornale :arrabbiato:
    Per adesso grazie, e spero che ce la faciamo a funzionare sto codice di cancellazione utente, aspetto un'ennesimo tuo parere.


  • User

    Ah dimenticavo un piccolo particolare, ma non sarebbe più giusto che l'utente che desidera eliminare la sua registrazione immetta nel form il suo nick "user" e il suo indirizzo email "mail" che "pass" e "mail" ?
    Ovviamente se consideri questa soluzione più giusta sarebbe opportuno avere il codice php e il form.
    grazie


  • ModSenior

    Solitamente viene chiesto solo email e password, inserire il nome utente mi sembra superfluo.
    La password l'abbiamo inserita come hash md5, pertanto devi sostiture questo:
    [php]
    $query = mysql_query("SELECT id FROM utenti WHERE mail = '$mail' AND pass = '$pass' LIMIT 1");
    // Controllo se la password sia giusta
    if(mysql_num_rows($query) == 0)
    die('Password e/o indirizzo email non valido');
    [/php]
    Con questo:
    [php]
    $pass = md5($pass);
    $query = mysql_query("SELECT id FROM utenti WHERE mail = '$mail' AND pass = '$pass' LIMIT 1");
    // Controllo se la password sia giusta
    if(mysql_num_rows($query) == 0)
    die('Password e/o indirizzo email non valido');
    [/php]


  • User

    Ok TheDarkita, risolto il problema per la cancellazione dell'utente, grazie.

    Ma sto testando in locale il codice per il recupero/sostituzione della pass come da te descritto nel tuo ultimo post in merito al recupero, purtroppo l'errore è sempre:
    [HTML]Notice: Undefined index: code in C:\Programmi\EasyPHP 3.0\www\recupero_password.php on line 6
    Link non valido, i motivi potrebbero essere i seguenti:

    • Hai già modificato la tua password
    • Hai seguito un link errato[/HTML]
      appena apro la pagina.

    Preciso che sto testando in locale.
    ecco il codice che avevi inserito:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');
    // Prelevo il codice trasmesso come variabile GET, il contenuto della variabile è nella url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $code = $_GET['code'];
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
    $code = addslashes($code);

    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utenti.id=utenti_recupero.r_utente WHERE code = '$code' LIMIT 1") or die(mysql_error());
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; modificato la tua password<br />- Hai seguito un link errato');
    

    // La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
    else
    mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");

    // Inseriscol'id dell'utente recuperato mediante la query in un array
    $recupero = mysql_fetch_array($query_recupero);
    // Creo una password di 8 caratteri alfanumerici
    $randomcode  = '';
    for($x=1; $x<=8; $x++)
        $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4
    
    // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database
    $hashrandomcode = md5($randomcode);
    // Aggiorno la password nel database
    mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['r_utente']}' LIMIT 1") or die(mysql_error());
    // Inviamo l'email all'utente
    $message = 'Gentile Utente, Abbiamo provveduto a modificare la sua password.<br />La sua nuova password &egrave;: '.$randomcode;
        // Header dell'email, per mandarla in formato html
        $headers = "From: Security Now <Nome [email protected]>\r\n";
        $headers .= "Reply-To: Nome [email protected]\r\n";
        $headers .= "Return-Path: Nome [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
        // Invio L'email
        mail($recupero['mail'], 'Reset password -  Area Privata', $message, $headers);
    die('Le abbiamo inviato un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?> [/PHP]


  • ModSenior

    Sostituisci questo:
    [php]
    $code = $_GET['code'];
    [/php]

    In questo:
    [php]
    $code = ((isset($_GET['code'])) ? $_GET['code'] : '');
    [/php]


  • User

    Non funge ancora la sostituzione della password
    Ho cambiato con :
    [PHP]$code = ((isset($_GET['code'])) ? $_GET['code'] : '');[/PHP]
    ma come prima all'apertura, solo con la scritta diversa:
    [HTML]Link non valido, i motivi potrebbero essere i seguenti:

    • Hai già modificato la tua password
    • Hai seguito un link errato[/HTML]

  • ModSenior

    Io non capisco come fa a funzionare ad un utente si e ad uno no. 😄
    Comunque quell'errore lo dava perchè nell'url in cui sei tu la variabile GET code non veniva passata, l'url dove lo hai preso? Manualmente?


  • User

    Mica ho capito cosa intendi per "l'url dove lo hai preso? Manualmente?"
    Be se intendi l'url del sito o dell' email? allora sono fittizi e la prova in locale.
    Se mi spieghi meglio, forse potrei darti più delucidazioni.
    grazie.


  • ModSenior

    L'url che visiti tu sembrerebbe sia pagina.php, e non pagina.php?code=MIOCODICE pertanto viene detto che il link non è valido.


  • User

    Dunque come devo risolvere?


  • ModSenior

    A quale url accedi?


  • User

    Ciao TheDarkita,
    cosa intendi con quale url accedo ?
    se parli dell'url del sito sta su altervista (visto che l'ho messo online ieri)
    comunque l'errore è sempre presente.
    se vuoi puoi andare a vederlo:
    [HTML]bjh.altervista.org[/HTML]
    il sito è a buon punto, ci sto ancora lavorando, e mi sono permesso di menzionarti nella pagina "advices" . Ovviamente è piuttosto spartano ma quasi funzionale: gli unici problemi che devo risolvere adesso sono il recupero/cambiamento della pass e la visualizzazione degli utenti con relativa cancellazione da parte dell' admin (che ho fatto con dreamweaver), ma non riesco ad accedere, si vede che dreamweaver ha dei problemi di script e collegamento al Db.
    Se hai qualche scritp da presentarmi per la cancellazione da parte dell'Admin degli utenti ben venga.
    Per adesso ti ringrazio per l'aiuto.
    ciao


  • ModSenior

    Ciao arkom,

    Nel sito hai messo il link errato, dovevi linkare la pagina che io ho chiamato recupero.php.


  • User

    Provvedo a cambiare, grazie.


  • User

    Grazie TheDarkita, risolto il problema della reset della password. Ho ripreso tutto il tutorial dall'ignizio e ho visto dove stavo sbagliando.
    Adesso mi guardo meglio quella della lista utenti.
    Ciao, al mio prossimo problema con il php.:o


  • User

    Ciao TheDarkita, riprendendo il discorso di qualche pagina indietro,
    volevo sapere come modificare il codice per visualizzare la lista utenti qua in basso, non visualizzando la password e aggiungere vicino ad ogni user un tasto di cancellazione, nel caso come amministratore volessi cancellare un utente specifico.
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');
    $query="select * from utenti order by user";
    $result= mysql_query($query);
    $numfields = mysql_num_fields($result);
    echo "<table>\n<tr>";
    for ($i=0; $i < $numfields; $i++)
    {
    echo '<th>'.mysql_field_name($result, $i).'</th>';
    }
    echo "</tr>\n";

    while ($row = mysql_fetch_row($result))
    {
    echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n";
    }
    echo "</table>\n";
    ?> [/PHP]
    Inoltre come potrei (per motivi estetici) integrare il codice dentro una tabella tra i tags "body".
    Grazie.
    Ah dimenticavo ho visto che hai efettuato la registrzione al sito.


  • ModSenior

    [php]
    <?php
    // Includo la connessione al database
    require('config.php');
    $query=mysql_query("select * from utenti order by user");

    echo '<table>';
    while($a = mysql_fetch_array($query))
    echo '<tr><td>'.$a['user'].'</td></tr>';
    echo '</table>';
    [/php]
    Per la cancellazione puoi utlizzare la pagina di cancellazione account con qualche piccola modifica.
    Si mi sono registrato, per provare il recupero password, altrimenti come vedevo cosa sbagliavi. 🙂


  • User Attivo

    Ciao!
    C'è qualche errore qui?

    [PHP]<?php
    require('config.php');
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
    <html xmlns="">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Area privata</title>
    </head>
    <body>
    <a href="">Pagina privata!</a><br /> // HO MODIFICATO METTENDO IL LINK E NON MI VA PIU'
    <br />
    <br />
    <a href="logout.php">Logout</a><br />
    </body>
    </html>[/PHP]

    Grazie!


  • ModSenior

    Non mi sembra di vedere nessun errore, che problemi ti dà?


  • User Attivo

    Appena clicco login mi esce

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\login.php:1) in c:\programmi\easyphp1-8\www\config.php on line 2

    Quando invece faccio il login mi esce questo

    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login.php:1) in c:\programmi\easyphp1-8\www\login.php on line 35

    La riga 35 è questa

    header('Location: privata.php');

    Io non ho spostato nulla di riga te lo garantisco, appena metto a href mi viene fuori questo, appena lo tolgo non me lo fà più...