Hulp met sessions nodig

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper Geelen

Jasper Geelen

03/02/2011 14:21:36
Quote Anchor link
Hallo,

ik ben een beetje aan het spelen met sessions in PHP, en probeer een knop de maken om de sessie te resetten. Ik moet alleen 2 keer op Submit drukken om de sessie werkelijk te resetten.

Do ik wat verkeerd? Moet ik de Submit code ergens anders plaatsen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

session_start();
    if(isset($_SESSION['views'])) {
        $_SESSION['views'] = $_SESSION['views'] + 1;
    }

    else {
        $_SESSION['views'] = 1;
    }

    
echo "Pageviews = ".$_SESSION['views'];

?>


<form action="<?php echo $_SERVER['PHP_SELF']?>" method='post'>
<input type='submit' value='Submit' name='submit' />
</form>

<?php

if(isset($_POST['submit'])) {
    echo "works <br />";
    session_destroy();
}

else {
    echo "something went wrong <br />";
}
        

?>
 
PHP hulp

PHP hulp

21/11/2024 20:53:54
 
Jasper hoi

jasper hoi

03/02/2011 14:40:00
Quote Anchor link
controleren of er iets gepost is kan je beter doen met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($_SERVER['REQUEST_METHOD'] == 'post'){}

ipv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(isset($_POST['submit']))

Verder zou ik geen $_SERVER['PHP_SELF'] gebruiken, en is het handiger om eerst logica (php in dit geval) te doen en dan pas de output te geven(html)
 
- SanThe -

- SanThe -

03/02/2011 15:05:48
Quote Anchor link
Volgorde gewijzigd en een kleine aanpassing gedaan.
Getest en het werkt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
session_start();
if(isset($_POST['submit'])) {
    session_destroy();
    session_start();
}


if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
}

else {
    $_SESSION['views'] = 1;
}


echo "Pageviews = ".$_SESSION['views'];
?>


<form action="<?php echo $_SERVER['PHP_SELF']?>" method='post'>
<input type='submit' value='Submit' name='submit' />
</form>
Gewijzigd op 03/02/2011 15:23:21 door - SanThe -
 
Tim Fennis

Tim Fennis

03/02/2011 22:56:25
Quote Anchor link
fixd
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
session_start();
if(isset($_POST['submit'])) {
    session_destroy();
    session_start();
}


if(isset($_SESSION['views'])) {
    $_SESSION['views']++;
}

else {
    $_SESSION['views'] = 1;
}


echo "Pageviews = ".$_SESSION['views'];
?>


<form action="<?php echo $_SERVER['PHP_SELF']?>" method='post'>
<input type='submit' value='Submit' name='submit' />
</form>
 
Roel -

Roel -

03/02/2011 23:40:40
Quote Anchor link
Als je dan toch
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['PHP_SELF'] ?>
gebruikt, wat dus dezelfde pagina is, laat action dan gewoon leeg.

<form method="post" action="">
...
 
Jasper Geelen

Jasper Geelen

04/02/2011 12:08:29
Quote Anchor link
@ -SanThe- & Tim Fennis
Mag ik vragen wat ik fout had gedaan? Was het omdat ik de session niet opnieuw startte na de klik? Dit deel bedoel ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if(isset($_POST['submit'])) {
    session_destroy();
    session_start();
}


?>


@ Roel van de Water
Ik wist niet dat dat hetzelfde effect had, dank je!
Gewijzigd op 04/02/2011 13:11:59 door Jasper Geelen
 
Kris Peeters

Kris Peeters

04/02/2011 12:33:41
Quote Anchor link
Dit moet je echt niet doen:
if(isset($_POST['submit'])) {

Een submit knop dient om te submitten. Een submit knop dient niet om te controleren of er iets gepost is.

Er zijn meerdere situaties waarbij er wel gepost wordt maar waar $_POST['submit'] toch niet bestaat; bv. afhankelijk van de webbrowser, maar bv. is er ook een verschil wanneer de gebruiker effectief op de knop drukt of op enter drukt, na het invullen van de gegevens.

Vervang het door
if($_SERVER['REQUEST_METHOD'] == 'POST'){
 
Jasper Geelen

Jasper Geelen

04/02/2011 13:08:03
Quote Anchor link
@ Kris Peeters
Maar op die manier kan ik het niet aan een specifieke knop koppelen of wel? Of zou dat dan zo moeten

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if(isset($_POST['submit'])) {
        session_destroy();
        session_start();
    }
}


?>
Gewijzigd op 04/02/2011 13:11:37 door Jasper Geelen
 
Jasper hoi

jasper hoi

04/02/2011 13:16:24
Quote Anchor link
nee, gewoon zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
        session_destroy();
        session_start();
}


?>
 
Jasper Geelen

Jasper Geelen

04/02/2011 13:23:58
Quote Anchor link
Ja maar als ik dan een andere knop in hetzelfde form heb staan, dan werken beide knoppen als een reset knop. Dat wil ik niet.
 
Ozzie PHP

Ozzie PHP

04/02/2011 13:24:25
Quote Anchor link
Als je meerdere formulieren op je pagina hebt staan dan kun je dit wel doen:

if(isset($_POST['submit']))

Als het maar 1 formulier is dan hoeft het niet.


Overigens zou je ook een aparte pagina kunnen maken waar je de sessie destroyt zodat je niet op iedere pagina een formulier hoeft te zetten. Dan maak je gewoon een linkje naar www.mijnsite.nl/uitloggen

Op die pagina zet je dan

session_destroy();
session_start();
header('Location: http://www.mijnsite.nl');
exit();
 
Kris Peeters

Kris Peeters

04/02/2011 13:26:46
Quote Anchor link
Jasper Geelen op 04/02/2011 13:08:03:
@ Kris Peeters
Maar op die manier kan ik het niet aan een specifieke knop koppelen of wel?


Waarom zou je?
Je hebt toch maar 1 submit knop per form.

Wat je wel kan doen, is controleren welk form is verzonden. Dat doe je met hidden input velden

Ozzie PHP op 04/02/2011 13:24:25:
if(isset($_POST['submit']))
Als het maar 1 formulier is dan hoeft het niet.

Het is altijd een slecht idee. Ongeacht het aantal formulieren.
Gewijzigd op 04/02/2011 13:29:25 door Kris Peeters
 

04/02/2011 17:34:44
Quote Anchor link
Ozzie PHP op 04/02/2011 13:24:25:
Als je meerdere formulieren op je pagina hebt staan dan kun je dit wel doen:

if(isset($_POST['submit']))


Het punt is dus dat die niet altijd mee verstuurd wordt. Verder kan je netjes je code opdelen door if($_SERVER['REQUEST_METHOD'] == 'POST') te gebruiken. Alles wat in die if staat heeft te maken met een post.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.