/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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?
>
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste