Avatar billede rasmuslp Nybegynder
08. december 2002 - 00:31 Der er 8 kommentarer og
1 løsning

Session driller...

Er ved og lave et loginsystem, men kan ikke få sessions til at virke... eller, kan ikke få noget til at virke. Godtnok er jeg newbie, men jeg har da brugt hele lørdagen på ikke at komme nogen steder. Nogen der kan se hvad der er galt her?? Jeg kan ikke engang se hvad jeg registerer i variablerne... (Okay, det er længe siden jeg har arbejdet med php, men altså) Anyone? Hvad er der galt? Og hvor elendigt er det kodet?

Min fil
<?php
if ($_POST['submit']) {
    include("../include/dbcon.php");
    mysql_connect("$dbhost","$dbuser","$dbpass");
    mysql_select_db("$dbdb");

    $res = mysql_query("SELECT d_id FROM users WHERE d_username = '$uname' AND d_password = '$pword'");
    while ($row = mysql_fetch_array($res)) {
    $idnum = $row['d_id'];
    }

    if (mysql_num_rows($res) == 0) {
        header("Location: http://www.skdld.dk/");
        exit();

    } elseif (mysql_num_rows($res) == 1) {
        $res2 = mysql_query("SELECT d_ident, d_level FROM users_info WHERE d_username = '$username' AND d_ident = '$idnum'");
        while ($row2 = mysql_fetch_array($res2)) {
        session_start();
        session_register('username');
        session_register('uid');
        session_register('ulevel');
        session_register('uip');
        $username = $row2['d_username'];
        $uid = $row2['d_ident'];
        $ulevel = $row2['d_level'];
        $uip = $REMOTE_ADDR;
        $test = "skæg";
        }
    }
}
echo $username;
echo $uid;
echo $ulevel;
echo $uip;
echo $REMOTE_ADDR;
echo $test;
?>
Avatar billede moreless Nybegynder
08. december 2002 - 00:39 #1
echo $username;
echo $uid;
echo $ulevel;
echo $uip;

~

$_SESSION["username"];
$_SESSION["uid"];
$_SESSION["ulevel"];
$_SESSION["uip"];
Avatar billede rasmuslp Nybegynder
08. december 2002 - 00:44 #2
altså jeg skulle ændre
echo $username;
echo $uid;
echo $ulevel;
echo $uip;

til

echo $_SESSION["username"];
echo $_SESSION["uid"];
echo $_SESSION["ulevel"];
echo $_SESSION["uip"];

eller hvad mener du?
- Jeg har lige prøver og ændre det, men der er ingen forskel. natter, tjekker op igen i morgen tildlig
Avatar billede lauer Nybegynder
08. december 2002 - 01:01 #3
ja, det mener han.

Du kan også register sessions på samme måde.

$_SESSION["username"] = $row2['d_username'];
$_SESSION["uid"] = $row2['d_ident'];
$_SESSION["ulevel"] = $row2['d_level'];
$_SESSION["uip"] = $_SERVER['REMOTE_ADDR'];

Hvis du register session på den måde du gør, bliver variablerne også først tilgengelige på næste side.

læs mere omkring sessions på http://www.razor.dk/php.tutorials.sessions.php
Avatar billede rasmuslp Nybegynder
08. december 2002 - 22:22 #4
Hmm... Nu har jeg læst lidt på razors side. Tror nu ikke at det hjalp meget, men jeg har skrevet koden om et par gange idag. (Ikke fordi det har hjulpet) Men jeg er nået frem til dette:

***************************login5.php:**************************
<?php
if ($_POST['submit']) {
    include("include/dbcon.php");
    mysql_connect("$dbhost","$dbuser","$dbpass");
    mysql_select_db("$dbdb");
   
    $res = mysql_query("SELECT d_id FROM users WHERE d_username = '$uname' AND d_password = '$pword'");
    while ($row = mysql_fetch_array($res)) {
    $idnum = $row['d_id'];
    }

    if (mysql_num_rows($res) == 0) {
        header("Location: http://www.skdld.dk/");
        exit();

    } elseif (mysql_num_rows($res) == 1) {
        $res2 = mysql_query("SELECT d_ident, d_level, d_username FROM users_info WHERE d_username = '$username' AND d_ident = '$idnum'");
        while ($row2 = mysql_fetch_array($res2)) {
        session_start();
        $_SESSION['username'] = $row2['d_username'];
        $_SESSION['uid'] = $row2['d_ident'];
        $_SESSION['ulevel'] = $row2['d_level'];
        $_SESSION['uip'] = $_SERVER['REMOTE_ADDR'];
        }
    header("Location: test5.php");
    }
} else { ?>
<form action="<? $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="uname">
<input type="password" name="pword">
<input type="submit" name="submit" value="Login">
</form>
<?php
}
?>
**************************************************

*********test5.php************************
<?php 
session_start();
print "test1: <b>".$_SESSION['username']."</b>";
print "test2: <b>".$_SESSION['uid']."</b>";
print "test3: <b>".$_SESSION['ulevel']."</b>";
print "test4: <b>".$_SESSION['uip']."</b>";
?>
*******************************************
En forklaring på hvad der er galt??? Har tænkt hele dagen, men kan sku ikke finde en fejl... Anyone?
Avatar billede moreless Nybegynder
08. december 2002 - 23:07 #5
<?php
if ($_POST['submit']) {
    include("include/dbcon.php");
    mysql_connect("$dbhost","$dbuser","$dbpass");
    mysql_select_db("$dbdb");
   
    $res = mysql_query("SELECT d_id FROM users WHERE d_username = '$uname' AND d_password = '$pword'");
    while ($row = mysql_fetch_array($res)) {
    $idnum = $row['d_id'];
    }

    if (mysql_num_rows($res) == 0) {
        header("Location: http://www.skdld.dk/");
        exit();

    } elseif (mysql_num_rows($res) == 1) {
        $res2 = mysql_query("SELECT d_ident, d_level, d_username FROM users_info WHERE d_username = '$username' AND d_ident = '$idnum'");
        while ($row2 = mysql_fetch_array($res2)) {
        session_start();
        $username = $row2['d_username'];
        $uid = $row2['d_ident'];
        $ulevel = $row2['d_level'];
        $uip = $_SERVER['REMOTE_ADDR'];
        session_register('username');
        session_register('uid');
        session_register('ulevel');
        session_register('uip');
        }
    header("Location: test5.php");
    }
} else { ?>
<form action="<? $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="uname">
<input type="password" name="pword">
<input type="submit" name="submit" value="Login">
</form>
<?php
}
?>
**************************************************

*********test5.php************************
<?php 
session_start();
print "test1: <b>".$_SESSION['username']."</b>";
print "test2: <b>".$_SESSION['uid']."</b>";
print "test3: <b>".$_SESSION['ulevel']."</b>";
print "test4: <b>".$_SESSION['uip']."</b>";
?>

hvad sker der med dette her?
Avatar billede rasmuslp Nybegynder
09. december 2002 - 15:13 #6
Altså test5.ph filen? Den gengiver indholdet af session'n. Eller, det skulle den, men det gør den ikke. Den skal ikke bruges til noget i det færdige system, men det er bare for at es om login5.php overhovedet virker ordenligt.

Det skal lige siges at hvis jeg ændrer i min login5.php så den ænder således:

*************
<?php
if ($_POST['submit']) {
    include("include/dbcon.php");
    mysql_connect("$dbhost","$dbuser","$dbpass");
    mysql_select_db("$dbdb");
   
    $res = mysql_query("SELECT d_id, d_username FROM users WHERE d_username = '$uname' AND d_password = '$pword'");
    while ($row = mysql_fetch_array($res)) {
    $idnum = $row['d_id'];
    session_start();
    $_SESSION['username'] = $row2['d_username'];
    header("Location: test5.php");
    }

    if (mysql_num_rows($res) == 0) {
        header("Location: http://www.skdld.dk/");
        exit();

    } elseif (mysql_num_rows($res) == 1) {
        //$res2 = mysql_query("SELECT d_ident, d_level, d_username FROM users_info WHERE d_username = '$username' AND d_ident = '$idnum'");
        //while ($row2 = mysql_fetch_array($res2)) {
        //session_start();
        //$_SESSION['username'] = $row2['d_username'];
        //$_SESSION['uid'] = $row2['d_ident'];
        //$_SESSION['ulevel'] = $row2['d_level'];
        //$_SESSION['uip'] = $_SERVER['REMOTE_ADDR'];
        //}
    //header("Location: test5.php");
    }
} else { ?>
<form action="<? $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="uname">
<input type="password" name="pword">
<input type="submit" name="submit" value="Login">
</form>
<?php
}
?>
*************
Så viser den username i test5.php, men når jeg så ændrer filen tilbage (som jeg har postet den tidligere) så virker det stadig ikke.

Håber det hjalp lidt :)
Avatar billede rasmuslp Nybegynder
09. december 2002 - 21:52 #7
Er lige nået frem til at alt hvad der er i den sidste while{} _ikke_ bliver udført... Kan man ikke bruge while i en elseif?? Ellers, må der være en fejl i min while, undersøger det nærmere
Avatar billede rasmuslp Nybegynder
09. december 2002 - 22:43 #8
Naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaj. Det er lige gået op for mig hvor fejlen er. Og den var i min while. Hvis i ser i den første $res bruger den '$uname' men i $res2 var den sat til '$username'. Det var dér fejlen var. Jeg havde "bare" glemt og rette det hele i gennem. Silly me.

/me slår /me fordi /me ikke altid tænker det ordenligt igennem

Ked evt. at have brugt jeres tid :)
Avatar billede moreless Nybegynder
10. december 2002 - 09:13 #9
gaah
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