sessie vraag
Ik ben bezig met een website, en maak hier uiteraard gebruik van sessies.
Ik heb hier een map neergezet met 2009 en vervolgens een php bestand aangemaakt met artikels.php daarin met session_start(); .
Nu is het zo, dat als ik voor die map dus "/" inlog en ik ga naar de map 2009/artikel.php, dat ik weer opnieuw moet inloggen omdat die sessie verloren gaat (kennelijk).
In mijn index heb ik bovenaan geinclude. een login systeem die terug gaat naar index als je ingelogged bent. Dan word de sessie en de pagina correct geladen.
Wanneer ik dan op een van mijn artikels gaat, kom ik uit op hxxp://domeinnaam.nl/2009/artikel.php?juni=2
Nu moet ik hier weer opnieuw inloggen... F5 werkt ook niet.
Kan iemand mij hiermee helpen?
heb je wel op artikel.php helemaal bovenaan session_start(); staan?
Gewijzigd op 01/01/1970 01:00:00 door Daan Onbekend
Laat anders eens wat stukjes van de betreffende scripts zien, dit zou namelijk niet aan het gebruik van sessies moeten liggen.
die is aanwezig.
Op mijn index ook, en bij logon word deze sessie gestart.
In feite heb ik op elke pagina het onderstaande staan, dus geen andere namen.
Kan het misschien zijn dat je nieuwe pagina artikels.php nog niet in de includes van index.php staat, waardoor hij de default pagina neemt?
heb een paar stukjes geknipt om het zo kort mogelijk te houden.
index.php
Code (php)
menutop.php
Hier kan je dus inloggen met een inlogveldje.
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
28
29
30
31
32
33
34
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
<?php
session_start();
include("/home/coreplanet/domains/core-planet.com/public_html/inc/config.php");
?>
<td align="right">
<?php
$username2 = $_SESSION["user"];
$sql = "SELECT posts FROM users WHERE username='$username2'";
$resultaat = mysql_query($sql);
$rij = mysql_fetch_array($resultaat);
if(isset($_SESSION["user"]))
{
[/code]
logon.php
Hier de functies voor het inloggen, registreren van ip's en tijden.
<?php
include("inc/config.php");
$recieve = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'", mysql_real_escape_string($username), mysql_real_escape_string($password)); //this is the "query", which selects the row where memebername=the one entered, and the same for the password
$query = mysql_query($recieve); //do the query
session_start(); //start a sessions :D
if($rows = mysql_num_rows($query)) //if the query resulted with a row, start the sessions and go to the index
{
$_SESSION["pwd"] = $password; //store the users password in a sesions var
$_SESSION["user"] = $username; //store the username in a session var
header("Location: index.php");
$sql = "UPDATE users SET lastip = '$ipadres', lastlogin = '$tijd' WHERE username = '$username2'";
$res = mysql_query($sql) or die(mysql_error());
[/code]
session_start();
include("/home/coreplanet/domains/core-planet.com/public_html/inc/config.php");
?>
<td align="right">
<?php
$username2 = $_SESSION["user"];
$sql = "SELECT posts FROM users WHERE username='$username2'";
$resultaat = mysql_query($sql);
$rij = mysql_fetch_array($resultaat);
if(isset($_SESSION["user"]))
{
[/code]
logon.php
Hier de functies voor het inloggen, registreren van ip's en tijden.
<?php
include("inc/config.php");
$recieve = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'", mysql_real_escape_string($username), mysql_real_escape_string($password)); //this is the "query", which selects the row where memebername=the one entered, and the same for the password
$query = mysql_query($recieve); //do the query
session_start(); //start a sessions :D
if($rows = mysql_num_rows($query)) //if the query resulted with a row, start the sessions and go to the index
{
$_SESSION["pwd"] = $password; //store the users password in a sesions var
$_SESSION["user"] = $username; //store the username in a session var
header("Location: index.php");
$sql = "UPDATE users SET lastip = '$ipadres', lastlogin = '$tijd' WHERE username = '$username2'";
$res = mysql_query($sql) or die(mysql_error());
[/code]
Verder is het niet slim om wachtwoorden in sessievariabelen op te slaan. Ten eerste is het nergens voor nodig en daarnaast kan het alleen maar veiligheidslekken opleveren.
ps. Verder mis ik ook een beetje de logica in je scripts. Ik zie overal meerdere includes van hetzelfde? Als je nu eens 1 index.php neemt waarin je al de benodigde pagina's include. Dan kun je die index.php met session_start() beginnen en ben je vervolgens van alle problemen af...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Vreemd, nou werkt hij wel.
Code (php)
1
Kan het misschien zijn dat je nieuwe pagina artikels.php nog niet in de includes van index.php staat, waardoor hij de default pagina neemt?
Ik heb dit gecontroleerd.
Zo werkte het niet
en zo kennelijk wel
Het lijkt er dus op dat je helemaal geen gebruik mag maken van FULL url's.
In iedere geval, heel erg bedankt!
@ Blanche.
Ik ben nog geen expert in php, ben intensief aan het leren. Vandaar dat het er vrij priegelig eng uit ziet. Ik ken iets meer dan de basics.
In iedere geval, heb ik de sessies die worden opgeslagen netjes in een map verborgen en beveiligd.
Nogmaals bedankt!
Quote:
Sessies worden normaal gesproken gewoon door de webserver zelf beheert en op een onbereikbare plaats opgeslagen. Daar hoef jij zelf dus niets aan te doen, tenzij je natuurlijk een eigen sessionhandler gebruikt...In iedere geval, heb ik de sessies die worden opgeslagen netjes in een map verborgen en beveiligd.