[PHP] Probleem met SESSION var

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
Ik probeer een login te maken en doe dat door op de homepage een popup op te roepen en hierin een sessie variabelen op true te zetten.

Echter als ik dan de home page herlaad bestaat deze variabelen hier niet.

In beide files heb ik boven aan de php file het volgende staan:

PHP:
1
2
$_SessionName = session_name("SessionName");
session_start();

Acties:
  • 0 Henk 'm!

  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

waarom dat session_name?? is toch helemaal niet nodig

trouwens ook wel handig om de code van de homepage (waar je de session checkt) en die van de popup (waar je de session vult) meegeeft

[ Voor 56% gewijzigd door Iska op 24-08-2008 19:57 ]

-- All science is either physics or stamp collecting


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Laat eens zien hoe je die sessie variabele set, met deze code kunnen we niet veel.
Jasper91 schreef op zondag 24 augustus 2008 @ 19:56:
waarom dat session_name?? is toch helemaal niet nodig
Dat is niet persé nodig maar je kan zo je sessie een eigen naam geven (i.p.v. de PHP default), dat kan echt geen kwaad.

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
Om de session var uit te lezen gebruik ik volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (!isset($_SESSION["LOGGEDIN"]))
{ 
?>
         <a href="javascript:Login();">Login</a>
<?php 
}
else
{ 
?>
       <a href="javascript:Loguit();">Loguit</a>
<?php 
}
?>


en voor de session var te setten gebruik ik volgende code:

PHP:
1
2
3
<?php
$_SESSION["LOGGEDIN"] = true;
?>

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Ik vind je systeem nogal vaag. Als je niet ingelogd ben moet je inloggen (logisch), maar als je ingelogd bent wordt je gelijk weer uitgelogd, zo zal die sessie variabele zowiezo niet geset blijven

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
En waarom wordt je gelijk weer uitgelogd? Ik kan je niet volgen ik unset de session var toch niet? Enkel laat ik een link "Loguit" zien.

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Ik zie het ik had de A tags als SCRIPT tags gelezen. Weet je zeker dat de code die de sessie variabele set ook daadwerkelijk wordt uitgevoerd?

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
Ja want direct daarna voer sluit ik de popup en dit wordt ook uitgevoerd.

De voledige code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($_POST["btnLogin"]))
        {
            if ($_POST["txtLogin"] == "login" && $_POST["txtPaswoord"] == "paswoord")
            {
                $_SESSION["LOGGEDIN"] = true;
        ?>
                <script type="text/javascript">
                    window.opener.location = window.opener.location;
                    window.close();
                </script>
        <?php
            }
            else
            {
                $Info = "<span style='color:red;'>verkeerd login/paswoord</span>";
            }
        }

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Om de pagina te refreshen zou ik de volgende code gebruiken om er zeker van te zijn dat de pagina niet uit de browser cache gehaald wordt:

JavaScript:
1
window.opener.location.href = window.opener.location.href.replace(/\?.*/, '') + '?' + time();


Daarnaast zou ik even controleren of er een cookie wordt geset met je sessie id.

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
Kun je misschien het hele stukje script laten zien wat uitgevoerd wordt wanneer je inlogt?

Want dit
PHP:
1
2
3
<?php
$_SESSION["LOGGEDIN"] = true;
?>
zou gewoon moeten werken.

Acties:
  • 0 Henk 'm!

  • mr_derk
  • Registratie: September 2005
  • Laatst online: 14:14
in hoeveel / welke browsers heb je dit gecheckt? IE wil nog wel is sessies blokken bij gebruik van window.open

[ Voor 192% gewijzigd door mr_derk op 24-08-2008 20:48 ]


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
Ik heb dit enkel in FF 3.0 getest.

@ BazzPsychoNut: 2 posten voor jouw post staat het script

De hele login pagina:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
    $_SessionName = session_name("SessionName");
    session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        
        <title>Login</title>
        
        <style type="text/css">
            body
            {
                margin:0;
                padding:10px;
                background-color:#B0A18E;
            }
        </style>
    </head>
    
    <body>
        <?php
        if (isset($_POST["btnLogin"]))
        {
            if ($_POST["txtLogin"] == "Login" && $_POST["txtPaswoord"] == "Paswoord")
            {
                $_SESSION["LOGGEDIN"] = true;
        ?>
                <script type="text/javascript">
                    window.opener.location = window.opener.location;
                    window.close();
                </script>
        <?php
            }
            else
            {
                $Info = "<span style='color:red;'>verkeerd login/paswoord</span>";
            }
        }
        ?>
        <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
            <div style="width:230px;">
                <div style="float:left; width:75px;">
                    Login:
                </div>
                <div style="float:left;">
                    <input type="text" name="txtLogin" style="width:150px;" />
                </div>
                <div style="clear:both;"></div>
                <div style="float:left; width:75px; padding-top:5px;">
                    Paswoord:
                </div>
                <div style="float:left; padding-top:5px;">
                    <input type="password" name="txtPaswoord" style="width:150px;" />
                </div>
                <div style="clear:both;"></div>
                <div style="float:right; padding-top:5px;">
                    <input type="submit" name="btnLogin" value="Login" />
                </div>
                <div style="clear:both;"></div>
                <?php
                    if (isset($Info))
                    {
                        ?>
                        <div style="float:left;">
                            <?php echo $Info; ?>
                        </div>
                        <div style="clear:both;"></div>
                        <?php
                    }
                ?>
            </div>
        </form>
    </body>
</html>

Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
Oeps, niet goed gekeken dus :S

Ik kan je helaas niet verder helpen. Het lijkt goed te zijn...

Acties:
  • 0 Henk 'm!

  • mr_derk
  • Registratie: September 2005
  • Laatst online: 14:14
misschien kan je is proberen het session_id door te geven via een querystring, en die in de popup weer op te pakken?

Acties:
  • 0 Henk 'm!

Verwijderd

Wat is de waarde van session.save_path in phpinfo() ?

Zie je wel een sessie-bestand van php als je een ls -lt [dat pad] doet (of sorteren op datum onder Windows)?

[ Voor 12% gewijzigd door Verwijderd op 24-08-2008 22:20 ]


Acties:
  • 0 Henk 'm!

  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

dit:
code:
1
2
3
<?php 
$_SESSION["LOGGEDIN"] = true; 
?>

werkt niet.. je moet er nog session_start(); voor zetten

-- All science is either physics or stamp collecting


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Jasper91 schreef op zondag 24 augustus 2008 @ 22:35:
dit:
code:
1
2
3
<?php 
$_SESSION["LOGGEDIN"] = true; 
?>

werkt niet.. je moet er nog session_start(); voor zetten
Zou je niet eens naar de rest van de posts van de TS kijken, hij zegt dat boven het script session_start wordt aangeroepen en de laatst geposte code bevestigd dat nogeens..

Maar ontopic: Heb je al gekeken of er wel een sessie cookie gezet wordt in IE? En of de sessie inderdaad wel goed wordt doorgegeven (print_r / var_dump van sessie id). Wat heb je al gedebugged / uitgesloten?

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ga eens debuggen. Ik heb de volgende twee bestanden:

hoi.php
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$_SessionName = session_name("SessionName");
session_start();

print_r($_SESSION);

?>
<form method="post" action="login.php">
<input type="submit" />
</form>


login.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$_SessionName = session_name("SessionName");
session_start();

if (isset($_POST) && is_array($_POST)) {
  $_SESSION['LoggedIN'] = true;
  echo 'Je bent ingelogd!';
} else {
  echo 'Ga eens inloggen';
}

?>
<a href="hoi.php">Terug</a>


En alles werkt gewoon. Wat is je echte sessionname, ik vermoed dat je die hebt veranderd voor het posten alhier. Wanneer de sessienaam andere tekens dan A-Z a-z en 0-9 bevat (of geen letter) krijg je geen foutmelding, maar wordt de sessie wel iedere aanvraag gereset.

[ Voor 18% gewijzigd door CodeCaster op 25-08-2008 07:48 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
Een quote van php.net
Note: If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.
Je hebt misschien toevallig wat whitespace voor je '<?php'-tag staan?

Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
De naam van de sessie is Artieste.be als ik op jouw uitleg afga mag hier die punt niet staan. Zal straks als ik thuis ben zeker eens proberen de punt te verwijderen.

Acties:
  • 0 Henk 'm!

  • Polichism
  • Registratie: Maart 2002
  • Niet online

Polichism

MOEHOE

(overleden)
ik zou je variable onder je session_start() zetten.. het is misschien een idee.
Aangezien ' session_start() ' altijd de eerste regel van je pagina moet zijn

{02:31:10} (splinkie): ik hoor net van iemand dat ze nu met een fietsband moest naaien omdat ze geen condooms meer kon betalen || {02:34:44} (Asjemenou): beter met een lange tijd met goodyear dan een korte tijd met firestone en in de problemen komen


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 17:23

Sebazzz

3dp

Polichism schreef op maandag 25 augustus 2008 @ 13:59:
Aangezien ' session_start() ' altijd de eerste regel van je pagina moet zijn
Nee hoor. Je kan hem prima onderaan zetten. Zolang je maar niet iets anders dan headers output voordat je een functie aanroept die headers gebruikt (zoals header() en session_start())

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
session_name() moet toch echt voor session_start(), maar blijkbaar klopt de parameter voor session_name() dus al uberhaupt niet. :z

{signature}


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 19:39
Polichism schreef op maandag 25 augustus 2008 @ 13:59:
Aangezien ' session_start() ' altijd de eerste regel van je pagina moet zijn
Dat is onzin. Zoals je in bovenstaande quote kunt lezen, gaat het erom dat je geen output genereert voor je session_start() aanroept. Als je session_start pas aanroept nadat je $_SESSION gebruikt, gaat het waarschijnlijk niet goed, maar dat is ook niet echt een logische manier van werken.

Edit: oeps, ik moet vaker verversen...

[ Voor 4% gewijzigd door Raynman op 25-08-2008 14:11 ]


Acties:
  • 0 Henk 'm!

  • Polichism
  • Registratie: Maart 2002
  • Niet online

Polichism

MOEHOE

(overleden)
sorry mijn fout :) had niet gelezen dat session_name dus getriggered mag worden voor een session_start

{02:31:10} (splinkie): ik hoor net van iemand dat ze nu met een fietsband moest naaien omdat ze geen condooms meer kon betalen || {02:34:44} (Asjemenou): beter met een lange tijd met goodyear dan een korte tijd met firestone en in de problemen komen


Acties:
  • 0 Henk 'm!

  • Yoki1985
  • Registratie: Augustus 2007
  • Laatst online: 19-09 08:07
Bedankt voor alle hulp.

heb de session name van Artieste.be veranderd naar Artiestebe en nu werkt alles perfect
Pagina: 1