• User Attivo

    Ho provato ora, mi inserisce l'utente nel database, blocca l'accesso alla pagina privata se l'account non è attivato però non invia la mail e quindi è impossibile attivarsi..
    Ci sarà un prolema nel codice di invio mail.. :mmm:


  • ModSenior

    Il codice di invio mi sembra corretto, non stampa alcun errore?
    Hai controllato la posta indesiderata?


  • User Attivo

    Ho ricontrolato ora in posta, non c'è manco tra le indesiderate..
    Non da errori, finita la registrazione reindirizza in registrato.php, ma la mail non arriva, mentre al login funziona perchè mi dice che l'account non è stato ancora attivato..


  • ModSenior

    Devi sostituire gli header, mettendo un email valida, altrimenti vengono cestinate automaticamente dalla maggior delle società...
    Hai inserito un indirizzo email valido?


  • User Attivo

    Si, facendo un esempio se la mia mail è pinco(a)pallino.it ho inseirito:
    Dove (a) = @ (Se no non mi invia la risposta..)

    // Header dell'email, per madnarla in formato html
    $headers = "From: NomeSito <pinco(a)pallino.it>\r\n";
    $headers .= "Reply-To: pinco(a)pallino.it\r\n";
    $headers .= "Return-Path: pinco(a)pallino.it\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    Provato anche a registrarmi con diversi domini di posta, ma non arriva
    Però non sono sicuro su gli \r\n, non vorrei che li conta come indirizzo email, e lo vede come formato non valido.. E' giusto così o devo eliminare \r\n?


  • ModSenior

    E' corretto cosi...


  • User Attivo

    Niente, sono stato un'oretta sù, ho girato un po su google provando gli esempi in giro ma non riesco a farmela mandare, il risultato rimane lo stesso


  • User Attivo

    Come non detto, lo spazio web dove ho hostato i file non ha attivao la funzione mail(), ora l'ho richiesta, e poi credo funzionerà.

    Alla prossima!


  • ModSenior

    Ok 😄


  • User Attivo

    Rieccomi, allora mi hanno attivato il mail(), ho provato lo script e mi è arrivata la mail, solo che cliccando sul link di attivazione mi da questo errore:

    Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/hosting/g/gianluigi/www/attivazione.php on line 17
    Errore, link non valido

    Cosa può essere?


  • ModSenior

    Prova a sostituire questo:
    [php]
    $attivato = mysql_affected_rows($update);
    [/php]
    Con questo:
    [php]
    $attivato = mysql_affected_rows();
    [/php]


  • User Attivo

    Perfetto ora viualizza solo la scritta "Account Attivato" come dovrebbe.
    Ora provo a farmi da solo un po di pagine, se ho bisogno ripasso più tardi 😄


  • ModSenior

    Bene 😄

    Buon Lavoro 😉


  • User Attivo

    Rieccomi!
    Problema di oggi, ho fatto un pagina membri.php, dove appunto vedere la lista di tutti i membri in ordine di username, e (miracolo!) ci sono quasi riuscito, ho solo il problema che mi fa vedere tutte le informazioni visibili dal database, ad esempio anche la password (criptata, ma comunque non è bello da vedere 😄 e manco sicuro, penso).
    Quindi chiedo come posso fare per visualizzare solo le voci che voglio io?
    Il codice:
    [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, in questo modo se ho per esempio 10 utenti o 1000, mi mostra comunque la lista utenti su una pagina.. Come fare per dividere la lista in pezzi, per esempio 20 nomi per pagina?

    Come sempre mi sa che chiedo poco :bigsmile:, grazie a chi può rispondermi 🙂

    :ciauz:


  • ModSenior

    Per stampare solo il nome utente puoi fare cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Query per ottenre la lista utenti
    $query="select * from utenti order by user";
    $result= mysql_query($query);

    echo '<table>';
    while($row = mysql_fetch_array($result))
    {
    echo '<tr><td>'.$row['username'].'</td></tr>';

    }
    echo "</table>\n";
    ?>
    [/php]


  • User Attivo

    Il codice funziona ed è anche più pulito e comprensibile 😉
    Per la cosa di stabilire un numero massimo di utenti da visualizzare per pagina come si può fare?
    Se ho 32 utenti e voglio fare per ogni pagina 10 utenti, per far fare quest suddivisione in automatico come si può fare?


  • ModSenior

    Ciao Gigi991,

    Puoi fare cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Pagina
    $page = (isset($_GET['page'])) ? $_GET['page'] : 1;

    // Numero record di partenza per la selezione
    $limit = ($page-1)*10;

    // Query per ottenre la lista utenti
    $query="select * from utenti ORDER BY user LIMIT $limit,10";
    $result= mysql_query($query);
    // Numero utenti = mysql_num_rows($result)
    // Dividiamo per 10 che è il numero di utenti per pagina
    // ceil arrotonda per eccesso
    $pagine = ceil(mysql_num_rows($result)/10);

    echo '<table><tr><td>';
    // Pagine
    for($i=1; $i<=$pagine; $i++)
    {
    echo '<a href="membri.php?page='.$i.'">'.$i.'</a> ';
    }
    echo '</td></tr>';
    while($row = mysql_fetch_array($result))
    {
    echo '<tr><td>'.$row['username'].'</td></tr>';

    }
    echo "</table>\n";
    ?>
    [/php]

    Se hai dubbi sul codice chiedi pure 😉


  • User Attivo

    Si visto che ci sono queste 2 cose:

    // Numero record di partenza per la selezione
    $limit = *($page-1)20;

    E quindi anche il pezzo aggiunto dove è richiamata la variabile
    // Query per ottenre la lista utenti
    $query="select * from utenti ORDER BY user LIMIT $limit,20";

    Non li ho capiti bene, sopratutto il significato del -1 vicino a $page..

    Per il ceil una conferma
    // ceil arrotonda per eccesso
    $pagine = ceil(mysql_num_rows($result)/20);

    Questo in pratica dice che se per esempio ho 46 utenti /20 verrà 2,XX, e quindi arrotonda a 3 perchè serve comunque una terza pagina per gli ultimi 12 nomi, giusto?


  • ModSenior

    Ciao Gigi991,

    Il -1 serve a far si che:
    Se la pagina richiesta è la 1, Farà 1-120, quindi deve partire dal record numero 0
    Se la pagina richiesta è la 2, Farà 2-1
    20, quindi deve partire dal record numero 20

    I record ovviamente partono da 0, non da 1.

    **LIMIT $limit,20

    **Dice di partire dal record $limit, e prendere 20 record.
    Per il ceil è esatto in quel modo.

    Spero di essere stato chiaro, se hai altri dubbi chiedi pure 😉


  • User Attivo

    Tutto chiaro per quello sritto sopra.

    Ora, sono tornato alla pagina di registrazione, e tanto per complicarmi di più la vita ho deciso di inserire un menu a tendina con tutte le province italiane..
    Per non sprecare spazio nel database ho creato una nuova tabella 'province' con i campi "id" e "nome", in modo da registrare come dato nella tabella utenti solo il numero id della provincia, e rendere visibile sulle pagine php (e nel menù a tendina) il nome per intero.
    Nella vecchia tabella 'utenti' ho aggiunto il campo residenza.

    Nella pagina registrati.php ho aggiunto dentro l campo form:

    [PHP] <select name="provincia">
    <?php
    $strQuery="select * from province";
    $elenco=mysql_query($strQuery) or die(mysql_error());
    while($row_province=mysql_fetch_array($elenco)){
    $id=$row_province[id];
    $nome=$row_province[nome];
    echo '<option value="'.$id.'">'.$nome.'</option>';
    }
    ?>
    </select>[/PHP]

    Si vedono tutte le provincie, solo che non me lo registra nel database..
    Ho provato anche a fare non so quante modifiche,ma il risultato era lo stesso..
    Torno a chieervi aiuto dopo ore per fare sta cavolata 😢