Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106

    Evitare l'iscrizione a più utenti con lo stesso username

    Salve, sicuramente è un argomento che sarà stato preso in considerazione...
    In un database all'interno della tabella "utenti" ho creato i due famosi campi "username" e "password", che verranno riempiti tramite un form attraverso i $_POST[username] e $_POST[password] e fin qui tutto ok.
    Il problema è: come faccio a evitare l'iscrizione di utenti con la stessa username?; mi è stato suggerito di usare la funzione mysql_num_rows() all'interno di un ciclo while ma non riesco a realizzare il costrutto, qualcuno può postarmi qualche codice su cui possa capire la costruzione?
    Grazie anticipatamente
    Il sapere appartiene al mondo

  2. #2
    fai una queri tipo..


    $res = mysql_query("select * from tabellautenti where username = '{$_POST[username]}'");

    if(mysql_num_rows($res)) echo "username già utilizzato";
    else echo "ok";



  3. #3
    Allora fai una

    SELECT * FROM utenti where username="$_POST[username]"

    poi esegui la query, e fai il controllo sulla query con mysql_num_rows().

    implementi il tutto in una condizione if dicendo che se mysql_num_rows() ti restituisce un vaolore > 0 vuol dire che esiste già un utente che si è iscritto con quell'user...viceversa può procedere all'iscrizione...

    Matteo
    Lunga vita agli ULTRAS
    La nostra fede non si diffida..Ultras Liberi

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    mmazza che velocità!!! ma aspettavate sto post per rispondere? comunque ora provo tutti e due i metodi, ce ne sarà uno su due che mi funzionerà no? ho sono troppo ottimista....
    Comunque grazie per la shumyrisposta (shumy == 2003) vi faccio sapere appena provo
    Il sapere appartiene al mondo

  5. #5
    Originariamente inviato da kronoh
    comunque ora provo tutti e due i metodi, ce ne sarà uno su due che mi funzionerà no?
    sono uguali eh

    a parte piccole differenze sintattiche.. ma la logica è la stesa

    probabilmente lui ha scritto mentre scrivevo io e quindi non aveva vist la mia risposta


  6. #6
    Originariamente inviato da }gu|do[z]{®©

    probabilmente lui ha scritto mentre scrivevo io e quindi non aveva vist la mia risposta

    esatto ma mi hai battuto sul tempo ^_^
    Matteo
    Lunga vita agli ULTRAS
    La nostra fede non si diffida..Ultras Liberi

  7. #7
    tanto per completezza d'informazione .......

    SELECT COUNT(*) AS numero_utenti FROM ....................

    è mejo ^^

    infatti mysql invece di restituire tutta la tupla o acquisire i dati dal db si limita a estrarre il numero di chiavi presenti corrispondente a quel dato valore richiesto (ovviamente username deve essere una chiave unica)

    in questo modo alleggerisci TANTISSIMO il database

    il nome del campo "virtuale" (si possono assegnare i nomi ai campi creando degli ALIAS tramite AS) è numero_utenti

    ciaooo
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    allora, questa è la pagina....

    codice:
    <?php
    $connessione=mysql_connect("localhost","root","") or die(mysql_error());
    $scelta_db=mysql_select_db("iscrizione") or die(mysql_error());
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>iscrizione in corso...</title>
    </head>
    <body>
    <?php
    $flag_controllo=0;
    while(list($chiave, $valore)=each($_POST)){
    if(substr($chiave,0,3)=="ob_"){
    if($valore ==""){
    echo "non hai compilato il campo obbligatorio $chiave, l'iscrizione non può essere processata.";
    $flag_controllo=1;
    break;
    }
    }
    }
    if($flag_controllo==0){
    //formatta la data di nascita
    $data_nascita=$_POST[giorno]."/".$_POST[mese]."/".$_POST[anno];
    echo "la data di nascita è $data_nascita";
    $stringa_query="insert into utenti (username,password,nome,cognome,indirizzo,citta,provincia,indirizzo_email,data_nascita,data_registrazione) 
    values(\"$_POST[ob_username]\",\"$_POST[ob_password]\",\"$_POST[nome]\",\"$_POST[cognome]\",\"$_POST[indirizzo]\",\"$_POST[citta]\",$_POST[provincia],\"$_POST[ob_indirizzo_email]\",\"$data_nascita\
    ",now())";
    $iscrizione_utente=mysql_query($stringa_query) or die(mysql_error());
    } 
    ?>
    </body>
    </html>
    il codice:

    codice:
    $res = mysql_query("select * from utenti where username = '{$_POST[username]}'"); 
    if(mysql_num_rows($res)) {
    echo "username già utilizzato"; 
    else {
    echo "ok";
    }
    }
    deve essere inserito all'interno del while, quando finisce, o prima?
    perche all'interno del ciclo non funge...
    Il sapere appartiene al mondo

  9. #9
    if($flag_controllo==0){

    lo devi inserire non nel ciclo while ma subito dopo
    if($flag_controllo==0){ facendo un if annidiato dicendo

    If(mysql_num_row($stringa)>0
    // on si può fare l'iscrizione

    else

    metti il codice che hai scritto
    //formatta la data di nascita
    $data_nascita=$_POST[giorno]."/".$_POST[mese]."/".$_POST[anno];
    echo "la data di nascita è $data_nascita";
    $stringa_query="insert into utenti (username,password,nome,cognome,indirizz
    o,citta,provincia,indirizzo_email,data_n
    ascita,data_registrazione)
    values(\"$_POST[ob_username]\",\"$_POST[ob_password]\",\"$_POST[nome]\",\"$_POST[cognome]\",\"$_POST[indirizzo]\",\"$_POST[citta]\",$_POST[provincia],\"$_POST[ob_indirizzo_email]\",\"$data_nascita\
    ",now())";
    $iscrizione_utente=mysql_query($stringa_
    query) or die(mysql_error());
    }
    Matteo
    Lunga vita agli ULTRAS
    La nostra fede non si diffida..Ultras Liberi

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    scusami, ma sei sicuro che il flag lo devo mettere all'interno del ciclo while?
    Io il flag lo utilizzo proprio per interrompere il ciclo, se lo metto dentro il flag cosa mi fa variare?
    Comunque provo, e ti faccio sapere...
    Il sapere appartiene al mondo

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.