Just nu i M3-nätverket
Gå till innehåll

Inloggningsproblem


sjohan

Rekommendera Poster

Detta är min kod för inloggning. Jag har två problem med den. Delså så loggar den in alla oavsett om man finns med i databasen eller inte och sedan så lyckas jag inte få in id nummret i $_SESSION['uid']. Någon som vet hur jag kan göra??

 

<?

session_start();

 

//Öppnar databasen

$db = mysql_connect("localhost", "", "");

mysql_select_db("databas",$db);

 

//Väljer vilka kolumner i databasen som ska användas och kollar användarnamn och lösen. Om de är rätt så fortsätter koden.

$sql = mysql_query("SELECT user.namn,user.loser,user.id FROM user WHERE namn == '$anv' AND WHERE losen == '$losen', $db");

 

//Kollar om $sql är satt till något värde.

IF (isset($sql)){

//Skapar tre sessions och skickar vidare till framsidan

$_SESSION['login'] = 'inloggad';

$_SESSION['uid'] = "id";

$_SESSION['user'] = $anv;

header("Location:index.php?ID=main");

exit;

} else {

//Om lösenordet och användarnamnet inte fanns i databasen så skickas man till loginsidan med ett felmeddelande

header("Location:index.php?ID=logga_in&status=fel");

exit;

}

//Stänger databasen

mysql_close($db);

?>

 

[inlägget ändrat 2002-12-06 08:14:53 av sjohan]

Länk till kommentar
Dela på andra webbplatser

Du har ett fel i SQL-satsen som borde genererat felmeddelande:

 

 

WHERE namn == '$anv' AND WHERE losen == '$losen'

 

"AND WHERE" är inte korrekt syntax. Du ska bara ha ett WHERE i satsen, så byt "AND WHERE" mot "AND" och prova igen.

 

Dessutom ska du inte ha dubbla = i SQL-satsen, det räcker gott med ett enkelt.

 

[inlägget ändrat 2002-12-06 08:43:28 av .sun]

Länk till kommentar
Dela på andra webbplatser

Du har ett fel till, förutom det som .sun sagt, nämligen att du gör en koll isset($sql) vilken alltid kommer returnera sant om SQL-frågans syntax är korrekt, vilket den inte är nu.

 

Du har skrivit "loser" istället för "losen" i SQL-frågan, och du behöver inte referera till "user." vid varje fältnamn eftersom du bara väljer från en tabell. Sedan har du placerat citationsteckenet fel i slutet av frågan.

 

Dessutom är din uppbyggnad av SQL-frågan inte säker, samt du använder dig inte av superglobalerna.

 

Läs mina tips (rubrikerna 1. MySQL frågor samt 2. Formulär-indata):

//eforum.idg.se/viewmsg.asp?EntriesId=368153

 

Så här skulle jag skriva de nämnda sakerna:

$sql = mysql_query("SELECT namn,losen,id FROM user WHERE namn = '" . addcslashes($_POST["anv"], "\\'") . "' AND losen = '" . addcslashes($_POST["anv"], "\\'") . "', $db);

// Loginet finns
if (mysql_num_rows($sql)) {
} else {
// Felaktigt login
}

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...