Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Moderazione registrazione utente

    Salve!

    Ho creato un sistema di registrazione nel mio script con tanto di login con e-mail e password (criptata MD5), che metodo mi consigliate per moderare l'attivazione dell'account, al momento chi si registra infatti è già attivo.

    Accetto consigli o tutorial!

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    basta non renderlo attivo con un flag nnel database. in genere io faccio così

    1) compilazione form con richiesta di iscrizione e invio della mail
    2) conferma della mail mediante un link
    3) eventuale attivazione dopo moderazione del profilo
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Mi consigli qualche script o tutorial?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Salve,

    a distanza di tempo ho messo in piedi questo script:

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    ini_set('display_errors'true);

    // richiamo lo script responsabile della connessione a MySQL
    include "../../connessione.php";

    // recupero il valore del parametro "id_utente"
    $id_utente $_GET['id_utente'];

    if(
    $_POST && isset($_GET['id_utente']))
    {
        
    aggiorna_record();
        }

    // esecuzione prima query 
    $query "SELECT * FROM utenti WHERE id_utente = $id_utente"
    $result mysql_query($query) or die (mysql_error()); 

    $attivo_array = array('No','Si');

      
    // ciclo tutti i record recuperati attraverso la nostra query 
      
    while ($row=mysql_fetch_assoc($result)){ 
        
    $attivo $attivo_array[$row['attivo']];
    }

    function 
    aggiorna_record()
    {
        
    // recupero i campi di tipo "stringa"
        
    $attivo trim($_POST['attivo']);

        
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        
    if(get_magic_quotes_gpc())
        {
      
    $attivo stripslashes($attivo);
        }
        
        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $attivo mysql_real_escape_string($attivo);

        
    $id_utente intval($_GET['id_utente']);

        
    // preparo la query
        
    $query "UPDATE utenti SET attivo='$attivo' WHERE id_utente = $id_utente";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
      die(
    "Errore nella query $query: " mysql_error());
        }
        
    // modifica eseguita con successo
        
    echo "Modifica eseguita con successo."
    }

        
    // chiudo la connessione a MySQL
        
    mysql_close();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Attiva/Disattiva Utente</title>
    </head>

    <body>
    <div id="container">
      <div id="main"><form action="" method="post" name="modulo_attiva-disattiva" id="modulo_attiva-disattiva">
    <table border="0" align="center" cellspacing="0" cellpadding="0">
      <tr>
        <td><div align="right"><strong>Attivo:</strong> </div></td>
        <td><select name="attivo" id="attivo">
      <option value="No" <?if($attivo==No) echo 'selected="selected"'?>>No</option>
      <option value="Si" <?if($attivo==Si) echo 'selected="selected"'?>>Si</option>
    </select></td>
      </tr>
      <tr>
        <td><div align="right"> </div></td>
        <td></td>
      </tr>
      <tr>
        <td colspan="2"><div align="center"><input name="salva" type="submit" class="submit" id="salva" value="Salva" /></div></td>
      </tr>
    </table>
    </form></div>
    </div>
    </body>
    </html>
    che mi dovrebbe permettere di attivare o disattivare un utente tramite un menu a tendina, il fatto è che funziona ma non riesco a far recuperare il valore impostato nel database (Si, No), mi compare l'errore

    "Notice: Undefined index: No in..." oppure "Notice: Undefined index: Si in..." riga 24.

    Cosa sbaglio?

  5. #5
    Il messaggio di errore mi sembra più che chiaro! Stai usando gli indici 'Si' e 'No' per accedere ad un array che invece non contiene tali indici!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Chiaramente non ho capito come risolvere, mi sembra di aver dichiarato con "$attivo_array = array('No','Si');" i value "No" e "Si", ma non vengono recuperati nel menu a tendina affinché venga aggiunto il codice "selected", cosa mi sfugge?

  7. #7
    Mi sa ce non hai ben chiara la differenza tra indice e contenuto di un array.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    No, su questa cosa mi stò trovando in difficoltà, è quando leggi e rileggi il codice e l'errore che c'è non lo trovi mai.

    Un aiutino per farne tesoro?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Tu dichiari questo
    $attivo_array = array('No','Si');

    e poi vuoi recuperarne il contenuto così
    $attivo = $attivo_array[$row['attivo']];

    in cui $row['attivo'] contiene 'Si' oppure 'No', giusto?

    Bene, il contenuto di un array si recupera indicando l'indice della posizione che si vuole recuperare.
    Nel tuo caso 'Si' e 'No' rappresentano il contenuto dell'array, non gli indici.

    Dopo la dichiarazione di $attivo_array prova a mettere queste 2 righe
    print_r($attivo_array);
    exit;

    Quella che ti viene fuori è la struttura dell'array, capisci ora la differenza tra indice e contenuto?

    Altra cosa, usa SEMPRE il tag completo <?php NON usare lo short tag <?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Chiaro, con print_r($attivo_array) ho visto che mi stampa 0 o 1 rispettivamente per No e Si ma continuo a non intercettare il valore per il menu a tendina.

    Scusate, le vostre indicazioni sono importanti.

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.