Toon posts:

[PHP] variabele variabele + sessies

Pagina: 1
Acties:

Verwijderd

Topicstarter
probleem is als volgt:

ik haal uit mijn database het volgende:

$result = mysql_query("SELECT optienaam,waarde FROM opties");

while ($row = mysql_fetch_array($result)) {

$naam = $row["optienaam"];
$waarde = $row["waarde"];
$$naam = $waarde;
}

nu is het dus de bedoeling dat hij de variabele variabele registreert met session_register(); inclusief de waarde

het enige probleem: hoe krijg mijn sessie zover dat hij dat doet? :)

Verwijderd

dit lijkt me nogal rare methode, maar als je dit handig lijkt kan je dan niet gewoon
PHP:
1
2
3
<?
session_register('$naam');
?>

doen?

Verwijderd

Topicstarter
session_register('$naam'); wilt dus ook niet lukken :(

Verwijderd

Kan je de namen niet in een array gooien?
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$result = mysql_query("SELECT optienaam,waarde FROM opties");

while ($row = mysql_fetch_array($result)) {

$naam = $row["optienaam"];
$waarde = $row["waarde"];
$namen[$i] = $waarde;
$i++;
}
?>

zoiets dus... :?

<edit>Blader net ff door de manual:
Vanaf php 4.1.0 kan je dit doen:
$HTTP_SESSION_VARS["zim"] = "An invader from another planet.";
Misschien kan je kijken of dat werkt op jouw webserver...</edit>

<edit2>Dan krijg je dus dit:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$result = mysql_query("SELECT optienaam,waarde FROM opties");

while ($row = mysql_fetch_array($result)) {

$naam = $row["optienaam"];
$waarde = $row["waarde"];
$HTTP_SESSION_VARS["$naam"] = $waarde;
}
?>

</edit2>

Verwijderd

PHP:
1
2
3
4
5
6
<?
session_start();
session_register("naam","eventueel andere variabelen","...");

$naam = "Blah";
?>

Dus zonder de $...

Verwijderd

Topicstarter
wilt ook niet echt werken :'(

Verwijderd

Welke versie van PHP heb jij dan?!

Let wel op dat je de sessie start!

En hoe controleer je dat die waarde is opgeslagen?! Ik neem aan dat je het session_id doorgeeft aan een volgende pagina?!

Verwijderd

Topicstarter
tuurlijk start ik de sessie duh! :)

en hoe ik het controleer? ik kijk nu dmv 2 pagina's bij 1tje laat ik het registreren en bij de andere kijk ik of het al geregistreerd is en ik zit met php 4.0 en niet met 3.0 waar nog geen sessies in te bekennen zijn rustig maar hoor :)

Verwijderd

Maar vraag je in de pagina waar je de sessievariabele opgeeft wel het sessie-id op en geeft die door aan de tweede pagina!?

Eerste pagina:
PHP:
1
2
3
4
5
6
<?
session_start();
$id = session_id();
session_register("naam");
$naam = "blaat";
?>

Dan het id doorgeven aan de tweede pagina...

Tweede pagina:
PHP:
1
2
3
4
5
6
<?
session_id($id);
session_start();

echo $naam;
?>

Daarna kun je variabele pas uitlezen... :)

Verwijderd

Topicstarter
je hoeft niet perse met een session_id te werken het lukt ook zonder session_id :)

maar het uitlezen is het probleem niet het gaat om die variabele variabelenaam

Verwijderd

Ahzo, nu snap ik de vraag pas... |:(
Tja, dat weet ik ook niet... :)

Verwijderd

Topicstarter
thanx anyway :)

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 17:37
Ik heb zoiets gedaan voor een login systeem:
PHP:
1
2
3
4
5
6
7
8
9
<?
$account = mysql_fetch_object($query);
$session->login = 1; 
$session->username = $account->username;
$session->password = $account->password;
$session->userlevel = $account->userlevel;
session_register("session");
header ("Location: logon_info.php");  
?>

En in logon_info.php staat dan ondermeer dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
session_start(); if (@$session->login == 1) {
...
...
echo 'login status: '.$session->login.'<br>';
echo 'username: '.$session->username.'<br>';
echo 'password: '.$session->password.'<br>';
echo 'userlevel: '.$session->userlevel;
...
...
} else { header ("Location: inloggen.php"); }
?>

Voor alle duidelijkheid: ik zet dus een object (met z'n attributen) in de session. De waarde die je aan session_register meegeeft, kan dus volgens mij niet variabel zijn...

specs


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Het kan zijn dat het inderdaad niet werkt, omdat in de php.ini de directory waar de sessie variabel worden opgeslagen niet goed staat.

Kijk in je php.ini of dit het geval is.

Dan moet dit :
PHP:
1
2
3
<?
< session_register('naam');
?>

Gewoon werken

Maar wil je nu dat je variabele naam variabel is ?
Lijkt mij een beetje moeilijk te realiseren.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

een object kan je toch gewoon serializen en wegschrijven?

btw, je 1e php-code kan ook in 1 ipv 3 regels:
$$row["naam"] = $row["waarde"];

in dat geval kan je ook alle $row's in 1 array stoppen en DIE session-registeren en die ff snel aflopen bij een session_start()...

Klaar voor een nieuwe uitdaging.

Pagina: 1