---
title: "Kolla om användarnamnet är upptaget"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/185009-kolla-om-användarnamnet-är-upptaget"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "noshornin"
published: "2010-10-22T17:51:22.000Z"
updated: "2010-10-23T14:47:51.000Z"
replies: 16
views: 1652
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/185009-kolla-om-användarnamnet-är-upptaget"
---

# Kolla om användarnamnet är upptaget

## #1 — noshornin, 2010-10-22T17:51Z

Jag undrar lite hur man enklast kollar om ett användarnamn är upptaget. Ska man loopa ut alla användarnamn i en js array och kolla om den finns med där eller finns det något bättre sätt?

Permalänk: https://www.webforum.nu/p/185009

## #2 — @nders, 2010-10-22T17:56Z

Du vill ha ajax.

Permalänk: https://www.webforum.nu/p/2257570

## #3 — nitro2k01, 2010-10-22T17:58Z

Förlita dig aldrig på att göra den typen av kontroller på klientsidan! Det är snorlätt att ta sig runt. Du bör på ett eller annat sätt anropa serversidan och göra ett databasanrop. Detta kan antingen ske genom AJAX eller genom att formuläret postas som vanligt och att ett felmeddelande skrivs ut. Att skicka hela listan med användarnamn blir inte bara tungt om sidan har många medlemmar, men du kanske inte vill att alla ska kunna se hela medlemslistan.

Permalänk: https://www.webforum.nu/p/2257572

## #4 — noshornin, 2010-10-22T17:59Z

> **[@nders skrev:](https://www.webforum.nu/p/1520549)**
>
> Du vill ha ajax.

Jag har aldrig jobbat med det typ. Skulle du kunna länka till något som går igenom hur man skulle kunna göra detta?

Permalänk: https://www.webforum.nu/p/2257573

## #5 — noshornin, 2010-10-22T18:04Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1520551)**
>
> Förlita dig aldrig på att göra den typen av kontroller på klientsidan! Det är snorlätt att ta sig runt. Du bör på ett eller annat sätt anropa serversidan och göra ett databasanrop. Detta kan antingen ske genom AJAX eller genom att formuläret postas som vanligt och att ett felmeddelande skrivs ut. Att skicka hela listan med användarnamn blir inte bara tungt om sidan har många medlemmar, men du kanske inte vill att alla ska kunna se hela medlemslistan.

jag hade tänkt att kontrollera allting med php efter att formuläret hade skickats. Men jag vet hur jobbigt det är att fylla i ett formulär och sedan behöva gå tillbaka och göra om allting för att man har skrivit något fel. Därför ville jag göra någon lösning i js. Ska kolla upp lite mer om ajax, det verkar inte egentligt så komplicerat

Permalänk: https://www.webforum.nu/p/2257575

## #6 — nitro2k01, 2010-10-22T18:46Z

> **[noshornin skrev:](https://www.webforum.nu/p/1520554)**
>
> Men jag vet hur jobbigt det är att fylla i ett formulär och sedan behöva gå tillbaka och göra om allting för att man har skrivit något fel.

Det är därför sidan som skriver ut felmeddelandet också ska skriva ut hela formuläret igen, med alla värden ifyllda. :)

Permalänk: https://www.webforum.nu/p/2257577

## #7 — noshornin, 2010-10-22T19:09Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1520556)**
>
> Det är därför sidan som skriver ut felmeddelandet också ska skriva ut hela formuläret igen, med alla värden ifyllda. :)

Hur fånigt det än låter har jag aldrig tänkt på att man kan göra så. Men hur som helst försöker jag fixa den här funktionen i ajax. Jag förstår inte riktigt hur ajax fungerar. Jag tänkte att jag kunde lägga upp koden här.

Det jag vill är att om användarnamnet är upptaget så ska bilden kryss visas: 

```
document.usernameImg.src="bilder/kryss.png";
```

 Om den inte är upptagen ska bilden check visas: 

```
document.usernameImg.src="bilder/check.png";
```

. så här ser functionen ut: 

```
function checkUsername(usernameValue){
	var usernameValue = usernameValue;
	if (usernameValue.length < 5){
		document.usernameImg.src="bilder/kryss.png";
		return;
	}
	if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}else{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlhttp.onreadystatechange=function(){
		if (xmlhttp.readyState==4 && xmlhttp.status==200){
			[U]document.usernameImg.src=xmlhttp.responseText;[/U]
		}
	}
	xmlhttp.open("GET","test2.php?q="+usernameValue,true);
	xmlhttp.send();

}
```

test2.php:

```
<?php
/* Connect to a MySQL server */ 
$mysqli = new mysqli('***', '****', '****', '*****'); 
if (mysqli_connect_errno()) { 
   printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error()); 
   exit; 
}

$user = $_GET["q"];
$sql = "SELECT username FROM medlemmar where username = ? LIMIT 1";
	
	if ($stmt = $mysqli->prepare($sql)) 
    {
		$stmt->bind_param("s", $user);
        $stmt->execute();
        $stmt->bind_result($username);
        $stmt->fetch();
	    $stmt->close();
	} 
	
	if($username != ""){
	echo "bilder/check.png";
	}else{
	echo "bilder/kryss.png";
	}
?>
```

Jag får felmeddelandet: Detaljerad information om felet på webbsidan

Meddelande: Ogiltigt egenskapsvärde.
Rad: 55
Tecken: 4
Kod: 0

rad 55 är den understrukna raden

Permalänk: https://www.webforum.nu/p/2257579

## #8 — aron, 2010-10-22T19:15Z

Stort H i Http

om det nu spelar nån roll..

Permalänk: https://www.webforum.nu/p/2257580

## #9 — noshornin, 2010-10-22T19:20Z

> **[aron skrev:](https://www.webforum.nu/p/1520559)**
>
> Stort H i Http
> 
> om det nu spelar nån roll..

vart då?

Det funkar nu i opera men inte i ie7.

Permalänk: https://www.webforum.nu/p/2257582

## #10 — aron, 2010-10-22T19:26Z

> **[noshornin skrev:](https://www.webforum.nu/p/1520561)**
>
> vart då?
> 
> Det funkar nu i opera men inte i ie7.

rad 55, men jag megachansade bara :D då jag såg den stavningen nån annanstans.

```
xmlHttp.responseText
```

Permalänk: https://www.webforum.nu/p/2257583

## #11 — noshornin, 2010-10-22T19:29Z

> **[aron skrev:](https://www.webforum.nu/p/1520562)**
>
> rad 55, men jag megachansade bara :D då jag såg den stavningen nån annanstans.
> 
>
>
> ```
> xmlHttp.responseText
> ```

tyvärr :(, jag bytte ut alla till stort h men det hjälpte inte.

Permalänk: https://www.webforum.nu/p/2257584

## #12 — noshornin, 2010-10-22T19:39Z

Nu helt plötsligt funkar det.

Permalänk: https://www.webforum.nu/p/2257585

## #13 — newseed, 2010-10-23T06:31Z

Istället för AJAX varför inte göra kolumnen för användarnamn unik i databasen? Sedan är det en smal sak av att hantera SQL-fel vilket du ändå bör göra. AJAX-varianten är främst bra om du vill ge tjänsten att informera användaren om felet innan formuläret skickas, du bör ändå alltid kontrollera allting på servern när du tar emot det.

Permalänk: https://www.webforum.nu/p/2257596

## #14 — noshornin, 2010-10-23T07:13Z

> **[newseed skrev:](https://www.webforum.nu/p/1520576)**
>
> Istället för AJAX varför inte göra kolumnen för användarnamn unik i databasen? Sedan är det en smal sak av att hantera SQL-fel vilket du ändå bör göra. AJAX-varianten är främst bra om du vill ge tjänsten att informera användaren om felet innan formuläret skickas, du bör ändå alltid kontrollera allting på servern när du tar emot det.

Det är ju det jag gör m8. Kontrollerar om det är upptaget innan formuläret skickas.

Permalänk: https://www.webforum.nu/p/2257598

## #15 — @nders, 2010-10-23T08:49Z

När det gäller såna här viktiga grejer är det inte dumt att göra kontroller på serversidan också. Vad händer om man har JavaScript avstängt i browsern?

Permalänk: https://www.webforum.nu/p/2257602

## #16 — GunnarD, 2010-10-23T09:24Z

> **[noshornin skrev:](https://www.webforum.nu/p/1520578)**
>
> Det är ju det jag gör m8. Kontrollerar om det är upptaget innan formuläret skickas.

Du bör nog också kolla det när formuläret skickas och du skall skapa användaren.

Om två användare sammtidigt vill skapa ett konto, så kommer bägge att få att det inte finns och om du då inte kollar när kontot skapas så kommer du få två konton med samma namn, alternativ den som skickar först får kontot och den andra får förhoppningsvis något fel tillbaka.

Permalänk: https://www.webforum.nu/p/2257603

## #17 — noshornin, 2010-10-23T14:47Z

> **[GunnarD skrev:](https://www.webforum.nu/p/1520584)**
>
> Du bör nog också kolla det när formuläret skickas och du skall skapa användaren.
> 
> Om två användare sammtidigt vill skapa ett konto, så kommer bägge att få att det inte finns och om du då inte kollar när kontot skapas så kommer du få två konton med samma namn, alternativ den som skickar först får kontot och den andra får förhoppningsvis något fel tillbaka.

jag är medveten om det. Jag hade tänkt att kontrollera allting igen innan det läggs till.

Permalänk: https://www.webforum.nu/p/2257618

---

Tråden på webben: https://www.webforum.nu/amne/javascript/185009-kolla-om-användarnamnet-är-upptaget
