Google Chrome forgets session variables based on requests

I’ve got the strangest problem ever.

Suppose $_SESSION[‘stored’]=$_REQUEST[‘Response’] and $_REQUEST[‘Response’] is Hello.

And after that suppose $_SESSION[‘stored’]=$_SESSION[‘stored’].’ John’.

Now $_SESSION[‘stored’] is Hello John.

Checked in all browsers. This works. Of course it does.

Now I’m going to another page. I’m neatly starting the session and as expected, $_SESSION[‘stored’ is still Hello John in all browsers.

Except in Chrome. In Chrome $_SESSION[‘stored’ has miraculously changed into John. Hello has disappeared. Ran some more tests, and indeed, Chrome “forgets” all parts in session variables that are based on REQUESTS.

Some safety mesaure? I don’t need it! Do I really need to store the session variable via MySQL to load it back one page later just because Chrome refuses to co-operate?

Any help would be appreciated.

Read $_SESSION[‘stored’ as $_SESSION[‘stored’]… I still need to discover the edit posting feature, it seems.

I would want to see both pages of coding because there is no safety feature it is an error in the coding

Thank you for looking into this!

It’s part of a much larger strip of code, but I’ve narrowed it down to this:

[php]
echo $saveresponse;
$saveresponse=mysql_query(“UPDATE users SET lastresponse=’”.$saveresponse."’ WHERE ID=’".$_SESSION[‘userid’]."’",$link);
[/php]

In all browsers, this shows $saveresponse on my screen and saves $saveresponse in the database.
In Chrome, this shows $saveresponse on my screen and stores an empty string in the database.

[php]
echo $saveresponse;
saveresponse = ‘This is a text’;
$saveresponse=mysql_query(“UPDATE users SET lastresponse=’”.$saveresponse."’ WHERE ID=’".$_SESSION[‘userid’]."’",$link);
[/php]

In all browsers, this shows $saveresponse on my screen and saves “This is a text” in the database.
Even in Chrome.

Now the only thing is that $saveresponse was defined as:
$saveresponse=$_REQUEST[‘response’];

Even stranger is that it only goes wrong in UPDATE SQL strings… if I use INSERT strings instead, the behaviour is normal.

I am totally flab-ber-gasted.

I’m so sorry, I badly need an edit feature on this forum. Try two:

[php]<?
session_start();

echo ‘

’;

putenv (‘TZ=Europe/Amsterdam’);
$currenttime=time();

// Sla reactie tijdelijk op, anders is gebruiker alles kwijt als CAPTCHA-code niet klopt
$_SESSION[‘reactie’]=$_REQUEST[‘Reactie’];
$reactie=makesafe($_SESSION[‘reactie’]);
$waaromwerktditniet=$reactie;

$id=$_SESSION[‘id’];
$captcha=makesafe($_REQUEST[‘Captcha’]);

//

en
tellen. Deze moeten gelijk zijn, anders gaan de citaties de mist in (als een citaat wordt geopend, moet het ook worden afgesloten)
$openquotes=mb_substr_count($reactie, ‘
’, ‘UTF8’);
$sluitquotes=mb_substr_count($reactie, ‘
’, ‘UTF8’);
$openbolds=mb_substr_count($reactie, ‘’, ‘UTF8’);
$sluitbolds=mb_substr_count($reactie, '
’, ‘UTF8’);

// Is gebruiker niet verbannen? En e-mailadres plus autoabbo ophalen.
$result=mysql_query(“SELECT verbannentot, emailadres, autoabbo FROM gebruikers where ID=’”.$_SESSION[gebruikersid]."’",$link);
if (!$result)
{
die(‘Kan database niet bijwerken. Probeer het opnieuw.’);
}
$row=mysql_fetch_array($result);
$verbannentot=$row[‘verbannentot’];
$emailadres=$row[‘emailadres’];
$autoabbo=$row[‘autoabbo’];

if ($_SESSION[‘loginseiko’]==0) {
echo ‘

Je kunt niet reageren, want je bent niet registreerd en ingelogd!’;
}
else if ($openquotes<>$sluitquotes) {
echo ‘

Er ontbreekt een begin of einde in een van de geciteerde stukken tekst. Controleer of alle

-tags goed worden afgesloten met een
-tag.’;
}
else if ($openbolds<>$sluitbolds) {
echo ‘

Er ontbreekt een begin of einde in een van de opmaakmarkeringen. Controleer of alle -tags goed worden afgesloten met een -tag.’;
}
else if ($verbannentot>=$currenttime) {
echo ‘

Wegens overtreding van de regels ben je van het forum verbannen tot ‘.date(“d-m-Y, H:i”, $verbannentot).’. Daarna ben je vanzelfsprekend weer welkom.

’;
}
else if ($reactie<>’’ && $id<>’’ && md5($captcha) == $_SESSION[‘randomnr2’])
{
// E-mail beetje schoonmaken
$reactiemail=dbcontentstotxtmail($reactie);
$reactiemailhtml=dbcontentstohtmlmail($reactie);
// Nieuwe reactie toevoegen
$result=mysql_query("INSERT INTO reacties (artikelid, gebruikersid, reactietijd, reactie) VALUES ('$id', '$_SESSION[gebruikersid]', '$currenttime', '$reactie')",$link);
if (!$result)
  {
  die('Kan database niet bijwerken. Probeer het opnieuw.');
  }
else {
	echo '<p class="normaal">Reactie toegevoegd!</p>';
	$_SESSION['reactie']='';

	// Bepaal paginanummer van nieuwe reactie
	$reactienummer=mysql_insert_id();
	$result2=mysql_query("SELECT ID FROM reacties WHERE artikelid='".$id."'", $link);
	if (!$result2)
	{
		die('Kan database niet lezen: '.mysql_error());
	}
	$numrows2=mysql_num_rows($result2);
	$row2nummer=0;
	for ($j=1; $j<=$numrows2; $j++) {
		$row2=mysql_fetch_array($result2);
		$row2id=$row2['ID'];
		if ($row2id==$reactienummer) {
			$row2nummer=$j;
		}
}
$paginanummer=ceil($row2nummer/10);		
	
// Tijdstip laatste reactie van les (forumonderwerp) bijwerken
$result3=mysql_query("UPDATE lessen SET reactietijd='$currenttime' WHERE ID='$id'", $link);		
if (!$result3)
  {
  die('Kan database niet bijwerken. Probeer het opnieuw.');
  }

// Naam onderwerp en abonnees bepalen
$result4=mysql_query("SELECT naam, abonnees FROM lessen WHERE ID='".$id."'", $link);
if (!$result4)
{
	die('Kan database niet lezen: '.mysql_error());
}
$row4=mysql_fetch_array($result4);
$onderwerp=$row4['naam']; 
$bccstring=$row4['abonnees'];

// E-mailadres van plaatser wegfilteren
$bccstring=str_replace($emailadres.", ", "", $bccstring);
$bccstring=str_replace(", ".$emailadres, "", $bccstring);
$bccstring=str_replace($emailadres, "", $bccstring);

// Send e-mail
include 'mailtemplate.php';
$subject = 'Nieuwe reactie';
$message = $startmessage.PHP_EOL.

PHP_EOL.
‘Hallo allemaal,’.PHP_EOL.
PHP_EOL.
$_SESSION[‘gebruikersnaam’].’ heeft de volgende reactie geplaatst in ‘.$onderwerp.’:’.PHP_EOL.
PHP_EOL.
$reactiemail.PHP_EOL.
PHP_EOL.
‘Je kunt het bericht hier beantwoorden:’.PHP_EOL.
http://’.constant(‘DOMAIN’).’/index.php?id=’.$id.’&page=’.$paginanummer.’#reactie’.$reactienummer.’’.PHP_EOL.
PHP_EOL.
‘Als je een reactie in een onderwerp plaatst of een onderwerp opent, word je automatisch op dat onderwerp geabonneerd. Dit kun je voorkomen via de instelling voor automatische abonnementen in je profiel:’.PHP_EOL.
http://’.constant(‘DOMAIN’).’/mijnprofiel.php’.PHP_EOL.
PHP_EOL.
‘Als je alleen het abonnement op dit onderwerp wilt opzeggen, kan dat via de link Opzeggen in hetzelfde onderwerp:’.PHP_EOL.
http://’.constant(‘DOMAIN’).’/index.php?id=’.$id.’&page=1’.PHP_EOL.
PHP_EOL.
‘Met vriendelijke groet,’.PHP_EOL.
PHP_EOL.
‘Japanology’.PHP_EOL.
constant(‘DOMAIN’).PHP_EOL.
PHP_EOL.
$mailfootersimple.
$splitmessage.PHP_EOL.
PHP_EOL.
'Hallo allemaal,

'.$_SESSION['gebruikersnaam'].' heeft de volgende reactie geplaatst in '.$onderwerp. ':

'.$reactiemailhtml.'

Je kunt het bericht hier beantwoorden.

Als je een reactie in een onderwerp plaatst of een onderwerp opent, word je automatisch op dat onderwerp geabonneerd. Dit kun je voorkomen via de instelling voor automatische abonnementen in je profiel.

Als je alleen het abonnement op dit onderwerp wilt opzeggen, kan dat via de link Opzeggen in hetzelfde onderwerp.

Met vriendelijke groet,

Japanology '.$mailfooter.' '.PHP_EOL. PHP_EOL. $endmessage;

include 'mailadvanced_prive.php';

// Schrijver abonnee maken
if ($_SESSION[‘gebruikersid’]<>’’ && $_SESSION[‘gebruikersid’]<>3 && $autoabbo<>0) {
$result=mysql_query(“SELECT abonnees FROM lessen WHERE ID=’”.$id."’", $link);
if (!$result)
{
die(‘Cannot read from database: ‘.mysql_error());
}
$row=mysql_fetch_array($result);
$huidigeabonnees=$row[‘abonnees’];
if (strlen(strstr($huidigeabonnees, $emailadres))>0) {
echo ‘

Je bent al geabonneerd op dit onderwerp.

’;
}
else {
echo ‘

Je bent geabonneerd op dit onderwerp. Vanaf nu gaat er automatisch een e-mail naar het e-mailadres in je profiel zodra er iemand op dit onderwerp reageert.

’;
$nieuweabonnees=’’;
if ($huidigeabonnees<>’’) {
$nieuweabonnees=$huidigeabonnees.’, ‘;
}
$nieuweabonnees=$nieuweabonnees.$emailadres;
$result=mysql_query("UPDATE lessen SET abonnees=’$nieuweabonnees’ WHERE ID=’".$id."’",$link);
if (!$result)
{
die('Kan database niet bijwerken. Probeer het opnieuw: '.mysql_error());
}
}
}
else if ($autoabbo==0) {
echo ‘

Je bent niet automatisch geabonneerd op dit onderwerp.

’;
}
else if ($_SESSION[‘gebruikersid’]<>3) {
echo ‘

Om je op dit onderwerp te abonneren, moeten we weten wie je bent. Log daarom eerst in.

’;
}
}
}

else if (md5($captcha) <> $_SESSION[‘randomnr2’]) {
echo ‘

Verkeerde CAPTCHA-code. Reactie is niet toegevoegd!

’;
echo $waaromwerktditniet;
// Zet laatste reactie in database, want Chrome wist op nieuwe pagina’s alles wat van REQUEST-variabelen is afgeleid
$bewaarreactie=mysql_query(“UPDATE gebruikers SET laatstereactie=’”.$waaromwerktditniet."’ WHERE ID=’".$_SESSION[‘gebruikersid’]."’",$link);
if (!$bewaarreactie)
{
die('Kan database niet bijwerken. Probeer het opnieuw: '.mysql_error());
}
}
else {
echo ‘

Reactie of artikel-ID was leeg. Reactie is niet toegevoegd!

’;
}

echo ‘

’;

?>[/php]

Problem solved!

This was a tough one.

In the end it turned out to be a third-party plug-in that was called from another div on the same page.

I’ve killed said plug-in. Programming everything yourself seems to be the only reliable way to avoid these kinds of issues.

Thank you for the help nonetheless, and please, don’t laugh at my coding skills. I’m trying really hard.

Sponsor our Newsletter | Privacy Policy | Terms of Service