Gå til innhold

PHP loginscript med oppslag i database


Anbefalte innlegg

Heisann... vi sitter med et loginscript hvor vi skal sjekke brukernavn og passord mot en database... Jeg prøvde med et vanlig query for å sjekke mot databasen:

include("db.php");
$sql = mysql_query("SELECT * FROM users");
$row = mysql_fetch_array($sql);
$ad_password = $row["nickname"];
$ad_username = $row["password"];

 

Dette funket dårlig... Scriptet funker dersom man setter faste navn på variablene som blir sjekket:

$ad_password = "testpw";
$ad_username = "testun";

 

Noen som har noen gode tutorials eller noen hjelp på dette området...?

MvH o2mlab

Lenke til kommentar
Videoannonse
Annonse

Aloha :cool:

 

En god begynnelse er å finne ut hva $row["nickname"]; egentlig inneholder;

echo $row["nickname"];

 

Deretter kan du også finne ut om det egentlig kommer noe resultat av spørringen:

echo mysql_numrows($sql);

 

Men jeg forstår ikke helt hvordan du kontrollerer at det er brukt rett brukernavn og passord?

 

mysql_query("SELECT *FROM users WHERE nickname = '".$username."' AND password = '".$password."' LIMIT 1")

Lenke til kommentar

$ad_password = $row["nickname"];
$ad_username = $row["password"];

er vel uansett feil?! skal det ikke være omvendt:

$ad_password = $row["password"];
$ad_username = $row["nickname"];

 

Og du burde helt klart kryptere passordet i databasen. Slik at du sjekker det krypterte av det brukeren sender mot det krypterte i databasen.

Lenke til kommentar

Kanskje dette kan hjelpe:

echo "
<form action=\"\" method=\"post\">
<p>Brukernavn<br /><input type=\"text\" name=\"nickname\" size=\"25\" /></p>
<p>Passord<br /><input type=\"password\" name=\"password\" size=\"25\" /></p>
<p><input type=\"submit\" value=\"Send\" name=\"Login\" /></p>
</form>
";

if ($_POST['Login']) {
$nickname = $_POST['nickname'];
$password = $_POST['password'];
$result = mysql_query("select id from users where nickname = '$nickname' and password = '$password'");
$check_login = mysql_num_rows($result);
if ($check_login > 0) {echo "Hallo " .$nickname;}
if ($check_login < 1) {echo "Brukernavn/passord er feil.";}
}

Merk at jeg ikke bruker noe form for kryptering av passord, men dette finner du enkelt ut av selv.

Lenke til kommentar

Problemet er løst, takker for alle svar :D

Jepp, kryptering skal foretas, og jeg har forstått hvordan dette skal gjøres, så det ordner seg... bare lære meg login i PHP først, stresser litt med å skulle lære seg PHP på 5 uker, hehe :) Men nå har jeg et nytt lite problem:

Jeg prøver meg på en spørring hvor jeg skal hente ut en variabel i session'en...

min spørring ser slik ut:

$bruker = mysql_query("SELECT userID FROM users WHERE nickname=$_SESSION['nickname']");

 

Er det noen feil i syntaxen her? Noe usikker... Eller er det rett og slett umulig å hente ut variabler fra session i en mysqlspørring??

Endret av o2mlab
Lenke til kommentar

Hmm... vil det da si at koden skal se noe lignende dette ut?

 

Kan jo også nevne at det jeg prøver å løse er å kunne poste en nyhet. Formet som poster nyheten skal ta i mot en hidden value. Value skal være userID fra tabellen users som må hentes via sessions (for innlogget bruker). Jeg prøvde da denne koden, men får ikke registrert valuen for hvilken bruker som poster nyheter:

 

$bruker = mysql_query("SELECT userID FROM users WHERE nickname=$_SESSION[nickname]");
       echo '<input type="hidden" name="author" value="'.$bruker.'">';

Endret av o2mlab
Lenke til kommentar

hmm, okaj... begynner å bli vanskelig å holde tunga rett i munnen i forhold til fnutter og strenger her nå, men er dette da noe i nærheten?

$bruker = mysql_query("SELECT userID FROM users WHERE nickname='$_SESSION[nickname]'");
       echo '<input type="hidden" name="author" value="'.$bruker.'">';

Lenke til kommentar
Men nå har jeg et nytt lite problem:

Jeg prøver meg på en spørring hvor jeg skal hente ut en variabel i session'en...

min spørring ser slik ut:

$bruker = mysql_query("SELECT userID FROM users WHERE nickname=$_SESSION['nickname']");

 

Er det noen feil i syntaxen her? Noe usikker... Eller er det rett og slett umulig å hente ut variabler fra session i en mysqlspørring??

dette skal fungere:

$bruker = mysql_query("SELECT userID FROM users WHERE nickname=" .$_SESSION['nickname']. "");

eller dette:

$nickname = $_SESSION['nickname'];
$bruker = mysql_query("SELECT userID FROM users WHERE nickname='$nickname'");

Lenke til kommentar

takker nok en gang for alle svar... Jeg har nå prøvd alle løsninger nevnt her, men fortsatt får jeg samme feilen... :hmm:

 

Prøver å se for meg noen logiske feil utover kodesnutten(e) jeg og dere har foreslått:

 

- jeg bruker en session_register('nickname'); når brukeren logger inn. Dette skal være nok får å kunne bruker $_SESSION['nickname'] som en variabel for å hente nickname i en spørring/PHP-kode?

 

-Session følger ikke med brukeren. Dette ser jeg egentlig på som lite sannsynlig, da jeg har en test som viser at brukeren er logget inn på siden så sant session er registrert, så jeg tviler på at det er et problem... derimot kan jeg såpass lite om dette at jeg ikke vil utelukke det, fram til noen med litt bedre peiling kan forsikre meg om at jeg kan utelukke det :)

 

ser vel på det første punktet som mest sannsynlig, at jeg på en eller annen måte må "vise" nickname i session... men jeg er usikker... koden for å logge inn ligger her, dersom den kan hjelpe noen...

Endret av o2mlab
Lenke til kommentar

du har da ikke hentet ut data slik du skal med en av mysql_fetch_* funksjonene?

 

mysql_query returnerer ikke kun det du spør etter fordi du tilfeldigvis bare hare en kolonne i din spørring.

 

hva om du "select * from whatnot", hva fordenter du da å få som retur fra mysql_query? en eller alle eller noen av kolonnene? en array kanskje? alle rader eller bare en?

 

se på mysql_query på no2.php.net

Lenke til kommentar

Nok en gang takk for alle svar og god hjelp, problemet er løst...

Jeg hadde ikke sendt med noen verdi for nickname i session... :blush:

 

Ikke lett å skulle få med seg alt... :innocent:

 

Men, som sagt, takker alle for svar :thumbup:

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å
  • Hvem er aktive   0 medlemmer

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