Gå til innhold

[Løst] Sjekke brukernavn-ledighet


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av creator84
  • Liker 1
Lenke til kommentar

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 av Crowly
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...