Hoi,
Ik ben bezig een inlogsysteem te bouwen aan de hand van dit boek. Nu heb ik de code volgens mij goed gevolgd, maar ik krijg toch nog een warning, namelijk de volgende:
Ik heb de code goed doorgespit op fouten, maar ik kan er echt niet achter komen waarom hij die melding geeft. Naar mijn inzicht wordt de sessie pas gestart bij het gebruik van de desbetreffende functie. Mijn php code ziet er als volgt uit:
Ik heb nog geprobeerd het gedeelte van lijn 37 te verplaatsen binnen de if (isset) van lijn 2. Dit verhelpt in principe de fout, maar wanneer ik dan inlog krijg ik de volgende fout:
Kortom, er gaat ergens iets mis met de session_start(); van lijn 37, maar ik kom er nou niet achter wat het precies is.
Ik ben bezig een inlogsysteem te bouwen aan de hand van dit boek. Nu heb ik de code volgens mij goed gevolgd, maar ik krijg toch nog een warning, namelijk de volgende:
code:
1
| Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Users/carelcoenraad/Sites/Aegeev4/includes/php/header.php:4) in /Users/carelcoenraad/Sites/Aegeev4/includes/php/functions.php on line 71 |
Ik heb de code goed doorgespit op fouten, maar ik kan er echt niet achter komen waarom hij die melding geeft. Naar mijn inzicht wordt de sessie pas gestart bij het gebruik van de desbetreffende functie. Mijn php code ziet er als volgt uit:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
| function userIsLoggedIn() { if (isset($_POST['action']) and $_POST['action'] == 'login') { if (!isset($_POST['inloggenEmail']) or $_POST['inloggenEmail'] == '' or !isset($_POST['inloggenWachtwoord']) or $_POST['inloggenWachtwoord'] == '') { $GLOBALS['loginError'] = '<span style="color: #ff0000; font-weight: bold;">Vul beide velden in</span>'; return FALSE; } $password = md5($_POST['inloggenWachtwoord']); if (userExists($_POST['inloggenEmail'], $password)) { session_start(); $_SESSION['loggedIn'] = TRUE; $_SESSION['email'] = $_POST['inloggenEmail']; $_SESSION['password'] = $password; return TRUE; } else { session_start(); unset($_SESSION['loggedIn']); unset($_SESSION['email']); unset($_SESSION['password']); $GLOBALS['loginError'] = '<span style="color: #ff0000; font-weight: bold;">De inlog gegevens kloppen niet</span>'; return FALSE; } } if (isset($_POST['action']) and $_POST['action'] == 'logout') { session_start(); unset($_SESSION['loggedIn']); unset($_SESSION['email']); unset($_SESSION['password']); header('Location: index.php'); exit(); } session_start(); if (isset($_SESSION['loggedIn'])) { return userExists($_SESSION['email'], $_SESSION['password']); } } function userExists($email, $wachtwoord) { global $link; $email = mysqli_real_escape_string($link, $email); $password = mysqli_real_escape_string($link, $wachtwoord); $sql = "SELECT COUNT(*) FROM leden WHERE email = '$email' AND wachtwoord = '$wachtwoord'"; $result = mysqli_query($link, $sql); if (!$result) { $error = 'Error searching for user.'; include 'includes/error.html.php'; exit(); } $row = mysqli_fetch_array($result); if ($row[0] > 0) { return TRUE; } else { return FALSE; } } |
Ik heb nog geprobeerd het gedeelte van lijn 37 te verplaatsen binnen de if (isset) van lijn 2. Dit verhelpt in principe de fout, maar wanneer ik dan inlog krijg ik de volgende fout:
code:
1
| Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Users/carelcoenraad/Sites/Aegeev4/includes/php/header.php:4) in /Users/carelcoenraad/Sites/Aegeev4/includes/php/functions.php on line 53 |
Kortom, er gaat ergens iets mis met de session_start(); van lijn 37, maar ik kom er nou niet achter wat het precies is.
20" iMac; 2.4ghz Core 2 Duo; 3GB; Ati Radeon 2600HD Pro