Toon posts:

[php] Session register

Pagina: 1
Acties:
  • 244 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wordt hier toch nu wel een beetje kriebelig van... wat ik ook doe het lukt niet.

Simpele inlogfunctie gemaakt met sessions:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
function log_in($username, $password)
{
session_start(); 
global $HTTP_SESSION_VARS;
$sql = "SELECT * FROM beheer WHERE username = '$username' AND password ='$password'"; 
$query = mysql_query($sql) or die (mysql_error()); 
$results = mysql_num_rows($query); 
if ($results == '1') 
{ 
    $record = mysql_fetch_object($query);
    $b_id = 1;
    $level = 2;
    session_register("b_id");
    session_register("username"); 
    session_register("level");
    echo $HTTP_SESSION_VARS[username];
    echo $HTTP_SESSION_VARS[b_id];
    echo $HTTP_SESSION_VARS[level];
} 
else 
{ 
  echo " Je gebruikersnaam of password klopt niet"; 
} 
}
?>

de $username wordt gepost dmv een form en dat is de eniste variable die hij daadwerkelijk registreerd. Ik heb het even zo gezet dat hij voor die andere variabelen (b_id, level) niet de waardes uit de database gebruikt maar gewoon '1' om er zeker van te zijn dat het niet aan mijn query ligt. Maar wat ik ook probeer hij wilt niets registreren behalve de var die gepost is door de form.

Iemand een idee want ik begin langzamerhand een beetje radeloos hiervan te worden aangezien ik hier al een paar uur mee aan het aan klooien ben en me suf heb gezocht.

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

lijkt me ook wel handig om ze in te stellen
of global te zetten.

Skill is when luck becomes a habit.


Verwijderd

Topicstarter
Op donderdag 07 februari 2002 12:28 schreef _eek_ het volgende:
lijkt me ook wel handig om ze in te stellen
of global te zetten.
ik stel ze in met $level = 2; en $b_id = 1; en ik maak d'r zo een global van: global $HTTP_SESSION_VARS;

Verwijderd

Probeer het toch eens om ze global in te stellen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
function log_in($username, $password){
   session_start();
   global b_id, username, level;
   $sql = "SELECT * FROM beheer WHERE username = '$username' AND password ='$password'";
   $query = mysql_query($sql) or die (mysql_error());
   $results = mysql_num_rows($query);
   if ($results == '1') {
      $record = mysql_fetch_object($query);
      $b_id = 1;
      $level = 2;
      session_register("b_id");
      session_register("username");
      session_register("level");
      echo $HTTP_SESSION_VARS[username];
      echo $HTTP_SESSION_VARS[b_id];
      echo $HTTP_SESSION_VARS[level];
   } else {
      echo " Je gebruikersnaam of password klopt niet";
   } 
}
?>

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
gebruik $ tekens voor variabele namen.
code:
1
2
3
session_register("$b_id");
session_register("$username");
session_register("$level");

Verwijderd

Op donderdag 07 februari 2002 12:58 schreef Sjaaky het volgende:
gebruik $ tekens voor variabele namen.
code:
1
2
3
session_register("$b_id");
session_register("$username");
session_register("$level");
Dat lijkt me niet verstandig :)

Verwijderd

Topicstarter
hmmms hij schijnt het nu te doen.. met die globals was zeker even in verwarring dat global $HTTP_SEESION_VARS alle session vars global zouden maken ofzo.. :? Thanx!

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
Ik heb hetzelfde probleem maar hoe zit dat met die global vars? moet dat perse? een vriend van me heeft het iig zonder die global vars werkend, ik kom wel in index2.php terecht als ik inlog, maar het registered niks..
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
function DoLogin($login,$password) {
  mysql_connect ("xxx.xxx.xxx.xxx","xxxx","xxxx");
  mysql_select_db("nz");
  if ($login == "" or $password == "") {
    return 1;
  } else {
    $query = "SELECT id,login FROM user WHERE (login='$login' AND password='$password');";
    $result = mysql_query($query);
    if ($r = mysql_fetch_array($result)) {
      $reg_userid = $r[id];
      $reg_login = $login;
      $reg_password = $password;
      $session = "open";
      session_start();
      session_register("session","reg_userid","reg_login","reg_password");
      Header("Location: index2.php");
    } else {
      return 3;
    }
  }
}
?>

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
Als ik sessie file bekijk staat er het volgende:
!session|!reg_userid|!reg_login|!reg_password|


dat lijkt me niet goed aangezien er geen waardes bijstaan, enig idee wat hier fout gaat?

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
Heel erg bedankt voor de hulp.. NOT
maar tis al gefixed

Verwijderd

Op donderdag 07 februari 2002 16:36 schreef Vuurvlieg het volgende:
Heel erg bedankt voor de hulp.. NOT
Het spijt me dat ik niet dag en nacht voor je klaar sta om je te troosten

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
ik open speciaal geen thread omdat het hier al over het probleem gaat wat ik heb, er wordt binnen een uur 7x gepost (ofzo) ik post mn probleem en de eerstvolgende 3 uur wordt er helemaal niet gepost.. maar da neem ik jullie nie kwalijk ofzo.. :)

ik baalde er gewoon van dat niemand reageerde.. :)

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Vuurvlieg, wil je je oplossing dan even posten?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:46
Anders schop jij ff een topic omhoog :o

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Het grote probleem in de eerser genoemde code is dat er 'oude' en 'nieuwe' stijl door elkaar heen gebruikt wordt.

session_register hoef je alleen te gebruiken waneer je niet met $HTTP_SESSION_VARS werkt.

De juiste manier om in de nieuwe stijl te gebruiken is door de waarde's gelijk aan de elementen van de session toe te kenne. Het stukje sourcecode zal dan als volgt worden:
PHP:
1
<?function log_in($username, $password){   session_start();   global $HTTP_SESSION_VARS; // mischien niet nodig hoor:)   $sql = "SELECT * FROM beheer WHERE username = '$username' AND password ='$password'";   $query = mysql_query($sql) or die (mysql_error());   $results = mysql_num_rows($query);   if ($results == '1') {      $record = mysql_fetch_object($query);      $HTTP_SESSION_VARS["username"] = $username;      $HTTP_SESSION_VARS["b_id"] = 1;      $HTTP_SESSION_VARS["level"] = 2;      echo $HTTP_SESSION_VARS[username];      echo $HTTP_SESSION_VARS[b_id];      echo $HTTP_SESSION_VARS[level];   } else {      echo " Je gebruikersnaam of password klopt niet";   }}?>

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:57

me1299

$ondertitel

Als global vars aan staan kan je session_register gebruiken. En anders met je met $HTTP_SESSION_VARS['username'] enzo werken.

Nog een tip zet niet de userlevel in je sessie. Want dan kunnen mensen in hun cookie zo ff hun userlevel gaan verhogen.

Sla liever de session_id op in de database en doe voor elke pagina een login check en haal daar de gegevens op voor hun sessie.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Op donderdag 23 mei 2002 21:55 schreef DeathKnight het volgende:
Nog een tip zet niet de userlevel in je sessie. Want dan kunnen mensen in hun cookie zo ff hun userlevel gaan verhogen.
Uh? :? Volgens mij wordt er in de cookie alleen een sessie id opgeslagen. Sessie waarden staan toch echt op de server..

On track


  • CyeZ
  • Registratie: September 2001
  • Laatst online: 05-09 18:35

CyeZ

Vroem vroem!!!

[b]Op donderdag 23 mei 2002 21:55 schreef
Nog een tip zet niet de userlevel in je sessie. Want dan kunnen mensen in hun cookie zo ff hun userlevel gaan verhogen.

Sla liever de session_id op in de database en doe voor elke pagina een login check en haal daar de gegevens op voor hun sessie.
Fout. Als je met sessies werkt wordt op de client-kant alleen de sessie-id opgeslagen in de cookie. Alle andere variabelen zoals die userlevel worden op de server opgeslagen. Dit is juist een van de grote voordelen van sessies.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:57

me1299

$ondertitel

Op donderdag 23 mei 2002 22:07 schreef CyeZ het volgende:

[..]

Fout. Als je met sessies werkt wordt op de client-kant alleen de sessie-id opgeslagen in de cookie. Alle andere variabelen zoals die userlevel worden op de server opgeslagen. Dit is juist een van de grote voordelen van sessies.
ah bedankt voor de tip :)

Dus dat verhaal wat ik doe is eigenlijk helemaal niet nodig. Het is wel handig als ik toevallig het systeem wil uitbreiden zodat mensen ingelogd blijven.

Bedankt iig ;)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
Mijn oplossing:
PHP:
1
<?global $reg_userid,$reg_login,$reg_password,$reg_ip;session_register(session,reg_userid,reg_login,reg_password,reg_ip);      $reg_userid = $r[id];$reg_login = $login;$reg_password = $password;$reg_ip = $ip;?>

Verwijderd

dit topic lijkt wel onkruit.

Verwijderd

PHP is onkruid..

Verwijderd

Op donderdag 23 mei 2002 22:07 schreef CyeZ het volgende:

[..]

Fout. Als je met sessies werkt wordt op de client-kant alleen de sessie-id opgeslagen in de cookie. Alle andere variabelen zoals die userlevel worden op de server opgeslagen. Dit is juist een van de grote voordelen van sessies.
Sessies kunnen evengoed in cookies opgeslaan worden!

En waarom niet $_SESSIOS['var'] = inhoud; ?
Pagina: 1