vreemd probleem
Hallo ik maak gebruik van een sessie genaamd "fa_id". Iedere keer als ik de onderstaande pagina uitvoer wordt de sessie weer leeg. Daarom laat ik de sessie iedere keer echoën om te kijken waar het fout gaat. Bij session echo 6 wordt hij leeg weergeven bij de andere niet. Ik ben er achter dat als ik het stukje "" weghaal, dat de sessie gewoon in tact blijft, weet iemand waardoor dat komt?
Script:
<script language="JavaScript">
function forum(id)
{
var load = window.open('forums/family/index.php?id='+id,'','scrollbars=yes,menubar=no,height=500,
width=700,resizable=no,toolbar=no,location=no,status=no,top=100,left=100');
}
</script>
<table cellpadding="3" cellspacing="0" class="menu-news">
<tr>
<td class="top-menutb" colspan="5">Family Forum Topics:</td>
</tr>
<tr>
<td><div align="left"><strong>Subject:</strong></div></td>
<td><div align="left"><strong>Started by:</strong></div></td>
<td><div align="left"><strong>Starting date: </strong></div></td>
<td><div align="left"><strong>Last Activity: </strong></div></td>
<td><div align="left"><strong>Reactions:</strong></div></td>
</tr>
<tr>
<td><div align="left"><a href="javascript:forum()"></a></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td colspan="5"> </td>
</tr>
<tr>
<td colspan="5">Sort on : <a href="index.php?open=fforum&order=1">Topic Name</a> | <a href="index.php?open=fforum&order=2">Posting Date </a> | <a href="index.php?open=fforum&order=3">Last Activity</a></td>
</tr>
</table>
<a href="index.php?open=fforum&function=newtopic">Add New Topic</a> | <a href="index.php?open=fforum&function=searchtopic">Search for Topic</a>
<BR><BR><BR>
Code (php)
1
<? while (list($fid, $fa_id, $sender, $ipsender, $date, $topsub, $topinfo, $lactivity, $locked, $hidden) = mysql_fetch_row($result)){ //bla bla } ?>
Script:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
session_start();
if($_SESSION['fa_id'] != "0" AND $_SESSION['fa_id'] != "") {
echo "SESSIE 1: ".$_SESSION['fa_id'];
//order
$gorder = htmlspecialchars($_GET['order']);
?>
session_start();
if($_SESSION['fa_id'] != "0" AND $_SESSION['fa_id'] != "") {
echo "SESSIE 1: ".$_SESSION['fa_id'];
//order
$gorder = htmlspecialchars($_GET['order']);
?>
<script language="JavaScript">
function forum(id)
{
var load = window.open('forums/family/index.php?id='+id,'','scrollbars=yes,menubar=no,height=500,
width=700,resizable=no,toolbar=no,location=no,status=no,top=100,left=100');
}
</script>
<table cellpadding="3" cellspacing="0" class="menu-news">
<tr>
<td class="top-menutb" colspan="5">Family Forum Topics:</td>
</tr>
<tr>
<td><div align="left"><strong>Subject:</strong></div></td>
<td><div align="left"><strong>Started by:</strong></div></td>
<td><div align="left"><strong>Starting date: </strong></div></td>
<td><div align="left"><strong>Last Activity: </strong></div></td>
<td><div align="left"><strong>Reactions:</strong></div></td>
</tr>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
echo "SESSIE 2: ".$_SESSION['fa_id'];
$i = 0;
if ($gorder == 2) {
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `date` DESC");
}
elseif ($gorder == 3) {
echo "SESSIE 3: ".$_SESSION['fa_id'];
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `lactivity` DESC");
}else{
echo "SESSIE 4: ".$_SESSION['fa_id'];
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `topsub` ASC");
}
echo "SESSIE 5: ".$_SESSION['fa_id'];
while (list($fid, $fa_id, $sender, $ipsender, $date, $topsub, $topinfo, $lactivity, $locked, $hidden) = mysql_fetch_row($result)){
$date2 = date ("d-m-Y G:i:s", $date);
$lactivity2 = date ("d-m-Y G:i:s", $lactivity);
$reactions = mysql_query("SELECT count(fid) FROM `fforum` WHERE `fid` = '$fid' && `fa_id` = '".$_SESSION['fa_id']."'") ;
$reactions2 = mysql_result($reactions, 0);
?>
echo "SESSIE 2: ".$_SESSION['fa_id'];
$i = 0;
if ($gorder == 2) {
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `date` DESC");
}
elseif ($gorder == 3) {
echo "SESSIE 3: ".$_SESSION['fa_id'];
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `lactivity` DESC");
}else{
echo "SESSIE 4: ".$_SESSION['fa_id'];
$result = mysql_query("SELECT * FROM `topicsfforum` WHERE `fa_id` = '".$_SESSION['fa_id']."' ORDER by `topsub` ASC");
}
echo "SESSIE 5: ".$_SESSION['fa_id'];
while (list($fid, $fa_id, $sender, $ipsender, $date, $topsub, $topinfo, $lactivity, $locked, $hidden) = mysql_fetch_row($result)){
$date2 = date ("d-m-Y G:i:s", $date);
$lactivity2 = date ("d-m-Y G:i:s", $lactivity);
$reactions = mysql_query("SELECT count(fid) FROM `fforum` WHERE `fid` = '$fid' && `fa_id` = '".$_SESSION['fa_id']."'") ;
$reactions2 = mysql_result($reactions, 0);
?>
<tr>
<td><div align="left"><a href="javascript:forum()"></a></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td colspan="5"> </td>
</tr>
<tr>
<td colspan="5">Sort on : <a href="index.php?open=fforum&order=1">Topic Name</a> | <a href="index.php?open=fforum&order=2">Posting Date </a> | <a href="index.php?open=fforum&order=3">Last Activity</a></td>
</tr>
</table>
<a href="index.php?open=fforum&function=newtopic">Add New Topic</a> | <a href="index.php?open=fforum&function=searchtopic">Search for Topic</a>
<BR><BR><BR>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
if(isset($_GET['function'])) {
$function = htmlspecialchars($_GET['function']);
if($function == "newtopic") {
include('forums/family/newtopic.php');
}
elseif($function == "poll") {
include('forums/family/addpoll.php');
}
elseif($function == "searchtopic") {
include('forums/family/searchtopic.php');
}else{}
}
}else{
echo "<BR><div align=\"center\"><font color=\"red\"><strong>wat weergeven.</strong></font><div>";
}
?>
if(isset($_GET['function'])) {
$function = htmlspecialchars($_GET['function']);
if($function == "newtopic") {
include('forums/family/newtopic.php');
}
elseif($function == "poll") {
include('forums/family/addpoll.php');
}
elseif($function == "searchtopic") {
include('forums/family/searchtopic.php');
}else{}
}
}else{
echo "<BR><div align=\"center\"><font color=\"red\"><strong>wat weergeven.</strong></font><div>";
}
?>
Gewijzigd op 05/03/2006 16:39:00 door Sander
Niemand een idee?
ik weet niet hoor,
maar dat eerste lijstje zorgt ervoor dat je iets de database instuurt, niet dat je een session aanmaakt,
als dat niet is waar de session zou moeten ontstaan, dan moet je dat deel van een ander script ook maar ff posten,
kun je btw ff die lange
window.open regel in twee of drie regels hakken, hij verpest de hele lay-out
maar dat eerste lijstje zorgt ervoor dat je iets de database instuurt, niet dat je een session aanmaakt,
als dat niet is waar de session zou moeten ontstaan, dan moet je dat deel van een ander script ook maar ff posten,
kun je btw ff die lange
window.open regel in twee of drie regels hakken, hij verpest de hele lay-out
Op een andere pagina wordt $_SESSION['fa_id'] geset. Maar door het uitvoeren van de pagina is die na het uitvoeren van deze pagina leeg. Als ik andere pagina's uitvoer gebeurd dit niet.
(Op die pagina staat gewoon:
(Op die pagina staat gewoon:
welke PHP versie heb je?
want als je geen PHP 5 hebt is jou manier van de session inschrijven niet mogelijk, dan moet je als volgt te werk gaan:
want als je geen PHP 5 hebt is jou manier van de session inschrijven niet mogelijk, dan moet je als volgt te werk gaan:
Dat is het niet anders zou die hem niet 5x echoën en de 6de keer niet, zoals ik in het script doe om het te testen.
ik snap de hele nut niet van dit script zo gauw niet,
waarom zou je vijf keer het op willen roepen?
ik denk dat je in jou geval sneller met PHP kunt ORDnen:P
ipv 5 sql query's, belast je je db ook minder
waarom zou je vijf keer het op willen roepen?
ik denk dat je in jou geval sneller met PHP kunt ORDnen:P
ipv 5 sql query's, belast je je db ook minder
Gijs:
welke PHP versie heb je?
want als je geen PHP 5 hebt is jou manier van de session inschrijven niet mogelijk...
want als je geen PHP 5 hebt is jou manier van de session inschrijven niet mogelijk...
Euhm, Gijs, het is sinds versie 4.1 (1999 ongeveer?) Die manier die jij voorstelde wordt ten alle tijden afgeraden tegenwoordig.
Jouw probleem komt denk ik door superglobals. Je gebruikt de sessie $fa_id maar in die list() zit ook een $fa_id. Die overschijven elkaar waarschijnlijk. Probeer het eens met een van beiden een andere naam.
Gewijzigd op 05/03/2006 17:02:00 door Jelmer -
ok zal ik proberen, ik ben hem ook aan het overzetten naar een andere server, want in deze server die ik gebruik zitten vaker rare kuren. Ik laat het weten.
Het is gelukt, het kwam omdat de naam van de sessie en de variable het zelfde waren. Wel een beetje vreemd!
Waarwschijnlijk omdat register_globals aan staat. Voor iedere $_SESSION[$naam] wordt dan een reverence gemaakt ${$naam}, en dus waneer je ${$naam} aanpast, pas je eigenlijk de waarden van $_SESSION[$naam] aan.




