Avatar billede klasker Nybegynder
05. maj 2003 - 15:45 Der er 22 kommentarer og
1 løsning

Loginsystem virker ikke

Okay, jeg prøver at gøre sådan så man kan logge ind med brugernavn og password.
Jeg har lavet denne kode, og er ved at blive sindsyg over at lige meget hvad jeg taster ind som brugernavn og adgangskode så logger den mig på som den bruger jeg nu tastede ind (også selvom den ikke engang findes).
Her er så koden:
<?php
header("location: ../");

session_start();

$test_username = $_REQUEST['username'];
$test_password = $_REQUEST['password'];

$conn = mysql_connect("localhost", "kattana", "*******");
mysql_select_db("kattana");

$user_row = mysql_query("select * from users where username='$test_username'");

if ($result = mysql_fetch_array( $user_row )) {
    extract($result);
    $succes = ($test_password == $password);
} else  {
    $succes = false;
}

if ($succes == true) {
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $test_username;
    echo "Now logged in as: $test_username";
}

mysql_close();

?>


Kan noget fortælle mig hvad der er galt og hvad jeg skal gøre for at få det til at fungere?
Avatar billede exp-ralle Nybegynder
05. maj 2003 - 15:49 #1
Bruger du den "ældre" version af PHP som bruger session_register og    $HTTP_SESSION_VARS i stedet for $_SESSION?
Avatar billede klasker Nybegynder
05. maj 2003 - 15:50 #2
Ups. Da jeg skrev 'noget' (i sidste linje) mente jeg selvfølgelig 'nogen'
Avatar billede postndk Nybegynder
05. maj 2003 - 15:51 #3
du mangler == i din øverste if sætning, der er kun =
Avatar billede klasker Nybegynder
05. maj 2003 - 15:51 #4
Hvad er forskellen på $_SESSION og $HTTP_SESSION_VARS?
Avatar billede exp Juniormester
05. maj 2003 - 15:52 #5
tror exp-ralle er inde på noget af det rigtige...
Avatar billede jakoba Nybegynder
05. maj 2003 - 15:52 #6
pas på med at bruge true og false som værdier. det er kun i meget nye versioner af php. brug evt 0 og 1 i stedet:

<?php
header("location: ../");

session_start();

$true = 1;
$false = 0;

$test_username = $_REQUEST['username'];
$test_password = $_REQUEST['password'];

$conn = mysql_connect("localhost", "kattana", "*******");
mysql_select_db("kattana");

$user_row = mysql_query("select * from users where username='$test_username'");

if ($result = mysql_fetch_array( $user_row )) {
    extract($result);
    $succes = ($test_password == $password) ? $true : $false ;
} else  {
    $succes = $false;
}

if ($succes == $true) {
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $test_username;
    echo "Now logged in as: $test_username";
}

mysql_close();

?>
Avatar billede klasker Nybegynder
05. maj 2003 - 15:53 #7
postndk: Det er meningen. Den sætter $result = mysql_fetch_array( $user_row ) og derefter evalueres $result som derefter enten er et array (som evalueres til true) eller false.
Avatar billede jakoba Nybegynder
05. maj 2003 - 15:55 #8
du tager ikke højde for at $test_password evt kan være en tom streng "".
Avatar billede klasker Nybegynder
05. maj 2003 - 15:55 #9
Jeg prøvede det du sagde jakoba. Der sker nøjagtig det samme som før :(
Avatar billede klasker Nybegynder
05. maj 2003 - 15:56 #10
Jeg ved godt at $test_password kan være tom. Men inden jeg ville begynde på det ville jeg lige se om jeg kunne få det andet til at fungere. Jeg taster ikke tomme strenge ind i password-feltet.
Avatar billede jakoba Nybegynder
05. maj 2003 - 16:07 #11
hvad med at debugge lidt:

<?php
header("location: ../");

session_start();

$true = 1;
$false = 0;

$test_username = $_REQUEST['username'];
$test_password = $_REQUEST['password'];

echo "<br>test_username er ";                  // debug linie
var_dump( $test_username );                    // debug linie
echo "<br>test_password er ";                  // debug linie
var_dump( $test_password );                    // debug linie

$conn = mysql_connect("localhost", "kattana", "*******");
mysql_select_db("kattana");

$user_row = mysql_query("select * from users where username='$test_username'");

if ($result = mysql_fetch_array( $user_row )) {
    echo "<br>result er ";                  // debug linie
    var_dump( $result );                    // debug linie
    extract($result);
    $succes = ($test_password == $password) ? $true : $false ;
} else  {
    $succes = $false;
}

echo "<br>succes er ";                  // debug linie
var_dump( $succes );                    // debug linie
if ($succes == $true) {
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $test_username;
    echo "Now logged in as: $test_username";
}

mysql_close();

?>
Avatar billede jamal_s Nybegynder
05. maj 2003 - 16:09 #12
<?php
header("location: ../");

session_start();

$conn = mysql_connect("localhost", "kattana", "*******");
mysql_select_db("kattana");

$user_row = mysql_query("select * from users where username='$_REQUEST[username]' and password='$_REQUEST[password]'");

if (mysql_num_rows($user_row)>0) {
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $_REQUEST['username'];
    echo "Now logged in as: ".$_REQUEST['username']";
} else {
  echo "forkert brugernavn
}

?>
Avatar billede klasker Nybegynder
05. maj 2003 - 16:20 #13
jakoba>
Okay, jeg prøvede det lige og det gav dette med en falsk bruger:
test_username er string(5) "asger"
test_password er string(7) "klasker"
succes er int(0)
--og dette med en ægte bruger:
test_username er string(7) "kattana"
test_password er string(6) "orange"
result er array(4) { [0]=> string(7) "kattana" ["username"]=> string(7) "kattana" [1]=> string(6) "orange" ["password"]=> string(6) "orange" }
succes er int(1)
Avatar billede klasker Nybegynder
05. maj 2003 - 16:23 #14
Hvis succes er 0 med den falske må der være noget i vejen med min IF sætning ikke?
men hvad? Den ser sådan ud:
if ($succes == $true) {
Avatar billede jakoba Nybegynder
05. maj 2003 - 16:26 #15
kunne det være du tager fejl når du tror den if bliver udført ?

if ($succes == $true) {
    echo "Den kom virkelig ind i den if sætning.";
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $test_username;
    echo "Now logged in as: $test_username";
}

det er før set at rester fra en gammel programstump har 'blandet sig' og fået folk til at drage en forhastet konklusion.
Avatar billede klasker Nybegynder
05. maj 2003 - 16:32 #16
Okay, det viser sig at den IKKE kommer ind. Men hvorfor gør den ikke det?
Avatar billede klasker Nybegynder
05. maj 2003 - 16:40 #17
jamal_s>
Jeg prøvede din løsning også men der sker præcis det samme :(
Avatar billede jakoba Nybegynder
05. maj 2003 - 16:47 #18
kik i resten af din php kode. et eller andet andet sted er der nogen linier tilbage som du ikke har fjernet efter et andet login-system du havde.

kommer den heller ikke ind når  $succes == 1 ?
Avatar billede klasker Nybegynder
05. maj 2003 - 16:50 #19
Hmm... jeg rettede det selv.
Jeg fandt aldrig ud af den egentlige fejl men jeg gjorde blot sådan her:<?php
header("location: ../");

session_start();

$conn = mysql_connect("localhost", "kattana", "*******");
mysql_select_db("kattana");

$user_row = mysql_query("select * from users where username='$_REQUEST[username]' and password='$_REQUEST[password]'");

if (mysql_num_rows($user_row)>0) {
    session_register("username");
    $HTTP_SESSION_VARS["username"] = $_REQUEST['username'];
    echo "Now logged in as: ".$_REQUEST['username']";
} else {
  echo "forkert brugernavn";
  session_unset();
}

?>

Altså jeg skrev session_unset() hvis man ikke blev logget ind hvilket jeg ikke kan se hvorfor er nødvendigt da session aldrig burde være blevet sat til noget.
Nå, i må deles om pointne.
Avatar billede klasker Nybegynder
05. maj 2003 - 16:51 #20
Øhhh.... hvis altså i lige lægger et svar mere ... jeg afviste de andre før.
Avatar billede jakoba Nybegynder
05. maj 2003 - 16:54 #21
ok
Avatar billede klasker Nybegynder
05. maj 2003 - 16:57 #22
Det er alligevel ikke mere end 60 point så jeg håber ikke at jamal_s bliver sur/ked af at jeg giver jakoba pointene.
Avatar billede jakoba Nybegynder
05. maj 2003 - 17:06 #23
takker.

kik forresten også på din linie:
    header("location: ../");

Det er en ulovlig locationvædi at give der, og hvis den var lovlig skulle scriptet stoppe der.
    http://dk.php.net/manual/en/function.header.php  søg på 'location'

mvh JakobA
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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