[PHP] Sessie met post form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Laatst online: 16:40

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Ik ben bezig met het maken van een simpel nieuws post scripts in PHP. Dit nieuwsscript zal de waarden welke worden ingevuld in een normaal HTML form posten in een mysql database.

In mijn postnews.php code check ik ten eerste of er is ingelogd. Is dit niet het geval dan verschijnt er gelijk een foutmelding en stopt het script.

PHP:
1
2
3
4
5
6
 
<?php
if (!(session_is_registered('Login')))
{ echo "You are not logged in (<a HREF=\"http://www.test.nl/index.php?page=login\">login</a>)&nbsp; &nbsp";
}
?> 


Vervolgens check ik of er is ingelogd maar de value Submit niet is gepost. Als dit het geval is is user dus voor het eerst op de pagina en volgt de form om in te vullen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
 
if ( (session_is_registered('Login')) && (!(isset($_POST['Submit']))) )
{   
    echo "<form action='postnews.php' method='post' name='postnews' id='postnews'>";
    echo "Title<br><input type=text name=title size=25 maxlength=25><br>";
    echo "Content<br><TEXTAREA name=content COLS=60 ROWS=6></TEXTAREA><br>";
    echo "Userid<br><input type=text name=user_id size=4 maxlenght=4><br><br>";
    echo "<input type='submit' name='Submit' value='NewsPost'>";
    echo "</form>";
} 
?>


Ten slotte check ik of er is ingelogd en de pagina is gesubmit. Als dit het geval is worden de waarden in de MySQL DB geplaatst.

PHP:
1
2
3
4
5
<?php 
if ( (session_is_registered('Login'))&&(isset($_POST['Submit'])) )
{  ... code omitted ...
}
?>


Het probleem is nu het volgende:

Het laten zien van de form aan een ingelogde user werkt.
Het posten van info door een ingelogde user werkt.
Helaas verschijnt na het succesvol submitten van nieuws altijd het bericht dat men niet is ingelogd.

Dit php bestand wordt opgeroepen vanuit een index.php waar session_start(); in is opgenomen. De sessie loopt dus wel dacht ik.

Hoe werkt dit nou precies met die sessies? Is de sessie info bij het posten ineens weg oid? Of maak ik er doordat ik maar net met php ben begonnen een puinhoop van?

[ Voor 14% gewijzigd door Bor op 09-10-2003 17:46 ]

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • WhizzCat
  • Registratie: November 2001
  • Laatst online: 15-05-2024

WhizzCat

www.lichtsignaal.nl

Je moet je sessie wel doorsturen door middel van een cookie of in de url :)

www.php.net staat dit vrij duidelijk uitgelegd :)

edit: http://nl.php.net/manual/nl/ref.session.php hier om exact te zijn :)

code:
1
2
<input type="hidden" name="PHPSESSID" value=<?php print $id; ?>>
<input type="submit" value="Ga verder">


zoiets dus

[ Voor 50% gewijzigd door WhizzCat op 09-10-2003 17:47 ]

Gezocht: netwerkbeheerder
Als je het niet aan een 6-jarige kan uitleggen, snap je er zelf ook niks van! - A. Einstein


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Laatst online: 16:40

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
WhizzCat schreef op 09 October 2003 @ 17:46:
Je moet je sessie wel doorsturen door middel van een cookie of in de url :)

www.php.net staat dit vrij duidelijk uitgelegd :)
Waarom werkt het bij andere pagina's wel dan? Ik dacht dat het doorsturen automatisch ging met een session start bovenaan elke pagina?!

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • WhizzCat
  • Registratie: November 2001
  • Laatst online: 15-05-2024

WhizzCat

www.lichtsignaal.nl

Bor_de_Wollef schreef op 09 October 2003 @ 17:47:
[...]


Waarom werkt het bij andere pagina's wel dan? Ik dacht dat het doorsturen automatisch ging met een session start bovenaan elke pagina?!
Volgens mij ligt dit ook voor een groot deel aan je server config trouwens.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

include ("config.php");

if((isset($_POST['userForm']))&&(isset($_POST['pwdForm'])))
{
    $userCheck = $_POST['userForm'];
    $pwdCheck = $_POST['pwdForm'];

    if(($userCheck == $user)&&($pwdCheck = $pwd))
    {
        session_start();
        header("Cache-control: private");
        
        session_register("userses");
        session_register("pwdses");
                            
        $id = session_id();
        $userses = $userCheck;
        $pwdses = $pwdCheck;
        
        print "<meta http-equiv='Refresh' content='0;url=post.php?PHPSESSID=$id' target='_self'>";
    }


zo ongeveer heb ik het opgelost en dat werkt prima

Gezocht: netwerkbeheerder
Als je het niet aan een 6-jarige kan uitleggen, snap je er zelf ook niks van! - A. Einstein


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

WhizzCat schreef op 09 oktober 2003 @ 17:46:
Je moet je sessie wel doorsturen door middel van een cookie of in de url :)

www.php.net staat dit vrij duidelijk uitgelegd :)
[...]
onzin, als je browser cookies accepteerd en je in PHP sessie-cookies enabled hebt hoeft dat helemaal niet; het is zelfs een mogelijk security-risico om altijd en overal de sessie-id aan vast te knopen.

Ik denk dat het probleem zit in het niet consequent gebruiken van superglobals, voor het uitvragen van je POST vars gebruik je wel netjes $_POST, maar je gebruikt nog steeds de oude manier om met sessies te werken.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 11:40
WhizzCat schreef op 09 oktober 2003 @ 17:46:
Je moet je sessie wel doorsturen door middel van een cookie of in de url :)

www.php.net staat dit vrij duidelijk uitgelegd :)

edit: http://nl.php.net/manual/nl/ref.session.php hier om exact te zijn :)

code:
1
2
<input type="hidden" name="PHPSESSID" value=<?php print $id; ?>>
<input type="submit" value="Ga verder">


zoiets dus
Ik vind dat je dat heel erg vaag uitlegt ;)

De sessie id wordt gewoon standaard als cookie opgeslagen, het meesturen is een extra.

Maar, geen punt :P Als het op die andere pagina's wel werkt, is er wat mis met de coding van die ene pagina, werkt er een check niet, enz..

|>


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

misschien ook handig om te weten is om welke versie PHP het gaat, en of register_globals aan of uit staat ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Laatst online: 16:40

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
crisp schreef op 09 October 2003 @ 17:54:
misschien ook handig om te weten is om welke versie PHP het gaat, en of register_globals aan of uit staat ;)
Het is PHP 4.3.3 van 25 augustus 2003 en register globals staat uit in php.ini

[ Voor 4% gewijzigd door Bor op 09-10-2003 18:01 ]

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum

Pagina: 1