session_start() en Google Chrome werkt niet
Ik heb een login script met wat waarden die uit SQL worden gehaald. Die waarden worden in een $SESSION doorgegeven naar een volgende pagina. Heel simpel. Dit gaat ook goed. Alleen merk ik dat dit wel goed gaat in IE maar niet in Google Chrome. Ik krijg dan de melding "Notice: Undefined index:" van alle variabelen. Dit heb ik dus niet in IE. Daar gaat het perfect. Wat is er anders aan Google Chrome? Wie heeft er ervaring mee?
Je bent in Google Chrome nog niet ingelogd en dus bestaan je session variabelen nog niet.
Het lijkt mij sterk dat je bepaalde foutmeldingen in IE niet ziet, en in Chrome wel.
Heb je session_start(); helemaal bovenaan in je PHP-code staan, zonder enige zichtbare witruimte of HTML erboven?
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();
// define variables and set to empty values
$genderErr = "";
$gender = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["gender"])) {
$genderErr = "U heeft geen keuze gemaakt!";
} else {
$gender = ($_POST["gender"]);
header('Location: http://website.nl/script.php');
exit;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="all" href="css/style.css" />
</style>
</head>
<?php
// ob_start(); // Added to avoid a common error of 'header already sent'
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$deelnemer = $_SESSION['deelnemer'];
$id = $_SESSION['id'];
$naam= $_SESSION['naam'];
?>
echo $deelnemer;
echo $id;
echo $naam;
session_start();
// define variables and set to empty values
$genderErr = "";
$gender = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["gender"])) {
$genderErr = "U heeft geen keuze gemaakt!";
} else {
$gender = ($_POST["gender"]);
header('Location: http://website.nl/script.php');
exit;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="all" href="css/style.css" />
</style>
</head>
<?php
// ob_start(); // Added to avoid a common error of 'header already sent'
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$deelnemer = $_SESSION['deelnemer'];
$id = $_SESSION['id'];
$naam= $_SESSION['naam'];
?>
echo $deelnemer;
echo $id;
echo $naam;
Gewijzigd op 25/11/2014 00:16:48 door Jac E
En waarom plaats je de ini_set en error_reporting niet helemaal bovenaan?
Frank, bedoel je inloggen in Google Chrome zelf?
Ik denk dat hij doelt op inloggen via een op sessies gebaseerd inlogscript op je site.
Hier het begin stukje.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
session_start();
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$errors = array();
// maak de database connectie
if (!@mysql_select_db("…")))
{
echo "Er kon geen connectie worden gemaakt met de database.";
exit();
}
if(!isset($_GET['email']) || !isset($_GET['email_code'])){
echo "*** Klopt iets niet ***";exit;
} else {
echo "*** Klopt wel ***";echo "<br>";
}
$con=mysqli_connect("…");
{
$email_ok = mysql_real_escape_string($_GET['email']);
$email_code_ok = mysql_real_escape_string($_GET['email_code']);
$c=mysqli_query($con, "SELECT `email_contactpersoon`,`random_link` FROM $table_sql WHERE `email_contactpersoon`='$email_ok' and `random_link`='$email_code_ok'");
if(mysqli_num_rows($c) > 0)
{
$count=mysqli_query($con, "SELECT `random_link`,`bevestigd` FROM $table_sql WHERE `bevestigd`='0' and `random_link`='$email_code_ok'");
if(mysqli_num_rows($count) == 1)
{
mysqli_query($con, "UPDATE $table_sql SET `bevestigd`='1' WHERE `random_link`='$email_code_ok'");
mysqli_query($con, "SET NAMES 'utf8'");
$result = mysqli_query($con, "SELECT * FROM $table_sql WHERE `random_link`='$email_code_ok'");
$row = mysqli_fetch_array($result);
$deelnemer = "$row[deelnemer]";
$id = "$row[id]";
$naam = "$row[naam]";
$_SESSION['deelnemer'] = $deelnemer;
$_SESSION['id] = $id;
$_SESSION['naam] = $naam;
}
else
{
$opmerking = "<h1>U bent reeds geactiveerd!</h1>";
}
}
else
{
$opmerking = "<h1>Uw speciale code in de link is niet correct</h1>";
}
}
?>
<?php echo $opmerking; ?>
session_start();
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$errors = array();
// maak de database connectie
if (!@mysql_select_db("…")))
{
echo "Er kon geen connectie worden gemaakt met de database.";
exit();
}
if(!isset($_GET['email']) || !isset($_GET['email_code'])){
echo "*** Klopt iets niet ***";exit;
} else {
echo "*** Klopt wel ***";echo "<br>";
}
$con=mysqli_connect("…");
{
$email_ok = mysql_real_escape_string($_GET['email']);
$email_code_ok = mysql_real_escape_string($_GET['email_code']);
$c=mysqli_query($con, "SELECT `email_contactpersoon`,`random_link` FROM $table_sql WHERE `email_contactpersoon`='$email_ok' and `random_link`='$email_code_ok'");
if(mysqli_num_rows($c) > 0)
{
$count=mysqli_query($con, "SELECT `random_link`,`bevestigd` FROM $table_sql WHERE `bevestigd`='0' and `random_link`='$email_code_ok'");
if(mysqli_num_rows($count) == 1)
{
mysqli_query($con, "UPDATE $table_sql SET `bevestigd`='1' WHERE `random_link`='$email_code_ok'");
mysqli_query($con, "SET NAMES 'utf8'");
$result = mysqli_query($con, "SELECT * FROM $table_sql WHERE `random_link`='$email_code_ok'");
$row = mysqli_fetch_array($result);
$deelnemer = "$row[deelnemer]";
$id = "$row[id]";
$naam = "$row[naam]";
$_SESSION['deelnemer'] = $deelnemer;
$_SESSION['id] = $id;
$_SESSION['naam] = $naam;
}
else
{
$opmerking = "<h1>U bent reeds geactiveerd!</h1>";
}
}
else
{
$opmerking = "<h1>Uw speciale code in de link is niet correct</h1>";
}
}
?>
<?php echo $opmerking; ?>
Gewijzigd op 25/11/2014 00:44:17 door Jac E
mysql_real_escape_string moet je ook nog even aanpassen. Vergeet niet de $con parameter mee te geven.
Je neemt maatregelen als $_GET['email'] niet bestaat.
En dat is nu precies wat je ook met $_SESSION variabelen moet doen: controleren of ze wel bestaan. En dat doe je niet, daarom krijg je die foutmeldingen.