webForumDet fria alternativet

Inloggning med mysqli och php

PHP

4 svar · 183 visningar · startad av puttemannen

Medlem sedan mars 20162 inlägg
Frågan#1

Hej!

Får inte nedanstående php/mysqli kod att jämföra den inmatade användarnamn och lösenord från formulär.
Att registrera användare funkar men varför funkar inte nedanstående kod? Vet att det är saker som ska till sen som session cookie osv men måste får denna att fungera först.
Tack på förhand!
Putte

<?php
require '../database/connect.php';

$conn = mysqli_connect($hn, $un, $pw, $db);
if(mysqli_connect_errno()){
echo "Not connected " . mysqli_connect_error();
}

if(isset($_POST['submit'])) {
$userN=mysqli_real_escape_string($conn,$_POST['anvandarid']);
$passW=mysqli_real_escape_string($conn,$_POST['password']);

$query = "SELECT \* FROM user WHERE username='$userN' AND password='passW'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);

if(!$row){
echo "Wrong user or password!";
}
else{
    echo "Welcome! You will now enter in 4 sec!";
    header("refresh:4; url=../backend/backend.php");
}

}
?>

Medlem sedan maj 20071 061 inlägg
#2

Du har glömt ett $ framför passW

$query = "SELECT * FROM user WHERE username='$userN' AND password='passW'";

Du har ingen kryptering på lösenordet ? (Inte ok mot användarna tycker jag att spara lösenordet som text, detta då många användare använder samma lösenord på flera sidor och det från din sida lätt kan snos.)
Minns inte kommandot men kolla in ex. detta DES_ENCRYPT, och istället för att bara skriva ...password='$passW'"; så skriver du ...password=DES_ENCRYPT('$passW')"; (tror det blir något sådant, men lär om det !

Medlem sedan mars 20162 inlägg
#3

Har satt dit ett $ nu men får samma tomma sida. Ska granska koden extra noggrannt. Håller med om lösenordet men eftersom det är första gången jag gör detta så vill ja ha så lite felkällor som möjligt. Får jag bara svar från mysql servern att det funkar så kan jag lägga till alla andra funktioner sen. Undrar varför jag inte får det att funka :-(

Medlem sedan jan. 2005953 inlägg
#4

Har du aktiverat visning av felmeddelanden på servern? Om inte, gör det.
Jag skulle tro att den vita sidan beror på att du försöker sätta en header efter att output har skickats. Men som sagt, aktivera felmeddelanden så får du svart på vitt vad det beror på.

Medlem sedan mars 2012121 inlägg
#5

Du bör även göra en lösning med prepared statments då din lösning lämnar dig öppen för SQL Injections.

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)