Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Övriga serverspråk > PHP

Inloggning med åäö

LP_MAXI
LP_MAXI

Gradering

#19645

Hallå.

Jag har en inloggning som fungerar som den ska så länge användarnamn och lösenord inte innehåller å,ä eller ö.

Men så fort jag har en användare som innehåller å,ä eller ö så får jag att det är fel användarnamn eller lösenord. Inget felmeddelande från PHP-koden utan jag skickas bara till fel-sidan som skall säga att det är fel uppgifter.

Varför är det så? Jag måste kunna ha å,ä och ö i både användarnamn och lösenord.

Min inloggningskod:


if (!isset($_POST['login-form'])){

  $_POST = db_escape($_POST);

  $sql = "SELECT id,companyURL FROM lm_users
         WHERE username='{$_POST['username']}'
         AND password='{$_POST['password']}'";
  $result = mysql_query($sql);

  // Hittades inte användarnamn och lösenord
  // skicka till formulär med felmeddelande
  if (mysql_num_rows($result) == 0){
    header("Location: /?fel=ja");
    exit;
  }
  else
  {
  // Sätt sessionen med unikt index
  $_SESSION['sess_id'] = mysql_result($result, 0, 'id');
  $_SESSION['sess_user'] = $_POST['username'];
 
  $CompanyURL = mysql_result($result, 0, 'companyURL');
  header("Location:" .$CompanyURL);
  exit;
  }
}

 

Funktionen db_escape ser ut så här:


function db_escape ($post)
{
   if (is_string($post)) {
     if (get_magic_quotes_gpc()) {
        $post = stripslashes($post);
     }
     return mysql_real_escape_string($post);
   }

   foreach ($post as $key => $val) {
      $post[$key] = db_escape($val);
   }

   return $post;
}

 

Kan e va nåt i den som stälelr till det?

Jag har följt denna guiden: http://www.phpportalen.net/viewtopic.php?t=4403

I min MySQL databas är tabbelens charset utf8 och collation utf8_swedish_ci Har tästat latin1 och latin1_swedish_ci med samma resultat.

Någon som har tips om varför det är så här och hur jag löser det?

http://www.lpmaxi.se/
ID: #19645 | Skapades: 2010-03-25 13:00:39 | Tråden har 9 svar och har lästs 960 gånger.

voigtan
voigtan

Gradering

#19646

Hur ser ditt html dokumentet ut då? kolla vad som finns i $_POST objekten

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19646 | Skapades: 2010-03-25 13:12:38

LP_MAXI
LP_MAXI

Gradering

#19647

Formuläret ser ut så här:


<form id="login-form" method="post" action="include/login-control.php">
<p>
<label>Användarnamn:</label><br />

<input type="text" name="username" id="username" /> <br />
<label>Lösenord:</label><br />
<input type="password" name="password" id="password" />
<input type="submit" value="Logga in" /> <br />
<span class="errorMessage">Felmeddelande</span>
</p>
</form>

I huvudet har jag bland annat detta;


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Kan inte skicka länken till hela sidan här då sidan är under uppbyggnad och chefen vill hålla det lite hemligt ännu.

http://www.lpmaxi.se/
ID: #19647 | Skapades: 2010-03-25 13:26:51

Enkel lösning: tillåt inte å, ä, ö i användarnamn. Finns ingen anledning till att göra det.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #19648 | Skapades: 2010-03-25 14:03:40

voigtan
voigtan

Gradering

#19649

se till att dokumentet är sparat som UTF-8 med, men vad får du om du skriver å ä ö som användarnamn?

enklaste är att debugar din sql fråga, hur ser den ut med å ä ö?

ÅÄÖ är ju inte helt fel, speciellt på lösenord, ger ännu fler tecken att gå igenom.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 25 mars 2010. Läs tidigare inlägg.
ID: #19649 | Skapades: 2010-03-25 15:05:20

LP_MAXI
LP_MAXI

Gradering

#19650

Jag måste kunna ha å,ä och ö både i användarnamn och lösenord. Men jag visste att den kommentaren skulle komma.

Jag hoppas att mina filer är sparade som utf8 eftersom det är NetBeans som skapar HTML grunden med UTF8.

Ett utan åäö blir så här och loggas in:

lyckad inloggning
SELECT id,companyURL FROM lm_users WHERE username='anv' AND password='pass'

En misslyckad inloggning med åäö blir såh är i SQL frågan:

ej lyckad inloggning
SELECT id,companyURL FROM lm_users WHERE username='anvåäö' AND password='passåäö'

Vad jag kan se just nu så ser jag inget fel i SQL frågan.

 

Kollade filen i anteckningar och den är sparad som utf8

http://www.lpmaxi.se/
Redigerades av LP_MAXI den 25 mars 2010. Läs tidigare inlägg.
Redigerades av LP_MAXI den 25 mars 2010. Läs tidigare inlägg.
Redigerades av LP_MAXI den 25 mars 2010. Läs tidigare inlägg.
ID: #19650 | Skapades: 2010-03-25 16:09:37

voigtan
voigtan

Gradering

#19651

kolla din databas att det att det är korrekt, allt lutar ju åt att databasen inte har lagrat korrekt data.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19651 | Skapades: 2010-03-25 16:35:53

LP_MAXI
LP_MAXI

Gradering

#19652

Det är rätt i databasen. Kolla denna bilden så ser du.


Inte krypterade lösenord nu, det kommer när det fungerar som det skall så är det nästa steg så det behövs inga onödiga kommentarer om det just nu.

http://www.lpmaxi.se/
Redigerades av LP_MAXI den 25 mars 2010. Läs tidigare inlägg.
ID: #19652 | Skapades: 2010-03-25 19:20:55

voigtan
voigtan

Gradering

#19653

Kolla funktionen utf8_decode() och se om det hjälper med att ha det för ditt användarnamn och lösenord.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19653 | Skapades: 2010-03-25 20:48:53

LP_MAXI
LP_MAXI

Gradering

#19654

Vi har löst det nu. Tackar för hjälpen med TeamViewer.

http://www.lpmaxi.se/
ID: #19654 | Skapades: 2010-03-25 20:51:33
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy