Gå til innhold

mysql_num_rows() expects parameter 1 to be resource


Anbefalte innlegg

Sliter med å finne ut noe her.

Får feilmelding når jeg prøver å logge inn med dette:

mysql_num_rows() expects parameter 1 to be resource

 

Går jeg tilbake på siden så registrerer den faktisk sessionet med brukernavnet selv om du taster et brukernavn som ikke finnes i databasen. Så tydeligvis sjekken av brukernavn og passord også feiler.

 

Her er sjekken min:

 

$Login=$_POST['Login'];
if($Login){ // Hvis du har klikket Login knappen
$brukernavn=$_POST['brukernavn'];
$_SESSION['brukernavn']=$brukernavn;
$md5_password=md5($_POST['passord']); // Krypter med md5
// Matche brukernavn og passord
$result=mysql_query("select * from users where brukernavn='$brukernavn' and passord='$md5_password' ");
if(mysql_num_rows($result)!='0'){ // Hvis det stemmer
session_register("brukernavn"); // Lager session brukernavn 
Header("Location: index.php");
exit;
}else{ // Hvis ikke stemmer
$loginfail="Ugyldig brukernavn eller passord";
}

} ?>

Lenke til kommentar
Videoannonse
Annonse

Det er ikke så rart at den registrerer brukernavnet i session, du setter jo den session rett etter at bruker har trykt login ($_SESSION['brukernavn']=$brukernavn;), altså FØR du sjekker om passord i det hele tatt stemmer. Og IKKE bruk session_register! Den er deprecated.

 

Så er spørsmålet, hvorfor funker ikke SQLen? Ser ikke ut som du er koblet til riktig eller noe.

 

Men! Du må teste slik, se hva spørringen sier:

$sql = "select * from users where brukernavn='$brukernavn' and passord='$md5_password' ";
echo $sql;
$result=mysql_query($sql);;

Lenke til kommentar

Det er da akkurat samme hvor jeg sier at Session variabel = brukernavn variabelen. Jeg bruker akkurat samme oppsett på en annen side hvor det funker. Sessionet brukernavn blir ikke startet før ETTER sjekken. Tror jeg har funnet ut av problemet, skal teste når jeg kommer hjem.

Lenke til kommentar

Når du skriver

$_SESSION['brukernavn']=$brukernavn; 

da er denne session opprettet. Hvis du skriver:

session_start();
$brukernavn = 'test';
$_SESSION['brukernavn']=$brukernavn; 
echo $_SESSION['brukernavn']:

Vil første besøk på siden ikke vise noen ting. Neste derimot vil vise "test".

 

Tilsvarende. Når du skriver

$_SESSION['brukernavn']=$brukernavn; 

og du etterpå skriver

session_register("brukernavn");

vil denne ikke fungere.

 

Du bør også unngå bruk av session_register da den er deprecated.

 

Uansett, feilen ligger her i MySQLen og det blir umulig å hjelpe dersom du ikke kan si hva SQLen sier. Men bra du får det til, husk å post hva som løste problemet her.

Lenke til kommentar

Et tips som ikke er direkte relatert til problemet:

SQL-spørringen du har der er sårbar for noe som heter «SQL injection». I korte trekk: Hva skjer hvis brukeren skriver inn brukernavnet admin'# ?

For å unngå problemet bør du se på funksjonen mysql_real_escape_string().

 

Ja, og problemet kommer av at SQL-spørringen ikke er gyldig. Verdien du får tilbake fra mysql_query er ganske garantert false. Funksjonen mysql_error() kan brukes for å finne ut hvilken feilmelding som genereres.

Endret av Ernie
Lenke til kommentar
  • 5 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...