[PHP] vraag over sessie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
Ik ben bezig met een phpscript om de primaire sleutel te selecteren (CAO_ID) en vervolgens deze mee te nemen naar een volgende pagina (avv.php, zie a href=). Hoe kan ik op de volgende de pagina de sessie vasthouden, simpel door opnieuw starten en registeren? En hoe kan ik in de volgende pagina die CAO_ID weer ophalen, die gekozen is in dit script? Dit script wil ik als een soort van stramien gebruiken voor de vervolgpagina's om gegevens uit mijn databeest te halen. Ik heb veel pogingen gedaan om die gegevens mee te krijgen naar mijn vervolgpagina....


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
27
28
29
30
31
32
33
34
35
36
37
session_start();
session_register("CAO_ID");

function bedrijfstak($CAO_ID=0)
{
 if (isset($_GET['CAO_ID']))
 {
 $CAO_ID =$_GET['CAO_ID'];
 } else
 {
         $CAO_ID=0;
 }
$db = mysql_pconnect("localhost", "root", "") or die ("verbinding met MySQL server is mislukt");
mysql_select_db("cris",$db) or die ("database selecteren is mislukt");
if ($CAO_ID)
 {
  // query maken
    $sql = "SELECT * FROM BEDRIJFSTAK WHERE CAO_ID=$CAO_ID";
    $result = mysql_query($sql);
    $myrow = mysql_fetch_array($result);
    echo "Tabel bedrijfstak";?><p><?php
    echo "BEDRIJFSTAKNAAM:", $myrow["BT_NAAM"] ?><br><?php
    echo "BEDRIJFSTAK_INGANGSDATUM:", $myrow["BT_INGANGSDATUM"] ?><br><?php
    echo "<a href=\"avv.php\">AVV</a>";
 }
else
 {
  // Bedrijfstakken laten zien en kiezen
  ?> Kies bedrijfstak<br> <?php $result = mysql_query("SELECT DISTINCT * FROM BEDRIJFSTAK order by BT_NAAM asc",$db);
  while ($myrow = mysql_fetch_array($result))
  {
    printf("<a href=\"%s?CAO_ID=%s\">%s</a><br>\n", $_SERVER['PHP_SELF'], $myrow["CAO_ID"], $myrow["BT_NAAM"]);
  }
 }
}

bedrijfstak()

Acties:
  • 0 Henk 'm!

Verwijderd

Je zou de session id, mee kunnen sturen met de url natuurlijk of inderdaad session_start() in elke pagina aanroepen waar je gebruik wilt maken sessions.

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Dat hangt allemaal af van welke versie PHP je gebruikt. Bij oudere versies moet je iig wel met session_register werken, maar nieuwere versies (vanaf 4.10) kan je direct met de $_SESSION variabele werken.

Zie ook de handleiding voor de verschillen tussen de versies.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
je doet een session_register en vervolgens:
PHP:
1
2
3
4
5
6
7
8
9
function bedrijfstak($CAO_ID=0) 
{ 
if (isset($_GET['CAO_ID'])) 
{ 
$CAO_ID =$_GET['CAO_ID']; 
} else 
{ 
         $CAO_ID=0; 
}


maw, je gebruikt je sessie niet! (denk eraan dat je in een functie zit en dus niet alle variabelen ziet, alleen super globals en lokale).

je zou dit kunnen doen:
PHP:
1
2
3
bedrijfstak($_SESSION["CAO_ID"]);
// of (hangt af van je voorkeur en php-versie)
bedrijfstak($CAO_ID);

Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
Ik gebruik PHP 4.2.2. en ga nu gebruiken bedrijfstak($_SESSION["CAO_ID"]);

Dus als CAO_ID gedeclareerd is in $_SESSION, kan ik CAO_ID in de volgende pagina gebruiken in een bv andere functie?

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
tazmaniac20 schreef op 07 May 2003 @ 11:15:
Ik gebruik PHP 4.2.2. en ga nu gebruiken bedrijfstak($_SESSION["CAO_ID"]);

Dus als CAO_ID gedeclareerd is in $_SESSION, kan ik CAO_ID in de volgende pagina gebruiken in een bv andere functie?
Waarom probeer je het niet gewoon :?

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
klopt, sessie variabelen kun je (na evt. session_register) gebruiken op iedere pagina in je site (al weet ik niet precies hoe goed het werkt als je een bestand uit een andere directory op de server opent...) bijvoorbeeld:
http://www.tweakers.net/voorbeeld1.php (stel sessie in)
http://www.tweakers.net/test/voorbeeld2.php (lees uit)

(uiteraard bestaan die bestanden niet :P)

Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
Ik kwam er niet uit namelijk. Ik wil aan de hand van CAO_ID in de volgende pagina andere tabellen tonen met corresponderende CAO_ID. Ik snap alleen niet hoe ik dan die CAO_ID weer kan hergebruiken... :(

Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
_brainless, de bestanden staat in dezelfde directory(root). Ik doe dit op deze manier, omdat heel query's pagina ga bouwen en het overzichtelijk wil houden.

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
tazmaniac20 schreef op 07 May 2003 @ 11:25:
Ik kwam er niet uit namelijk. Ik wil aan de hand van CAO_ID in de volgende pagina andere tabellen tonen met corresponderende CAO_ID. Ik snap alleen niet hoe ik dan die CAO_ID weer kan hergebruiken... :(
Registreer de 1e keer die var in je sessie en roep vervolgens bij elk volgend bestand session_start() gewoon weer aan. Als je zonder session_id werkt, bestaat de kans dat anderen je sessie 'stelen' (Met sessie id ook, maar dan minder kans :D)

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Debug hint:
PHP:
1
2
3
echo "<pre>\n";
print_r($_SESSION);
echo "</pre>\n";

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
Sn3akz schreef op 07 mei 2003 @ 11:29:
[...]


Registreer de 1e keer die var in je sessie en roep vervolgens bij elk volgend bestand session_start() gewoon weer aan. Als je zonder session_id werkt, bestaat de kans dat anderen je sessie 'stelen' (Met sessie id ook, maar dan minder kans :D)
Kun je dat onderbouwen?... volgens mij is het juist andersom: als je je sessie een ID geeft dat steeds hetzelfde is dan kunnen anderen het makkelijker identificeren als jou sessie. PHP maakt vanzelf random session id's.

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
_BRAINLESS schreef op 07 May 2003 @ 11:45:
[...]

Kun je dat onderbouwen?... volgens mij is het juist andersom: als je je sessie een ID geeft dat steeds hetzelfde is dan kunnen anderen het makkelijker identificeren als jou sessie. PHP maakt vanzelf random session id's.
Ja.. heb je helemaal gelijk in.

Maar als iemand anders op jouw ip (Proxy, bedrijfsnetwerk) ook die pagina gaat bekijken, IS er een kans Dat ze je sessie overnemen (per ongeluk).

Met sessie ID's heb je dit minder, omdat iedereen z'n eigen id heeft.

Vanuit de kwaadwillende hoek bekeken is het idd misschien beter om geen session_id's mee te geven...

Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
Is het beter om de database-connectie te includen? Aangezien ik per nieuwe pagina een nieuwe selectiequery wil maken.

Wat mij echt niet lukt, is om een gelijke functie op de volgende scriptpagina te gebruiken zonder dat CAO_ID nul gemaakt wordt ofwel CAO_ID in sessie bewaren. Een nieuwe functie met ook CAO_ID alleen dan niet functie avv($CAO_ID=0)?

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
CAO_ID hergebruiken kan met: $_SESSION["CAO_ID"] (daarin zit je CAO_ID)... als je register_globals aan hebt staan is er BUITEN je functie een variabele genaamd '$CAO_ID'.

qoute van php.net:
[qoute]
If your script uses session_register(), it will not work in environments where register_globals is disabled.
[/qoute]

$_SESSION werkt daarentegen altijd zeggen ze, dus gebruik die maar :)

Acties:
  • 0 Henk 'm!

  • tazmaniac20
  • Registratie: December 2001
  • Laatst online: 26-02 19:58
Rotjeknor schreef op 07 May 2003 @ 11:43:
Debug hint:
PHP:
1
2
3
echo "<pre>\n";
print_r($_SESSION);
echo "</pre>\n";
Ik krijg als resultaat op het scherm Array

Betekent dit dat ik meerdere CAO_ID's in deze session kan stoppen? :*)

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
Sn3akz schreef op 07 May 2003 @ 11:50:
[...]


Ja.. heb je helemaal gelijk in.

Maar als iemand anders op jouw ip (Proxy, bedrijfsnetwerk) ook die pagina gaat bekijken, IS er een kans Dat ze je sessie overnemen (per ongeluk).

Met sessie ID's heb je dit minder, omdat iedereen z'n eigen id heeft.

Vanuit de kwaadwillende hoek bekeken is het idd misschien beter om geen session_id's mee te geven...
Ik heb op mijn site een hele tijd een session_id meegestuurd (iedereen dezelfde :P)... tot ik zag dat je het zo makkelijk kon lezen. Heb je al eens meegemaakt dat je je sessie kwijt was?... volgens mij is die kans 1 op <heeeeel veel> :) (als er geen beveiliging voor ingebouwd is in PHP)

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
tazmaniac20 schreef op 07 mei 2003 @ 12:00:
[...]


Ik krijg als resultaat op het scherm Array

Betekent dit dat ik meerdere CAO_ID's in deze session kan stoppen? :*)
Dit betekent dat het niet werkt ... :)

Ik denk dat het komt doordat je boven aan je script 'session_register(CAO_ID)' doet. Er zit op punt nog helemaal niks in $CAO_ID, dus het werkt niet. Wat je beter kunt proberen is op het punt waar je weet welke CAO_ID je wil bewaren de volgende code toevoegen:
PHP:
1
$_SESSION["CAO_ID"] = <waarde>;

waar '<waarde>' de CAO_ID is die je wil op slaan in je sessie.

edit:
code toegevoegd

Zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (array_key_exists("CAO_ID", $_GET))
{ 
$CAO_ID =$_GET['CAO_ID']; 
} else 
{ 
         if (array_key_exists("CAO_ID", $_SESSION)) {
                $CAO_ID = $_SESSION["CAO_ID"];
         } else {
                $CAO_ID=0;
         }
} 
$_SESSION["CAO_ID"] = $CAO_ID;
$db = mysql_pconnect("localhost", "root", "") or die ("verbinding met MySQL server is mislukt");

[ Voor 45% gewijzigd door BRAINLESS01 op 07-05-2003 12:08 ]

Pagina: 1