SESSIONS
Ik zet mijn topic maar even in de map beginnen met PHP omdat dit volgens mij nog best wel een beginners probleem is. Ik ben bezig met een site die steeds nieuwe informatie krijgt, dus deze moet om de X aantal seconden gerefreshed worden, dat is allemaal geen probleem, alleen zit er ook een zoekbalk en een aantal tiles in die gebonden zijn aan een aantal "tags" die de gebruiker moet opgeven aan het begin, daardoor dacht ik ik ga sessions gebruiken. Omdat ik het niet helemaal aan de praat kreeg dacht ik, laat ik eerst even een simpel voorbeeld maken en als die even werkt pas ik hem aan naar mijn website en draait hij weer goed. Alleen het allersimpelste krijg ik nog niet werkend...
eerst de index.php code:
--------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
if(!isset($_SESSION['username'])){
//$username = $_POST['username'];
//session_register ("username");
//ik heb die hierboven ook geprobeerd maar ik snap het verschil niet en //ik kreeg het alsnog niet werkend
$_SESSION['username'] = $_POST['username'];
}
else{
session_unset();
session_destroy();
}
?>
session_start();
if(!isset($_SESSION['username'])){
//$username = $_POST['username'];
//session_register ("username");
//ik heb die hierboven ook geprobeerd maar ik snap het verschil niet en //ik kreeg het alsnog niet werkend
$_SESSION['username'] = $_POST['username'];
}
else{
session_unset();
session_destroy();
}
?>
<html>
<head>
</head>
<body>
<form name="zx" method="post" action="search.php">
<input name="username" type="text" id="username">
<input name="submit" type="submit">
</html>
------------------------------------------
Hier krijg je alleen de foutmelding undefined index maar ik dacht, dat is niet zo erg omdat je nog geen username hebt ingevuld..
hier komt search.php
----------------------------------
<html>
<body>
</body>
</html>
------------------------------
het lijkt me zo simpel, je maakt een sessie, en je vraagt hem hier weer op, doe ik iets heel doms fout of zit je er gewoon meer achter?
graag jullie hulp!
groeten Gerhard
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
if(!isset($_SESSION['username'])){
$_SESSION['username'] = $_POST['username'];
}
else{
session_unset();
session_destroy();
}
?>
session_start();
if(!isset($_SESSION['username'])){
$_SESSION['username'] = $_POST['username'];
}
else{
session_unset();
session_destroy();
}
?>
Dit is jouw code zoals hierboven staat.
Uitleg hiervan is: Er wordt een session gestart. Als $_SESSION['username'] niet bestaat dan stop $_POST['username'], die waarschijnlijk niet bestaat, er in. Dus waarschijnlijk is $_SESSION['username'] nu dus leeg. Mocht $_SESSION['username'] bij de if al wel bestaan dan gooien we hem weg. Conclusie: Alleen als $_POST['username'] bestaat zal $_SESSION['username'] bestaan.
Edit: Sterker nog. Als het formulier wordt gepost komt $_POST['username'] nooit aan in bovenstaand stukje code omdat het formulier naar search.php wijst en niet naar index.php waar dit in staat.
Gewijzigd op 10/10/2010 00:46:56 door - SanThe -
Oke, ja ik was wat vergeten, de if stelling van index.php moet natuurlijk ook boven de search.php, als ik dan post in index.php dan onthoud hij hem nu ook wel, maar als ik de pagina refresh is hij hem direct weer kwijt, ik moet juist iets hebben wat na een refresh nog steeds de term onthoud! Heeft iemand daar een oplossing voor?
Gewijzigd op 10/10/2010 12:07:51 door gerhard l
Je post je formulier naar search.php niet naar index.php.
Karl Karl op 10/10/2010 12:07:17:
De session zooi die je in index.php hebt staan moet je in search.php stoppen.
Je post je formulier naar search.php niet naar index.php.
Je post je formulier naar search.php niet naar index.php.
ja indd dat was ik vergeten, maar heb jij ook een idee hoe ik sessies kant onthouden na een refresh, ik dacht altijd dat sessies bleven bestaan totdat ze destroyed of geunset waren?
Gerhard lubbers op 10/10/2010 12:09:13:
ja indd dat was ik vergeten, maar heb jij ook een idee hoe ik sessies kant onthouden na een refresh, ik dacht altijd dat sessies bleven bestaan totdat ze destroyed of geunset waren?
Karl Karl op 10/10/2010 12:07:17:
De session zooi die je in index.php hebt staan moet je in search.php stoppen.
Je post je formulier naar search.php niet naar index.php.
Je post je formulier naar search.php niet naar index.php.
ja indd dat was ik vergeten, maar heb jij ook een idee hoe ik sessies kant onthouden na een refresh, ik dacht altijd dat sessies bleven bestaan totdat ze destroyed of geunset waren?
Inderdaad, dat klopt wel. Maar lees nu eens SanThe's verhaal... Daar staat dus dat je die sessie verwijderd als ie bestaat. Let wel op session_start.
Karl Karl op 10/10/2010 12:10:43:
Inderdaad, dat klopt wel. Maar lees nu eens SanThe's verhaal... Daar staat dus dat je die sessie verwijderd als ie bestaat. Let wel op session_start.
Gerhard lubbers op 10/10/2010 12:09:13:
ja indd dat was ik vergeten, maar heb jij ook een idee hoe ik sessies kant onthouden na een refresh, ik dacht altijd dat sessies bleven bestaan totdat ze destroyed of geunset waren?
Karl Karl op 10/10/2010 12:07:17:
De session zooi die je in index.php hebt staan moet je in search.php stoppen.
Je post je formulier naar search.php niet naar index.php.
Je post je formulier naar search.php niet naar index.php.
ja indd dat was ik vergeten, maar heb jij ook een idee hoe ik sessies kant onthouden na een refresh, ik dacht altijd dat sessies bleven bestaan totdat ze destroyed of geunset waren?
Inderdaad, dat klopt wel. Maar lees nu eens SanThe's verhaal... Daar staat dus dat je die sessie verwijderd als ie bestaat. Let wel op session_start.
ja ik heb het door bedankt, ik ga even verder proberen, in ieder geval bedankt tot zo ver, die if statement was nu wel behoorlijk nutteloos :P
Toevoeging op 10/10/2010 12:37:52:
Code (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
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
<?php
session_start();
if(!isset($_SESSION['username'])){
if(!isset($_POST['username'])){
echo "geen Post en Session";
}
else{
$_SESSION['username'] = $_POST['username'];
echo $_SESSION['username'];
}
}
elseif(!isset($_POST['username'])){
echo $_SESSION['username'];
}
elseif(($_POST['username']) != $_SESSION['username']){
session_unset();
session_destroy();
$_SESSION['username'] = $_POST['username'];
echo $_SESSION['username'];
}
else{
echo $_SESSION['username'];
}
?>
session_start();
if(!isset($_SESSION['username'])){
if(!isset($_POST['username'])){
echo "geen Post en Session";
}
else{
$_SESSION['username'] = $_POST['username'];
echo $_SESSION['username'];
}
}
elseif(!isset($_POST['username'])){
echo $_SESSION['username'];
}
elseif(($_POST['username']) != $_SESSION['username']){
session_unset();
session_destroy();
$_SESSION['username'] = $_POST['username'];
echo $_SESSION['username'];
}
else{
echo $_SESSION['username'];
}
?>
<html>
<head>
</head>
<body>
<form name="zx" method="post" action="">
<input name="username" type="text" id="username">
<input name="submit" type="submit">
<input type=button value="refresh" onClick="history.go()">
</html>
Oke ik ben door jullie tips al weer wat verder gekomen ;) het werkt nu wel, alleen net wou ik hem testen, dan typ ik wat in, druk op submit, en hij geeft hem dan wel weer ,refresh ik geeft ie em ook weer, maar dan zoek ik weer wat anders, dan geeft hij hem wel weer maar soms als je dan refreshed zegt ie "geen post en session, dat vind ik vervelend want hij moet straks na een auto refresh van zon 10 sec. ook de sessie onthouden. maar ik zou niet weten hoe je dit 100% zeker laat onthouden
Toevoeging op 10/10/2010 17:33:44:
Oke jongens, ik heb het toegepast om mn website en het is gelukt, bedankt voor de tips, ik had het een beetje onderschat! neem anders even een kijkje op: http://www.gerhardlubbers.com/twitterwall/ en zeg maar even wat je er van vind ;)
Groeten Gerhard
( moet ik dit topic zelf verwijderen btw?)