barentshavet Skrevet 23. januar 2013 Del Skrevet 23. januar 2013 Jeg har modifisert et script, som fungerer veldig bra. Men jeg vil gjerne at det i tillegg til at det sjekker ledigheten av brukernavnet, også sjekker om brukernavnet er "alpha-numeric", men ikke starter på ett tall. Noens om vet hvordan jeg kan inkludere dette? <?php include("mysqlcon.php"); $action = $_POST['action']; if($action == 'check_username') { $uusername = $_POST['username']; _check_username($uusername); } function _check_username($uusername) { $result = mysql_query("SELECT username FROM bhost_users where username='$uusername'"); $un = Array(); while ( $row = mysql_fetch_assoc($result) ) { $un[] = $row['username']; } if(in_array($uusername, $un)) { echo "<small><font color='red'><strong>{$uusername}</strong> er ikke ledig</font></small>"; } else { echo "<small><font color='green'><strong>{$uusername}</strong> er ledig</font></small>"; } } ?> Lenke til kommentar
Xyril Skrevet 23. januar 2013 Del Skrevet 23. januar 2013 (endret) if(in_array($uusername, $un)) && ctype_alnum($uusername) && !(ctype_digit(substr($uusername,0,1)))) Endret 23. januar 2013 av Xyril 1 Lenke til kommentar
barentshavet Skrevet 23. januar 2013 Forfatter Del Skrevet 23. januar 2013 (endret) if(in_array($uusername, $un)) && ctype_alnum($uusername) && !(ctype_digit(substr($uusername,0,1)))) Fikk det ikke helt til å fungere likevel slik som ønsket. Endret 23. januar 2013 av winter2012 Lenke til kommentar
barentshavet Skrevet 23. januar 2013 Forfatter Del Skrevet 23. januar 2013 Sett deg inn i regex Det er som regel enklere å lære det selv, så nå fungerer det Lenke til kommentar
Xyril Skrevet 23. januar 2013 Del Skrevet 23. januar 2013 Det er som regel enklere å lære det selv, så nå fungerer det Kva var løysninga? Lenke til kommentar
barentshavet Skrevet 23. januar 2013 Forfatter Del Skrevet 23. januar 2013 Kva var løysninga? Litt rotete, men det får fungere foreløpig. $action = $_POST['action']; if($action == 'check_username') { $uusername = $_POST['username']; _check_username($uusername); } function _check_username($uusername) { if(preg_match("/^[a-zA-Z0-9]+$/", $uusername)) { $dbnames = mysql_query("SELECT username FROM bhost_users WHERE username='$uusername'"); if(mysql_num_rows($dbnames) > 0 ) { echo "<div class='pull-right'><small><b><font color='red'>Brukernavnet er opptatt!</font></b></small></div>"; } else { echo "<div class='pull-right'><small><b><font color='green'>Brukernavnet er ledig</font></b></small></div>"; } } else { echo "<div class='pull-right'><small><b><font color='red'>Brukernavnet er ugyldig</font></b></small></div>"; } } Her er forresten JavaScripten om noen vil stjele dette. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function() { }); </script> <script type="text/javascript"> $(document).ready(function() { $("#username").blur(function() { $("#message").html('<div class="pull-right"><small>sjekker om bloggadressen er ledig..</small></div>'); var form_data = { action: 'check_username', username: $(this).val() }; $.ajax({ type: "POST", url: "usernamecheck.php", data: form_data, success: function(result) { $("#message").html(result); } }); }); }); </script> Lenke til kommentar
creator84 Skrevet 24. januar 2013 Del Skrevet 24. januar 2013 (endret) Hmm.. når jeg kjører en test på følgende så matcher den alt.. Den slipper også igjennom brukernavn som "4354325" og "243User".. Skulle ikke denne funksjonen gi "ugyldig brukernavn" ved disse? if(preg_match("/^[a-zA-Z0-9]+$/", $uusername)) Vet ikke om det var det du var ute etter, men jeg fant i det minste en løsning.. la til \D forran. $uusername = '51654856'; // ugyldig $uusername = '54asgasgf'; // ugyldig $uusername = 'asgasgf¤%#%'; // ugyldig $uusername = 'asgasgf54'; // gyldig $uusername = 'asgasgf'; // gyldig if(preg_match("/^\D[a-zA-Z0-9]+$/", $uusername)){ echo 'Gyldig'; } else{ echo 'Ugyldig'; } Kan også forkorte hele regex'n din til: if(preg_match("/^\D\w+$/", $uusername)) // matcher alt som over. if(preg_match("/^\w+$/", $uusername)) // Samme som din regex. \d, a digit ([0-9]) \D, a non-digit ([^0-9]) \w, a word (alphanumeric) ([a-zA-Z0-9]) \W, a non-word ([^a-zA-Z0-9]) \s, a whitespace ([ \t\n\r\f]) \S, a non-whitespace ([^ \t\n\r\f]) Kilde: http://proftpd.open-source-solution.org/docs/howto/Regex.html Endret 24. januar 2013 av creator84 1 Lenke til kommentar
barentshavet Skrevet 24. januar 2013 Forfatter Del Skrevet 24. januar 2013 Det var planen, men jeg utelot at brukernavn med tall foran ikke var gyldig. Takk for litt oppklarende informasjon likevel. Lenke til kommentar
Crowly Skrevet 25. januar 2013 Del Skrevet 25. januar 2013 (endret) Siden du først bruker jQuery bør du ta en titt på jQuery sin Validation plug in: http://bassistance.d...gin-validation/ http://docs.jquery.c...gins/Validation $('#form_id').validate({ rules: { username: { remote: { url: "usernamecheck.php", type: "post", data: { action: 'check_username' } }, required: true } } }); PHP: if ($_POST['action'] == 'check_username') { $uusername = $_POST['username']; _check_username($uusername); } function _check_username($uusername) { if(preg_match("/^[a-zA-Z0-9]+$/", $uusername)) { $sql=sprintf("SELECT username FROM bhost_users WHERE username='%s'", mysql_real_escape_string($uusername) ); $dbnames = mysql_query($sql); if(mysql_num_rows($dbnames) > 0 ) { echo json_encode('Brukernavnet er opptatt'); } else { echo json_encode(true); } } else { echo json_encode('Brukernavnet er ugyldig'); } } Endret 25. januar 2013 av Crowly Lenke til kommentar
barentshavet Skrevet 30. januar 2013 Forfatter Del Skrevet 30. januar 2013 Siden du først bruker jQuery bør du ta en titt på jQuery sin Validation plug in: http://bassistance.d...gin-validation/ http://docs.jquery.c...gins/Validation $('#form_id').validate({ rules: { username: { remote: { url: "usernamecheck.php", type: "post", data: { action: 'check_username' } }, required: true } } }); PHP: if ($_POST['action'] == 'check_username') { $uusername = $_POST['username']; _check_username($uusername); } function _check_username($uusername) { if(preg_match("/^[a-zA-Z0-9]+$/", $uusername)) { $sql=sprintf("SELECT username FROM bhost_users WHERE username='%s'", mysql_real_escape_string($uusername) ); $dbnames = mysql_query($sql); if(mysql_num_rows($dbnames) > 0 ) { echo json_encode('Brukernavnet er opptatt'); } else { echo json_encode(true); } } else { echo json_encode('Brukernavnet er ugyldig'); } } Smart, takk for hjelpen! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå