Avatar billede unsafe Nybegynder
30. marts 2005 - 13:05 Der er 16 kommentarer og
1 løsning

Logger ind. på en måde :S?

Jah jeg har lavet et dejlig simpelt session login, som har virker for mig før. Den tjekker om brugeren og passworder findes og passer sammen, hvis de gør registrere den session'en username og password.
Her er min kode:

<?php
include("mysql.php");


if(!$_GET["action"])
{

$username = $_POST["username"];
$password = $_POST["password"];

$conn = mysql_query("SELECT password FROM forum_users WHERE username = '$username'");
$rs = mysql_fetch_array($conn);

if((mysql_num_rows($conn) != 0) and ($password == $rs["password"]))
{

session_register("username");
session_register("password");

header("Location: index.php");

} else {

session_start();
session_unset();
session_destroy();
header("Location: index.php?error=login");

}
} elseif ($_GET["action"] == "logud") {

session_start();
session_unset();
session_destroy();

header("Location: index.php");

}

?>

På index.php har jeg lavet en
<?php if (!$_SESSION["username"] AND !$_SESSION["password"]) {?>
Her vises en login form
<?php } else { ?>
Velkommen ind!
<?php } ?>

Men virker ikke rigtigt for mig, kan nogen komme med en løsning / forklarning på hvad jeg har gjort forkert og havd jeg skal gøre?

www.efy.dk/forum

I kan selv se :)

Evt oprette en hortig bruger www.efy.dk/forum/reg.php

På forhånd tak.
Avatar billede bromer Nybegynder
30. marts 2005 - 13:11 #1
Jeg kan nævne flere ting for dig som du bør lave lidt om på. Linierne her:

$username = $_POST["username"];
$password = $_POST["password"];

er lidt ligegyldige da du bare benytter $username,$password. Du bør lave noget escape_string agtigt her for at forhindre SQL injections.

Deruden lam denne kode-stump

$conn = mysql_query("SELECT password FROM forum_users WHERE username = '$username'");
$rs = mysql_fetch_array($conn);

if((mysql_num_rows($conn) != 0) and ($password == $rs["password"]))
{

laves om til:

$conn = mysql_query("SELECT COUNT(1) FROM forum_users WHERE username = '$username' AND password = '$password'");

if((mysql_num_rows($conn) == 1))
{

hvilket jeg personlig synes er mere overskueligt.
Avatar billede cyberdudes Nybegynder
30. marts 2005 - 13:13 #2
Så vidt jeg lige kan huske, så skal du vist have en session_start() hver gang du vil bruge sessions på en side...

Har du husket det på din index.php side???
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:14 #3
Okey, og så virker det eller?
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:15 #4
:O nej

Prøver jeg lige
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:16 #5
Efter login kommer der nu:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/efy.dk/efy.dk/httpd.www/forum/index.php on line 117
Avatar billede bromer Nybegynder
30. marts 2005 - 13:17 #6
Det må vel være op til at dig at afgøre. Men det er korrekt hvad cyberdudes siger. Ifølge [1] skal man benytte session_start() hvis man ikke har sat session.auto_start til 1

[1] http://dk2.php.net/manual/en/ref.session.php
Avatar billede bromer Nybegynder
30. marts 2005 - 13:18 #7
unsafe: Hvis du stadig benytter din egen query og ikke den jeg skrev til dig så skal du lige lave

$conn = mysql_query("SELECT password FROM forum_users WHERE username = '$username'");

om til

$conn = mysql_query("SELECT password FROM forum_users WHERE username = '$username'") OR DIE(mysql_error());
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:19 #8
:) okey, men anyways, nu er jeg logget ind.
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:22 #9
Ærgeligt jeg ikke kan give points til jer begge, men da det var session_start(); der løste mit problem bliver det nød til at blive cybardudes.

Men tak for hjælpen bromer ;)

(Smid et svar cyberdudes)
Avatar billede bromer Nybegynder
30. marts 2005 - 13:24 #10
du kan sagtens give point til os begge, men du bør i dette tilfælde kun give til cyberdues da det var ham der løste dit problem :)
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:25 #11
:) troed jeg ikke man kunne, hehe. så smid også et svar bromer, du hjalp mig også ;)
Avatar billede bromer Nybegynder
30. marts 2005 - 13:27 #12
hmm. jo tak så da..
Avatar billede bromer Nybegynder
30. marts 2005 - 13:33 #13
nejnej.. hvad fik du nu lavet..
Avatar billede unsafe Nybegynder
30. marts 2005 - 13:44 #14
:O gav dig points?
Avatar billede bromer Nybegynder
30. marts 2005 - 13:49 #15
ja det ses. Men ville du ikke også cyberdudes point? Hvis du vil have dine point cyberdudes så meld lige ud så opretter jeg et spørgsmål du kan svare på.
Avatar billede cyberdudes Nybegynder
30. marts 2005 - 14:06 #16
Det er mig ligemeget med de points...

Bare glad for at jeg kunne hjælpe  :)
Avatar billede unsafe Nybegynder
30. marts 2005 - 14:06 #17
Nåå, jah, har ikke prøvet det med at give 2 personer points før, er lidt dum til det her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester