---
title: "sql-sats... none case sensitive..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/82398-sql-sats-none-case-sensitive"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mahedel"
published: "2003-07-21T03:19:54.000Z"
updated: "2003-07-21T11:05:22.000Z"
replies: 7
views: 490
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/php/82398-sql-sats-none-case-sensitive"
---

# sql-sats... none case sensitive...

## #1 — mahedel, 2003-07-21T03:19Z

blir så trött... har kikat på massa inlägg men hittar inget som funkar. 

kör webbservern på en linux burk. använder "varchar" på kolumnen. 

sql-sats... none case sensitive... vill ju kunna blanda små och stora bokstäver vid en inloggning för att passa alla. för vissa användare reggar med små och stora bokstäver sen kanske dom loggar in med bara små eller stora så det blir fel i inloggningen... 

fick ett tips om <http://se.php.net/strcasecmp> men det vill inte heller funka  eller jag kanske gör fel när jag inplanterar "strcasecmp". 

aja hoppas någon vet. 

tack på förhand 

/Martin

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

## #2 — Boogaloo, 2003-07-21T05:33Z

Det vore bra med lite kod men ja ja.

select \* from TABELL where lcase(LÖSENORD) like LCASE('inksicka_lösenord')

I php kanske det skulle se ut så här:
$sql = "select \* from TABELL where lcase(LÖSENORD) like LCASE('$password')"

Du kanske också vill använda dig av strtolower i php för att göra inskickade till lowercase.

$password = strtolower($password);

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

## #3 — mahedel, 2003-07-21T09:41Z

tänkte skicka lite kod

tänkte skicka lite kod så alla får sammanhanget.

index.php:

i index.php finns det en form som skickar anv namn och password ($login_user och $login_pass).

sen skickas allt vidare till loggain.php:

```php
<?
@session_start();
@session_register("login_user");
@session_register("login_pass");
@$pass = md5($pass);
@$login_user = $user;
@$login_pass = $pass;
?>

<?
if (!$loggain)
echo "<title>Komjunity.net</title><link rel=\"stylesheet\"
href=\"style.css\"><table width=\"400\" border=\"1\" bordercolo
cellpadding=\"2\" cellspacing=\"2\" bgcolor=\"#FFFFFF\"><tr><td
bordercolor=\"#FFFFFF\" class=\"maintext\">Fel!<br><br><font
face=\"verdana\" size=\"1\">Inloggningen gick inte att
fullfölja...</font></td><tr><td
bordercolor=\"#FFFFFF\"><a href=\"index.html\">Försök
igen</a></td></tr></table>";
?>

<?
if($loggain){
 if($user=="")
  {
   echo "<font face=\"verdana\" size=\"1\">Användarnamn saknas!<br><a href=\"index.html\">Tillbaka</a>";
  }
 else if($pass=="")
  {
   echo "<font face=\"verdana\" size=\"1\">Lösenord saknas!<br><a href=\"index.html\">Tillbaka</font>";
  }
 else
  {
        require(".login");
  }
?>

<?
}
?>
```

.login:

```php
<?require("db.php")?>
<html>
<head>
<title><?=$login_user?> försöker logga in på <?include("doman.php");?></title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body>

<?
if($login=1) {

         $open = mysql_connect("localhost", "$dbu", "$dbp");
         $sql = mysql_db_query("filip", "SELECT * FROM mingla WHERE username = '$login_user'", $open);
         $rad = mysql_fetch_array($sql);

         if($login_user == $rad["username"] & $login_pass == $rad["password"]) {

               //echo("Du loggas in...");
               echo("<script language=JavaScript>");
               echo("self.location.replace('start.php')");
               echo("</script>");

           }

            else {
            echo "<title>Komjunity.net</title><link rel=\"stylesheet\"
href=\"style.css\"><table width=\"400\" border=\"1\" bordercolo
cellpadding=\"2\" cellspacing=\"2\" bgcolor=\"#FFFFFF\"><tr><td
bordercolor=\"#FFFFFF\" class=\"maintext\">Fel!<br><br><font
face=\"verdana\" size=\"1\">Inloggningen gick inte att fullfölja...</font></td><tr><td
bordercolor=\"#FFFFFF\"><a href=\"index.html\">Försök igen</a></td></tr></table>";
            }
            ?>

</body>
</html>
<?
}
?>
```

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

## #4 — @nders, 2003-07-21T10:18Z

I php kan du använda [strtoupper()](http://se2.php.net/manual/sv/function.strtoupper.php) för att göra om en sträng till versaler. I MySQL heter motsvarigheten UCase(). Om du jämför inmatat värde konverterat till endast versaler med fältinnehållet konverterat på motsvarande sätt borde du alltså få en jämförelse som är icke skiftlägeskänslig.

Om jag var du skulle jag ha med både användarnamn och lösenord i WHERE-delen av frågan, och sedan bara kontrollera om den gav något svar eller inte. SQL-frågan kan se ut så här:

```php
         $sql = mysql_db_query("filip", "SELECT * FROM mingla WHERE UCase(username) = '" . strtoupper($login_user) ."' AND UCase (password) = '" . strtoupper($login_pass) . "'", $open);
```

Jag hoppas att jag fick dit strängkonkateneringarna rätt, jag använder egentligen inte vare sig php eller MySQL. :)

Mvh,

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

## #5 — mahedel, 2003-07-21T10:55Z

LÖSNINGEN!!!

man är tvungen att köra strtoupper() på den andra raden under mysql frågan för att det ska fungera bra.

raden: 

```php
if($login_user == $rad["username"] & $login_pass == $rad["password"]) {
```

ersattes med: 

```php
if(strtoupper($login_user) == strtoupper($rad["username"]) && $login_pass == $rad["password"]) {
```

sen för att åäö skulle funka så använder jag mig av:

```php
$variabel_fran_user_input_ruta = str_replace("Å","å",$variabel_fran_user_input_ruta);
$variabel_fran_user_input_ruta = str_replace("Ä","ä",$variabel_fran_user_input_ruta);
$variabel_fran_user_input_ruta = str_replace("Ö","ö",$variabel_fran_user_input_ruta);
```

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

## #6 — @nders, 2003-07-21T10:56Z

Jag rekommenderar ändå att du gör jämförelsen i SQL-frågan.

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

## #7 — mahedel, 2003-07-21T10:58Z

mm...

men när jag provade det så blev resultatet som innan case-sensitive.

då bytte jag för jag fick ett tips av en på en irc-kanal att byta som jag skrev.

/Martin

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

## #8 — @nders, 2003-07-21T11:05Z

Re: mm...

> **mahedel skrev:**
>
> men när jag provade det så blev resultatet som innan case-sensitive.

Du provade alltså med mitt kodexempel ovan? Då kan jag inte för mitt liv förstå resultatet. 

Fördelar med att göra jämförelsen i SQL-frågan:
\* Mindre kod.
\* Du sparar prestanda, eftersom du inte behöver loopa igenom ett resultatset och göra jämförelser på varje post.
\* Du sparar nätverkstrafik eftersom du egentligen inte behöver skicka någon data tillbaka från MySQL-servern till webservern. Det räcker egentligen med *SELECT 1 FROM...* och kontrollera om du får något tillbaka.

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/php/82398-sql-sats-none-case-sensitive
