Gå til innhold

Hjelp med logonscript. [LØST]


Anbefalte innlegg

Hei.

 

I forbindelse med at jeg ønsker å lære php, så prøver jeg og kode noen ting. Jeg har laget en funksjon som legger til brukerer i en database, en til å se brukerene med, og så prøver jeg å lage en login.

 

Problemet er at jeg får opp en feilmelding, som jeg ikke skjønner hvordan jeg skal rette opp, kan noen hjelpe meg?

 

Her er koden:

<?php
if (isset($_SESSION['bruker']))
 include('admin.php');
else
{
 if (isset($_POST['bruker']))
 {
  $inbruker = $_POST['bruker'];
  $inpassord = $_POST['passord'];

  include('sql/connect.php');
  $con = mysql_connect($dbhost,$dbuser,$dbpass);
  if (!$con)
  {
die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("eigil", $con);

  $result = mysql_query("SELECT * FROM bruker
  WHERE brukernavn='$inbruker'");

  $row = mysql_fetch_array($result);

  $bruker = $row['bruker'];
  $passord = $row['passord'];
  $fornavn = $row['fornavn'];
  $etternavn = $row['etternavn'];
  $tilgang = $row['tilgang'];

  if($inpassord = $row['passord'])
  {
$_SESSION['bruker'] = $bruker;
$_SESSION['passord'] = $passord;
$_SESSION['fornavn'] = $fornavn;
$_SESSION['etternavn'] = $etternavn;
$_SESSION['tilgang'] = $tilgang;
  }
 }
 else
 {
  echo "
  <form method='post' action='index.php?side=logg'>
  Brukernavn:<br> 
  <input name='bruker' type='text'><br>
  Passord:<br>
  <input name='passord' type='password'><br>
  <input type='submit' value='Logg deg på'>
  </form>";
 }
}
?>

 

Dette scriptet er includert i index.php, hvor session_start ligger.

 

Feilmeldingen jeg får er:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/eigil/sider/logg.php on line 23

Endret av obrestad
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

endre

$result = mysql_query("SELECT * FROM bruker
  WHERE brukernavn='$inbruker'");

  $row = mysql_fetch_array($result);

om til dette:

$result = mysql_query("SELECT * FROM bruker
  WHERE brukernavn='$inbruker'");
  echo mysql_error();
  $row = mysql_fetch_array($result);

og fortell hva den nye feilmeldingen som kommer opp sier :)

Lenke til kommentar
Gjest Slettet+142

...Og siden vi er igang; Du bør alltid sjekke om mysql_query gikk bra:

$result = mysql_query("SELECT * FROM bruker
  WHERE brukernavn='$inbruker'"); // Utfører SQL

if(!$result) return "Feil [mysql_query]: ".mysql_error(); // Sjekker om SQL gikk bra
if(mysql_num_rows($result)<1) return "Ingen rader returnert"; // Sjekker om noen rader ble returnert

// ALT OK!
$row = mysql_fetch_array($result); // Henter ut første rad

return er gjerne ikke beste valg for å returnere en feilmelding. die() er bra, men vil avslutte parsingen av koden.

Lenke til kommentar
Gjest Slettet+142

Kanskje jeg er den eneste, men jeg skjønte ikke helt hva det siste du spurte om nå var?

Hvordan sjekke? Om innholdet er av riktig type, eller om den inneholder en spesifik tekst eller tegn?

Lenke til kommentar

Vær obs på at mysql_real_escape_string kan krasje med magic_guotes_gpc. Fører til dobbelslashing.

 

En løsning er:

 

function myescape($msg) {

if (!is_numeric($msg)) {

if(get_magic_quotes_gpc()) $msg = stripslashes($msg);

$msg = mysql_real_escape_string($msg);

}

return $msg;

}

Lenke til kommentar

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å
×
×
  • Opprett ny...