[PHP] Inloggen werkt, bij volgende pageview uitgelogd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Ik heb een script waar je moet inloggen. Bij succesvol inloggen wordt de ID van de ingelogde user in de sessie gezet ($_SESSION['iLoggedIn'] = $aUser['id'];).

Daarna krijgt men een link te zien waar je heen kan gaan om gegevens te wijzigen.

"U bent succesvol ingelogd. Klik hier om gegevens te wijzigen."

In edit.php wordt gekeken of men is ingelogd (if (!isset($_SESSION['iLoggedIn']))) en indien dit niet zo is, word men doorgestuurd naar login.php. Nu hoor ik dat bij verschillende mensen het inloggen niet goed werkt? Als ze inloggen krijgen ze netjes de melding te zien dat ze succesvol zijn ingelogd, maar na het klikken op de link worden ze door edit.php weer teruggestuurd naar login.php.....

Beide scripts (login.php en edit.php) includen als allereerste config.php, die session_start(); aanroept.

Bij mij werkt het geheel wèl zoals het moet werken en ik krijg netjes een formulier te zien waar ik mijn gegevens kan wijzigen.

Hoe kan dit? Is dit een instelling op de server die ik over het hoofd zie? Of is het toch iets aan de clientkant? Ik heb dit nog nooit meegemaakt...


EDIT: Kan iemand "uitlogd" naar "uitgelogd" veranderen? 8)7

[ Voor 6% gewijzigd door Tanuki op 28-02-2006 20:27 . Reden: Titel ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Vanuit je code een refresh doen na het inloggen werkt niet?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Vanuit mijn code een header('Location: edit.php'); zou gaan, maar het zou via die link ook moeten werken, nietwaar?

Ik ga het in ieder geval proberen, aangezien ik het spoor bijster ben....


EDIT: Of bedoel je dat je na een refresh ook uitgelogd bent? Ik neem aan van niet, want dan wordt de POST data opnieuw verzonden en dan ben je sowieso weer ingelogd (als de gegevens goed waren)...

[ Voor 37% gewijzigd door Tanuki op 28-02-2006 20:46 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Post hier een de belangrijkste code van je login.php en edit.php, dan krijgen we daar meer inzicht over :)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • jurma
  • Registratie: December 2003
  • Laatst online: 20-09 23:39

jurma

simply connecting...

Dit heb ik ook gehad, en het probleem bij mij toe was dat ik het formulier niet goed afsloot. Kun je dus iets meer php code laten zien?

If you want to be serious, we make a powerpoint presentation.


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Mja, tuurlijk.


config.php
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
<?php
session_start(); // dit laten staan
ob_start(); // dit laten staan

// instellingen stonden hier

// functie die wordt gebruikt om waardes door te blijven geven
function append_vars($sLink = '', $pbHTML = true)
{
    if ($sLink != '')
    {
        $sLink = $sLink . (strpos($sLink, '?') !== false ? '&' : '?') . 'color1=' . $_GET['color1'] . '&color2=' . $_GET['color2'] . '&amount=' . $_GET['amount'] . '&promoter='.$_GET['promoter'].'&layout='.$_GET['layout'].'&tonen='.$_GET['tonen'];
        if ($pbHTML)
        {
            $sLink = htmlspecialchars($sLink);
        }
        return $sLink;
    }
    else
    {
        echo '<input type="hidden" name="promoter" value="'.htmlspecialchars($_GET['promoter']).'" />';
        echo '<input type="hidden" name="color1" value="'.htmlspecialchars($_GET['color1']).'" />';
        echo '<input type="hidden" name="color2" value="'.htmlspecialchars($_GET['color2']).'" />';
        echo '<input type="hidden" name="amount" value="'.intval($_GET['amount']).'" />';
        echo '<input type="hidden" name="tonen" value="'.htmlspecialchars($_GET['tonen']).'" />';
        echo '<input type="hidden" name="layout" value="'.intval($_GET['layout']).'" />';
    }
}
?>


login.php
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
<?php
include 'config.php';
if ($_SERVER['REQUEST_METHOD'] != 'POST')
{
?>
<form action="<?php echo append_vars('login.php'); ?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam"><br /><br />
Paswoord:<br />
<input type="password" name="pass"><br /><br />
<input type="Submit" value="  Login!  "><br />
<a href="<?php echo append_vars('passwordrecovery.php'); ?>">Wachtwoord vergeten?</a>
</form>
<?php
}
else
{
    $sQuery = "SELECT id FROM catalogus WHERE gebruikersnaam = '".addslashes($_POST['gebruikersnaam'])."' AND wachtwoord = '".addslashes($_POST['pass'])."' AND bevestigd = 1";
    $r = mysql_query($sQuery) or die (mysql_error());
    if (mysql_num_rows($r) == 0)
    {
        echo 'Deze gebruikersnaam/wachtwoord combinatie bestaat niet... Of je bent nog niet bevestigd...';
        sleep(5);
    }
    else
    {
        $a = mysql_fetch_assoc($r);
        $_SESSION['iLoggedIn'] = $a['id'];
        echo 'U bent nu ingelogd.<br />';
        echo '<a href="'.append_vars('edit.php').'">Advertentie invullen/bewerken</a>';
    }
}
?>
</body> 
</html>


edit.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include 'config.php';
if (!isset($_SESSION['iLoggedIn']))
{
    header('Location: login.php?' . $_SERVER['QUERY_STRING']);
    die;
}

$rQuery = mysql_query("SELECT * FROM catalogus WHERE id = " . $_SESSION['iLoggedIn']) or die (mysql_error());
if (mysql_num_rows($rQuery) == 0)
{
    echo 'Deze gebruiker bestaat niet meer.';
    unset($_SESSION['iLoggedIn']);
    die;
}
// hier gaat het script dan verder, formuliertje op het scherm, opslaan in database, etc. etc. maar wat hierboven staat is het belangrijkste, daardoor word men weer terug naar login.php gestuurd
echo 'Je bent ingelogd, halleluja';
?>



Dit is denk ik wel zo'n beetje de belangrijkste code omtrent dit probleem...

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Wordt de sessie bewaard in een cookie of wordt deze doorgegeven in de url? In geval van het eerste kan het zijn dat de cookie niet weggeschreven kan worden bij bepaalde bezoekers.

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
[ash] schreef op dinsdag 28 februari 2006 @ 21:00:
Wordt de sessie bewaard in een cookie of wordt deze doorgegeven in de url? In geval van het eerste kan het zijn dat de cookie niet weggeschreven kan worden bij bepaalde bezoekers.
Er staat in ieder geval geen PHPSESSID in de URL, dus ik neem aan dat dit inderdaad via een cookie gaat. Ik heb net al via IRC te horen gekregen dat IE6 dus de cookies reject... ofwel... niet toestaat.

Ze vertelden mij ook dat ik dit kon oplossen door PHPSESSID achter de URL te plakken, of dit door PHP zelf te laten doen. Hoe kan ik dit door PHP zelf laten doen?

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
session.use_trans_sid in je php.ini op 1 zetten als ik me niet vergis. Let wel dat dit minder veilig is. Het wijgeren van cookies is trouwens een browser instelling, in dat geval zou ik een controle bouwen welke kijkt of de user cookies ingeschakeld zijn of niet. Zonee, dan komt je niet op de site :)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Ik heb nu de volgende code in config.php toegevoegd:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
        // Date in the past.
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        
        // always modified.
        header("Last-Modified: ".adodb_gmdate("D, d M Y H:i:s")." GMT");
        
        // HTTP/1.1
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        
        // HTTP/1.0
        header("Pragma: no-cache");
        
        /*
        * Policy: does not store identifiable information.
        * This will enable your cookie to survive any IE-6 privacy settings.
        * We can now set a cookie in a framed websites etc..
        */ 
        header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
?>


En ik hoop dat dat iets uit mag maken... Dit zou er voor moeten zorgen dat IE6 de cookie ook accepteert.

Mocht dit niet werken, dan moet die PHPSESSID maar in de URL..... Bedankt voor de inzet mannen!

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Oke... Het schijnt dus opgelost te zijn met bovenstaande headers... Is er nog een reden waarom ik óók PHPSESSID in de URL zou moeten doorgeven? Lijkt me niet, of wel?

Btw, persoonlijk vind ik het zeer slecht dat IE 6 session cookies weigert... Waarom zou een sessioncookie niet vertrouwelijk kunnen zijn? Er staat notabene alleen maar een nummertje in (het ID van degene die is ingelogd)! :X 8)7 8)7 8)7 8)7

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Draait je site in een frame van een ander domein? Zo ja, dan is dat de oorzaak ;) (en de reden dat het met een P3P policy header wel werkt)

[ Voor 27% gewijzigd door crisp op 28-02-2006 23:19 ]

Intentionally left blank

Pagina: 1