|
| Problem med sessions... Fra : Bjarke Monsted |
Dato : 19-02-02 17:22 |
|
Hej!!
Jeg har et lille problem med sessions som jeg ikke helt kan få til at virke.
Jeg har en kalender med mange brugere som man kan logge ind i for at se sine
egne noter. Mit problem er at man ikke må kunne se de andre's
kalenderbemærkninger. Det problem havde jeg tænkt mig at løse ved hjælp af
at uddele et id til dem der er logget ind, som skal bruges ved alle
forespørgsler. Dette skulle gøre at man kun kan se sin egen kalender, og
ikke de andres. Der er dog et lille problem med sessions, er der nogen der
kan se hvor fejlen er?
Som det virker nu, kan man logge ind og få en url der f.eks. hedder:
kalender.php?artistid=21
Men man kan bare rette 21 til et hvilket som helst tal og se andres
kalender... Det burde ikke være muligt hvis mine sessions virkede som de
skal.... Alle forslag er meget velkomne )
..bjarke
*** start - login.php ***
<?php
$link_identifier = mysql_connect("***","***","***") ||
die("Couldn't connect");
mysql_select_db("DB_kalender") || die("Couldn't use db");
function auth_user($userid, $userpassword) {
$return 0 = "";
$return 1 = "";
$SQL = "SELECT bruger, artistid, id FROM users
WHERE bruger = '$userid'
AND pass = '$userpassword'";
$result = mysql_query($SQL);
if(!mysql_num_rows($result)) return 0;
else {
$query_data = mysql_fetch_row($result);
$return 0 = $query_data 0;
$return 1 = $query_data 1;
$return 2 = $query_data 2;
return $return;
}
}
function login_form() {
?>
<HTML>
<FORM NAME="form1" METHOD="post" ACTION="login_test.php">
Indtast brugernavn:<INPUT TYPE="text" NAME="userid"><BR>
Indtast password:<INPUT TYPE="password" NAME="userpassword"><BR>
<INPUT TYPE="submit" NAME="Submit" VALUE="Log ind">
</FORM>
</HTML>
<?
}
session_start();
if(!isset($userid)) {
login_form();
exit;
} else {
session_register("loggedin_artistid", "userid", "userpassword");
$thereturn = auth_user($userid, $userpassword);
$username = $thereturn 0;
$loggedin_artistid = $thereturn 1;
if(!$username) {
session_unregister("userid");
session_unregister("userpassword");
echo "Authorization failed";
exit;
} else {
header("Location: kalender.php?artistid=".$loggedin_artistid);
}
}
?>
*** slut - login.php ***
Derudover er der i kalnder.php inkluderet følgende, for at man ikke skal
kunne komme uden om login.
*** start - kalender.php ***
<?php
session_register ("loggedin_artistid");
if ((!isset($loggedin_artistid) || $artistid!=$loggedin_artistid)) {
header("Location: noaccess.htm");
exit;
}
?>
*** slut - kalender.php ***
Er der nogen der kan se hvad der er galt?
| |
Henrik Jochumsen (20-02-2002)
| Kommentar Fra : Henrik Jochumsen |
Dato : 20-02-02 09:10 |
|
Hejsa
Jeg ville nok lave en form login med USERNAME og PASSWORD, hvorefter man i
databasen kan lave en SELECT efter USERID(ARTISTID) udfra USERNAME og
PASSWORD.
Den fundne USERID gemmes så som session variable. Man ved nu altid hvem der
er logged ind.
Kalender.php kan nu bruge $USERID, uden at den ses af webbrugeren.
Sammentidig med at du registere USERID som session, kan man heller ikke
overskrive den fra reqeust qeury'en.
Mvh
Henrik Jochumsen
hj@noprobs.dk
> Jeg har et lille problem med sessions som jeg ikke helt kan få til at
virke.
>
> Jeg har en kalender med mange brugere som man kan logge ind i for at se
sine
> egne noter. Mit problem er at man ikke må kunne se de andre's
> kalenderbemærkninger. Det problem havde jeg tænkt mig at løse ved hjælp af
> at uddele et id til dem der er logget ind, som skal bruges ved alle
> forespørgsler. Dette skulle gøre at man kun kan se sin egen kalender, og
> ikke de andres. Der er dog et lille problem med sessions, er der nogen der
> kan se hvor fejlen er?
>
> Som det virker nu, kan man logge ind og få en url der f.eks. hedder:
>
> kalender.php?artistid=21
>
> Men man kan bare rette 21 til et hvilket som helst tal og se andres
> kalender... Det burde ikke være muligt hvis mine sessions virkede som de
> skal.... Alle forslag er meget velkomne )
>
> .bjarke
>
> *** start - login.php ***
>
> <?php
>
> $link_identifier = mysql_connect("***","***","***") ||
> die("Couldn't connect");
> mysql_select_db("DB_kalender") || die("Couldn't use db");
>
> function auth_user($userid, $userpassword) {
> $return 0 = "";
> $return 1 = "";
>
> $SQL = "SELECT bruger, artistid, id FROM users
> WHERE bruger = '$userid'
> AND pass = '$userpassword'";
> $result = mysql_query($SQL);
> if(!mysql_num_rows($result)) return 0;
> else {
> $query_data = mysql_fetch_row($result);
> $return 0 = $query_data 0;
> $return 1 = $query_data 1;
> $return 2 = $query_data 2;
> return $return;
> }
> }
> function login_form() {
> ?>
>
> <HTML>
> <FORM NAME="form1" METHOD="post" ACTION="login_test.php">
> Indtast brugernavn:<INPUT TYPE="text" NAME="userid"><BR>
> Indtast password:<INPUT TYPE="password" NAME="userpassword"><BR>
> <INPUT TYPE="submit" NAME="Submit" VALUE="Log ind">
> </FORM>
> </HTML>
>
> <?
> }
>
> session_start();
> if(!isset($userid)) {
> login_form();
> exit;
>
> } else {
> session_register("loggedin_artistid", "userid", "userpassword");
> $thereturn = auth_user($userid, $userpassword);
> $username = $thereturn 0;
> $loggedin_artistid = $thereturn 1;
> if(!$username) {
> session_unregister("userid");
> session_unregister("userpassword");
> echo "Authorization failed";
>
> exit;
> } else {
>
> header("Location: kalender.php?artistid=".$loggedin_artistid);
>
> }
> }
> ?>
>
> *** slut - login.php ***
>
> Derudover er der i kalnder.php inkluderet følgende, for at man ikke skal
> kunne komme uden om login.
>
> *** start - kalender.php ***
>
> <?php
> session_register ("loggedin_artistid");
> if ((!isset($loggedin_artistid) || $artistid!=$loggedin_artistid)) {
> header("Location: noaccess.htm");
> exit;
> }
> ?>
>
> *** slut - kalender.php ***
>
> Er der nogen der kan se hvad der er galt?
>
>
>
>
>
| |
|
|