Ook ik ben aan het PHP-en geslagen. Ik wil een site maken voor mij en m'n vriendjes met een gastenboekje en een kalender enzo. Maar ik heb een probleem met sessies.
De sessie variabelen komen soms wel en soms niet door.
Ik gebruik deze code
quote:
login.php
--
<?php
session_start();
if (isset($_POST["login"])) {
include ("db/db_connect.php");
$query = "select user_id from users where naam = '" . $_POST["naam"] . "' and wachtwoord = '" . $_POST["wachtwoord"] ."'";
$result = mysql_query($query) or die ("<br>Query failed: " . mysql_error());
if (mysql_num_rows($result)) {
$row = mysql_fetch_row ($result);
$_SESSION['session_user_id'] = $row[0];
echo '<html><head><meta HTTP-EQUIV="refresh" content="0;URL=http://www.mijndomein.nl/home.php"></head></html>';
} else header ("location:
http://www.mijndomein.nl/watmoetdat.php"); include ("db/db_close.php");
}
?>
De meta http-equiv gebruik ik ipv Header (location: omdat ik dacht dat het daar mischien mee te maken had maar dat is dus niet zo. Dit stukje code werkt op zich, als je een fout wachtwoord opgeeft kom je op watmoetdat.php uit. Maar ik weet dus niet zeker of de sessie wordt geset.
Vervolgens kom je dus op home.php
quote:
home.php
--
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>mijndomein.nl - toppiejoppie!</title>
</head>
<frameset border="0" frameborder="no" framespacing="0" rows="71,*" >
<frame src="top.php" name="top" noresize scrolling="no">
<frameset border="0" cols="200,*" frameborder="no" framespacing="0">
<frame src="left.php" name="left" noresize scrolling="no">
<frame src="body.php" name="content" noresize>
</frameset>
</frameset>
</html>
Dit kan eignelijk niet misgaan en doet het ook niet
![]()
In de source zie je dat PHP de PHPSESSIONID heeft toegevoegd aan alle frames. Mooi!
Maar nu gaat 't mis. left.php wordt niet altijd getoond.
quote:
left.php
--
<?php
session_start();
header("Cache-control: private");
if ($_SESSION['session_user_id']) {
include ("db/db_connect.php");
print '<html><body bgcolor="#ff6600">';
echo "Upcoming:<Br>";
$query = "select events.event_id, events.naam from events where events.datum >= curdate() order by events.datum asc limit 0, 5";
$result = mysql_query($query) or die ("<br>Query failed. " . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo '<a href="event_details.php?event_id='. $row[0] . '" target="content">' . $row[1] . '</a><br>';
}
/* echo '<a href="add_event.php target=\"content\"">Voeg toe</a>'; */
echo "<br>Past:<br>";
$query = "select events.event_id, events.naam from events where events.datum < curdate() order by events.datum desc limit 0, 5";
$result = mysql_query($query) or die ("<br>Query failed. " . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo '<a href="event_details.php?event_id='. $row[0] . '" target="content">' . $row[1] . '</a><br>';
}
include ("db/db_close.php");
echo '</body></html>';
}
?>
Hier lijkt dus regelmatig $_SESSION['session_user_id'] niet geset te zijn en zit ik dus met een lege frame te kijken. Als ik 1 of 2 keer refresh (f5) dan werkt 't soms wel en dan blijft de site ook een tijdje (paar minuten) gewoon goed werken.
Nog wat gegevens die misschien relevant zijn:
PHP Version 4.1.2
register_globals On (tja... dat wil de hostingprovider zo denk ik)
session.auto_start Off
session.cache_expire 180
Als iemand nog meer info wil hoor k het wel.
Bijvoorbaat dank voor alle tips want ik word hier inmiddels
![]()
van.
[ Bericht 1% gewijzigd door zovty op 29-09-2004 15:12:48 ]