Toon posts:

[PHP / Sessies ] variabele variabelen registreren

Pagina: 1
Acties:
  • 85 views sinds 30-01-2008

Verwijderd

Topicstarter
OK, hier het volgende probleem:

Ik heb een database gemaakt met een kolom var_name en een kolom value, ik wil deze hele database leegpompen, en daarmee dan een lijst met variabelen maken met als naam $var_name, en waarde uit de kolom value. Dit is geen probleem, maar hoe registreer ik een variabele variabele ???

session_register('variabele_naam'); is niet moeilijk, maar dan heeft die database verder geen nut meer...

En session_register('$variabele_naam'); werkt ook niet (lijkt mij het meest logisch).

Hier het stukje script:


$mysql_con = mysql_connect ($host, $user, $password);
mysql_select_db ($database);

$query = " SELECT * FROM $table ";
$run_query = mysql_query ($query, $mysql_con);
if(!$run_query) {
echo (mysql_error());
}
else {
while ($row = mysql_fetch_array ($run_query)) {
$var = $row ['var_name'];
$$var = $row ['value'];
session_register('$var');
}
}

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Waarom is session_register('variabele_naam'); niet goed? Kunt nog steeds je database gebruiken. Code komt er alleen zo uit te zien:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$mysql_con = mysql_connect ($host, $user, $password);
mysql_select_db ($database);

$query = " SELECT * FROM $table ";
$run_query = mysql_query ($query, $mysql_con);
if(!$run_query) {
  echo (mysql_error());
}
else {
  while ($row = mysql_fetch_array ($run_query)) {
    session_register($row['var_name']) = $row['value'];
  }
}

En maybe moet je voor variabelen wel geen '' gebruiken in session_register (dus session_register($variabele))

Verwijderd

Topicstarter
moet er nog wel ff bijzeggen dat dit script wel in een functie staat trouwens.......

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

$_SESSION[$varnaam] = $value;

Lang leve Arrays?

Verwijderd

Topicstarter
Die quotes hoeven inderdaad niet...

is gewoon session_register($var);

maarre, ik declareer ze in een functie, dat is nu het probleem als ik het goed zie...


dan zou ik met:

global $var;
session_register($var);

klaar moeten zijn ??? of zit ik er nu heeeeel erg naast ???

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Gaat niet werken vanuit functie:
This registers a global variable. If you want to register a session variable from within a function, you need to make sure to make it global using the global keyword or the $GLOBALS[] array, or use the special session arrays as noted below.
Zie ook PHP Manual: session_register

Global moet werken idd.

[ Voor 0% gewijzigd door Postman op 07-10-2002 23:27 . Reden: Reactie op post Pariah ^^ ]


Verwijderd

Topicstarter
die heb ik hier voor me liggen

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

$_SESSION[] is trouwens een superglobal, zou gewoon moeten werken in functies.

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
ach ik heb het ook werkend gemaakt in functies. zelfs met cookies. je zou het
PHP:
1
2
3
    $Login_Done = "1";
    session_register("Login_Done");
    $GLOBALS['Login_Done'] = $Login_Done;

sessieinformatie opvragen doe je dan zo:

$UserID = $GLOBALS['HTTP_SESSION_VARS']['UserID'];
of gewoon met de $_SESSION voor php => 4.2.0

edit:

dat word dat zoals bosman zegt $GLOBALS["_SESSION"]

wist ik niet helemaal zeker meer


[ edit 2]

BOSMAN HAD HET FOUT WHEHE en ik ben zo stom die fout meteen over te nemen

naja ik werk ook nog met een versie kleiner dan 4.2.0 dus gebruik het niet vaak

[ /edit 2 ]

[ Voor 0% gewijzigd door smaij op 07-10-2002 23:32 . Reden: ... ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

hehe.. heb mn post gedit.. maar tis iig allemaal Manual werk.. gewoon ff proberen en de manual doorlezen.

Probeer met $_SESSION[] te werken ipv session_register en session_unregister... werkt stukken eenvoudiger en overzichtelijker imho.

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
Bosmonster schreef op 07 oktober 2002 @ 23:30:
hehe.. heb mn post gedit.. maar tis iig allemaal Manual werk.. gewoon ff proberen en de manual doorlezen.
GRRRRR en ik mijn post editten aan jouw post. lekker ben jij :/

Verwijderd

Topicstarter
jah, dat kan allemaal wel lekker wezen, maar probeer het nu eens uit met variabele variabelen...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Verwijderd schreef op 07 oktober 2002 @ 23:32:
jah, dat kan allemaal wel lekker wezen, maar probeer het nu eens uit met variabele variabelen...


Nee? variabele variabele zijn bullshit.

Probeer het eens met een Array. (heb jij mazzel dat $_SESSION al een array is en je die dus gelijk kan gebruiken!)

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$mysql_con = mysql_connect ($host, $user, $password); 
mysql_select_db ($database); 

$query = " SELECT * FROM $table "; 
$run_query = mysql_query ($query, $mysql_con); 
if(!$run_query) { 
  echo (mysql_error()); 
} 
else { 
  while ($row = mysql_fetch_array ($run_query)) { 
    $_SESSION[$row['var_name']] = $row['value']; 
  } 
}
?> 


zoiets? dan heb je die variabele variabelen toch niet nodig :S

Verwijderd

Topicstarter
thnx for the help...

We zijn hier weer gezellig met zijn allen bijeen om te laten zien hoe wij het zouden doen omdat wij allemaal zo goed zijn, zo, thnx Bosmonster... (enne, koop zelf ff een boekje ;) )

maarre, ik kijk wel ff hoe ik er uit ga komen, zal me wel lukken, dacht alleen dat dit wat research werk zou gaan schelen, thnx anyway

Verwijderd

Topicstarter
smaij schreef op 07 oktober 2002 @ 23:34:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$mysql_con = mysql_connect ($host, $user, $password); 
mysql_select_db ($database); 

$query = " SELECT * FROM $table "; 
$run_query = mysql_query ($query, $mysql_con); 
if(!$run_query) { 
  echo (mysql_error()); 
} 
else { 
  while ($row = mysql_fetch_array ($run_query)) { 
    $_SESSION[$row['var_name']] = $row['value']; 
  } 
}
?> 


zoiets? dan heb je die variabele variabelen toch niet nodig :S
waaorm heb ik het idee dat je dit net ook al zei ??? 8)7

denk dat hier wel wat in zit, ik check ff of het werkt ;)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Verwijderd schreef op 07 oktober 2002 @ 23:36:
thnx for the help...

We zijn hier weer gezellig met zijn allen bijeen om te laten zien hoe wij het zouden doen omdat wij allemaal zo goed zijn, zo, thnx Bosmonster... (enne, koop zelf ff een boekje ;) )

maarre, ik kijk wel ff hoe ik er uit ga komen, zal me wel lukken, dacht alleen dat dit wat research werk zou gaan schelen, thnx anyway


Graag gedaan. Als je nu de volgende keer het advies wat je krijgt ook opvolgt dan wordt je er misschien ook nog wijzer van.

Oftewel:

Geen variabele variabele, maar Arrays..

simple as that ;)

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
1 opmerking: je steld een vraag en laat ons research werk doen :/
1 vraagje: waarom heb je als je kijkt naar mijn stukje code uberhaupt nog variabele variabelen nodig?

Verwijderd

Topicstarter
Bosmonster schreef op 07 oktober 2002 @ 23:38:

[...]


Graag gedaan. Als je nu de volgende keer het advies wat je krijgt ook opvolgt dan wordt je er misschien ook nog wijzer van.

Oftewel:

Geen variabele variabele, maar Arrays..

simple as that ;)
gewoon upfucken met je arrays denk, niet iedereen hoeft het toch op jouw manier te doen ???

Verwijderd

Topicstarter
smaij schreef op 07 oktober 2002 @ 23:38:
1 opmerking: je steld een vraag en laat ons research werk doen :/
1 vraagje: waarom heb je als je kijkt naar mijn stukje code uberhaupt nog variabele variabelen nodig?
sorry, maar had het nog niet goed bekeken, zoals ik net al zei |:(

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
Verwijderd schreef op 07 oktober 2002 @ 23:39:
[...]


gewoon upfucken met je arrays denk, niet iedereen hoeft het toch op jouw manier te doen ???
DAN BEN JE MET JOUW VRAAG BIJ HET VERKEERDE FORUM. je stelt een vraag wij hebben het antwoord en dan zeg je upfucken, dan ben je nogal zielig ;(

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
Verwijderd schreef op 07 oktober 2002 @ 23:40:
[...]


sorry, maar had het nog niet goed bekeken, zoals ik net al zei |:(
ja ach ik had al gereageerd voordat ik dat gelezen had.. want als je goed kan lezen zie je dat tussen jouw reply en de mijnes op een post van jou daarvoor slechts 1 minuut zat

Verwijderd

Topicstarter
pakt ie dit bij jou ???
PHP:
1
$_SESSION[$row['var_name']] = $row['value'];

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Verwijderd schreef op 07 oktober 2002 @ 23:45:
pakt ie dit bij jou ???
PHP:
1
$_SESSION[$row['var_name']] = $row['value'];


Tis goede code.. maar of het werkt hangt mede van je PHP versie af. De $_XXXX superglobals zijn PHP 4.1+ geloof ik.

Verwijderd

Topicstarter
niet in 4.0 dus... ??? ff checken welke ik heb...

  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
PHP:
1
2
3
4
5
6
7
<?
$row['var_name'] = "test";
$row['value'] = "waarde";
$_SESSION[$row['var_name']] = $row['value'];

echo $_SESSION['test'];
?> 


JA doet het

om makkelijk snel te kijken welke versie je hebt onderstaande

PHP:
1
2
3
<?php
phpinfo();
?>


daarnaast draai ik geloof ik 4.1.2

[ Voor 0% gewijzigd door smaij op 07-10-2002 23:50 . Reden: TER INFO ]


Verwijderd

Topicstarter
4.2.1... ook niet het probleem dus, en ergens anders pakt ie dit wel... ik ga nog ff stoeien... laterz

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

vergeet ob_start() en session_start() niet :)

Check deze topic ff:

PHP sessies...

(negeer alleen de start-post ff.. daar word je niet vrolijk van :P)

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
session_start roept ie toch automatisch aan (zonder parameters) :?

Verwijderd

Topicstarter
ff to the point, ik zit nu nog steeds met dat functie probleem...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

FlamerX schreef op 07 oktober 2002 @ 23:55:
session_start roept ie toch automatisch aan (zonder parameters) :?


Standaard niet voor zover ik weet, maar hangt af van je server-config. Je kunt wel session_auto_start doen ofzo.. of hoe dat ook heet :)
Verwijderd schreef op 07 oktober 2002 @ 23:55:
ff to the point, ik zit nu nog steeds met dat functie probleem...
ff to the point ;) Wat is je foutmelding/probleem precies?

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Uit session_register manual:
If session_start() was not called before this function is called, an implicit call to session_start() with no parameters will be made.
Werkt het wel buiten een functie?? Oftewel: werkt het überhaupt wel en zit er niet ergens anders iets fout.

[ Voor 0% gewijzigd door Postman op 08-10-2002 00:00 . Reden: GRMBL: misplaatste punt :( 8)7 ]


  • smaij
  • Registratie: November 2000
  • Laatst online: 11:26
FlamerX schreef op 07 oktober 2002 @ 23:55:
session_start roept ie toch automatisch aan (zonder parameters) :?
edit:

The session support allows you to register arbitrary numbers of variables to be preserved across requests. When a visitor accesses your site, PHP will check automatically (if session.auto_start is set to 1) or on your request (explicitly through session_start() or implicitly through session_register()) whether a specific session id has been sent with the request. If this is the case, the prior saved environment is recreated.


edit:

If register_globals is enabled, then each global variable can be registered as session variable. Upon a restart of a session, these variables will be restored to corresponding global variables. Since PHP must know which global variables are registered as session variables, users need to register variables with session_register() function. You can avoid this by simply setting entries in $_SESSION.

edit:

If you are using $_SESSION and disable register_globals, do not use session_register(), session_is_registered() and session_unregister(), if your scripts shall work in PHP 4.2 and earlier. You can use these functions in 4.3 and later.

If you enable register_globals, session_unregister() should be used since session variables are registered as global variables when session data is deserialized. Disabling register_globals is recommended for both security and performance reasons.

edit:

The description states "As of PHP 4.1.0, $_SESSION is available as global variable just like $_POST, $_GET, $_REQUEST and so on. Not like $HTTP_SESSION_VARS, $_SESSION is always global. Therefore, global should not be used for $_SESSION. "

However, this is not the case. Try as I might, I could not get my registered session variables. I was using verion 4.1.2. I just downloaded 4.2.1 and the same code works perfectly. If you're having the same problem, try upgrading.


Hier staan alle oplossingen in voor je probleem

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

FlamerX schreef op 07 oktober 2002 @ 23:59:
Uit session_register manual:
[...]


Werkt het wel buiten een functie?? Oftewel: werkt het überhaupt wel en zit er niet ergens anders iets fout.


We gingen even uit van het gebruik van $_SESSION[] geloof ik. Dan moet je dus altijd session_start() aanroepen, voordat de superglobal beschikbaar is met session-variabelen.

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Whoops 8)7 zat niet bij $_SESSION[] |:(

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
eerst een array aanmaken en dan de hele array met een session_register registreren, heb je dat al geprobeert?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 10:19

D2k

topicstarter: www.php.net/manual of koop _zelf_ een boek
verder [img]http://images.tweakers.net/forum/templates/got/images/icons/edit.gif[img] mag je wel wat vaker gebruiken, je bent nogal veel zinloze techposts aan het scoren in dit topic.
en meewerken met de suggesties is ook wel een goed plan anders hoef je het ook niet te vragen als het je niet boeit wat een ander zegt

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.