Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    26

    controllare validità username

    Salve a tutti, ho creato un form per la registrazione per il mio sito web e non riesco a sistemare una cosa, ossia ho inserito una porzione di codice che permette di indicare all'utente intenzionato all'iscrizione se il suo nick scelto è disponibile oppure no.
    come devo sistemare tutto il codice in modo che quando un utente sceglie un nick che eventualmente è già stato scelto da un altro utente venga fermato al click del bottone submit? cioè gli venga indicato di immettere un nome diverso nel campo del form? (per esempio: che appaia un alert con scritto "attenzione:l'username da lei scelto non è disponibile, è pregato di inserirne un'altro."

    ---

    parte di codice presente nel file del modulo relativo alla validità dell'username:

    Codice PHP:
    <SCRIPT type="text/javascript">

    pic1 = new Image(1616); 
    pic1.src "loader.gif";

    $(
    document).ready(function(){

    $(
    "#username").change(function() { 

    var 
    usr = $("#username").val();

    if(
    usr.length >= 3)
    {
    $(
    "#status").html('[img]immagini/loader.gif[/img]');

        $.
    ajax({  
        
    type"POST",  
        
    url"check.php",  
        
    data"username="usr,  
        
    success: function(msg){  
       
       $(
    "#status").ajaxComplete(function(eventrequestsettings){ 

        if(
    msg == '')
        { 
            $(
    "#username").removeClass('object_error'); // if necessary
                    
    document.getElementById("msg1").style.display "none";
                    $(
    "#username").addClass("object_ok");
            $(
    this).html('[img]immagini/tick.png[/img]<font color="green">Disponibile</font>');
        }  
        else  
        {  
                    
    document.getElementById("msg1").style.display "none";
            $(
    "#username").removeClass('object_ok'); // if necessary
            
    $("#username").addClass("object_error");
            $(
    this).html(msg);
        }  
       
       });

     } 
       
      }); 

    }
    else
        {
        $(
    "#status").html('[img]http://images.findicons.com/files/icons/1687/free_web_design/16/sign_warning.png[/img]<font color="red">Inserire almeno [b]3[/b] caratteri</font>');
            $(
    "#username").removeClass('object_ok'); // if necessary
            
    document.getElementById("msg1").style.display "none";
        $(
    "#username").addClass("object_error");
        }
      });

      });

    //-->
    </SCRIPT> 
    ---

    codice della pagina che si occupa degli errori:

    Codice PHP:
    <?php
    // This is a sample code in case you wish to check the username from a mysql db table

    if(isSet($_POST['username']))
    {
    $username $_POST['username'];

    $dbHost 'localhost'// usually localhost
    $dbUsername '*************';
    $dbPassword '*************';
    $dbDatabase '*************';
    $tbl_name = *************';

    $db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
    mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");

    $sql_check = mysql_query("select id from members where username='".
    $username."'") or die(mysql_error());

    if(mysql_num_rows($sql_check))
    {
    echo '
    [img]immagini/cross.png[/img]<font color="red">L'username [b]'.$username.'[/b] è già in uso</font>';
    }
    else
    {
    echo 
    '';
    }
    if(
    strlen($username) > 15)
    {
    echo 
    '[img]http://images.findicons.com/files/icons/1687/free_web_design/16/sign_warning.png[/img]<font color="red">Inserire al massimo [b]15[/b] caratteri.</font>';
    }

    }
    ?>

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, credo che con il solo php non si riesca a fare nulla quindi ti consiglio o ajax oppure qualche escamotage php/javascript. A esempio, una soluzione che mi viene in mente adesso, forse non molto ortodossa, è quella di popolarti delle hidden con tutte le username che già hai (attraverso PHP), e prima di validare il form controlli con un ciclo l'esistenza di quello che hai scelto con tutti quelli presenti nelle hidden (attraverso javascript). Una cosa del genere...

    Codice PHP:
    .....
    //all'interno del form
    <?php
    $strsql
    ="Select username from members"//se non ho capito male questa dovrebbe essere la struttura della tabella mysql 
    $ris=mysql_query($strsql);
    $numusers=0;
    while(
    $riga=mysql_fetch_array($ris)){
    $numusers++;
    echo 
    "<input type='hidden' id='user$numusers'  value='".$riga["username"]."'>";
    }
    .......
    echo 
    "<input type=text id='txtusername'>"//immaginando che sia la text dove l'utente inserisce la sua username

    echo "<input type='submit' value='Invia' onclick='invia($numusers)'>";//immaginando che sia questo il bottone per il submit
    ?>


    //nella tua funzione javascript per l'invio

    function invia(n){
    for(i=1;i<=n;i++){
    el1=getelementbyid("user"+i);
    el2=getelementbyid("txtusername");
    if(el1.value==el2.value) alert("La user scelta è già presente!");
    }
    Probabilmente ci sono soluzioni migliori, ma per adesso mi è venuta solo questa

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.