Headers error
Voor de zweefclub waar ik vlieg heb ik een systeem ontworpen om de ledenadministratie, emails, startlijsten etc. in bij te houden. Nu stond dat eerst op mijn eigen server waar ik geen problemen had totdat....
In overleg met de club serverruimte te huren bij flexwebhosting, toen ik de code daar op de server zette kreeg ik ineens de volgende error:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/eaczc/domains/eaczc.nl/public_html/test/login.php:2) in /home/eaczc/domains/eaczc.nl/public_html/test/config.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/eaczc/domains/eaczc.nl/public_html/test/login.php:2) in /home/eaczc/domains/eaczc.nl/public_html/test/config.php on line 2
Erg raar dacht ik want bij mijn eigen server werkte het wel, allebei nieuwste php op de server.... Ik weet wel dat het enige verschil is dat het hier in een submap staat (intranet) omdat in de hoofdmap de algemene platte website staat met info voor belangstellenden terwijl hij op me eigen server wel in de hoofdmap zat.
Hopelijk kan iemand me helpen! Ik heb al geprobeerd het session_start(); helemaal bovenin de config.php te zetten zonder whitespace tussen de
Code (php)
1
2
3
4
5
2
3
4
5
<? en session_start(); ook heb ik het includen van het config.php bestand helemaal bovenaan in het login.php script gezet zonder whitespace zoals hierboven beschreven. Ik kom er op het moment echt niet uit en wat hulp zou erg fijn zijn!
Groetjes,
Bram Couteaux
Groetjes,
Bram Couteaux
Op regel 2 in login.php vindt er al output naar de browser plaats. Dat is niet toegestaan als je daarna nog functies als session_start() wilt gebruiken...
Quote:
Nou, dat is een understatement! Ik schat dat het de meest voorkomende fout is.niet de eerste topic zijn met een degelijke vraag
Vóór het begin van jouw sessie, begint al output. Dat kan een spatie zijn, maar ook ook andere output. Er mag niks, maar dan ook niks, worden aangemaakt voordat je de sessie aanmaakt.
Voer het volgende bestandje eens uit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
echo 'boe';
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
echo 'boe';
?>
Dit doet eigenlijk niks, behalve een sessie aanmaken en 'boe' op het scherm zetten. Gaat dit goed? Dan heb je hier in elk geval geen rommer voor staan.
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/eaczc/domains/eaczc.nl/public_html/test/login.php:2) in /home/eaczc/domains/eaczc.nl/public_html/test/config.php on line 2
Alvast bedankt! En graag hulp over hoe ik nu verder moet.
Groetjes,
Bram
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/eaczc/domains/eaczc.nl/public_html/test/login.php:2) in /home/eaczc/domains/eaczc.nl/public_html/test/config.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at /home/eaczc/domains/eaczc.nl/public_html/test/login.php:2) in /home/eaczc/domains/eaczc.nl/public_html/test/login.php on line 92
De bovenste is hetzelfde als voor het inloggen maar de tweede niet. Op lijn 92 staat:
header ("location: index2.php");
Ik snap er nog steeds niets van.. Want waarom werkt het hier niet en op me eigen server wel, andere configuratie van php misschien?
Groetjes,
Bram
Op de één of andere manier wordt er op de ene server al output verstuurt, ook al wil je dat niet.
login.php
<!--even de titel invoegen-->
<!--het css bestand laden-->
<style type="text/css" media="all">
@import "style.css";
</style>
</head>
<!--hier begint het body met daarin de top en footer geinclude en de daadwerkelijke pagina in de content div-->
<body>
<div id="content">
<div id="lefty">
<ul>
<li></li>
</ul>
</div>
<div id="righty">
<h2 align="left">Inloggen</h2>
<!--Hier begingt het php gedeelte dat in de content table staat-->
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?
include("config.php");
if($_GET['p'] == "uitloggen")
{
$_SESSION = array();
header("Location: ".$_SERVER['PHP_SELF']."");
}
elseif($_GET['p'] == "wijzig_pass")
{
if($_POST['wijzig_pass'])
{
if($_POST['password'] == $_POST['password2'])
{
$sql = "UPDATE `inlogsysteem` SET `password` = '".md5($_POST['password'])."' WHERE `id` = '".$_SESSION['id']."'";
mysql_query($sql)
or die('Kon query niet naar database verzenden');
header("Location: ".$_SERVER['PHP_SELF']."");
}
else
{
echo "<b><i>De wachtwoorden zijn niet gelijk</i></b><br><br>";
echo "Klik <a href=\"javascript:history.back(-1)\">hier</a> om terug te gaan";
}
}
else
{
echo "<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\">";
echo "<form action=\"\" method=\"post\">";
echo "<span style=\"font-size:8pt;\">* Niet op 'Enter' drukken maar<br> met de muis klikken op 'Wijzig'</span>";
echo "
<tr>
<td>Nieuwe wachtwoord</td>
<td><input type=\"password\" name=\"password\"></td>
</tr>
<tr>
<td>Herhaal wachtwoord</td>
<td><input type=\"password\" name=\"password2\"></td>
<tr>
<td> </td>
<td align=\"right\"><input type=\"submit\" name=\"wijzig_pass\" value=\"Wijzig\"></td>
</tr>
";
echo "</form>";
echo "</table>";
echo "<a href=\"".$_SERVER['PHP_SELF']."\">Terug</a><br><br>";
}
}
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "a")
{
echo "Welkom ".ucfirst($_SESSION['naam'])." !<br><br>";
echo "[Admin]<br><br>";
echo "<a href=\"admin.php\" target=\"_blank\">Admin Locatie</a><br><br>";
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=wijzig_pass\">Wijzig wachtwoord</a><br><br>";
echo "<a href=\"leden.php\"><b>Ledenlijst</b><br><br>";
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=uitloggen\">Uitloggen</a>";
}
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "m")
header ("location: index2.php");
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "z")
header ("location: index4.php");
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "n")
header ("location: index3.php");
else
{
if($_POST['login'])
{
$email = addslashes($_POST['email']);
$md5_ww = md5($_POST['password']);
$sql = "SELECT * FROM `inlogsysteem` WHERE `email` = '".$email."' AND `password` = '".$md5_ww."'";
$query = mysql_query($sql);
if(mysql_num_rows($query) == 1)
{
$email = addslashes($_POST['email']);
$md5_ww = md5($_POST['password']);
$statussql = "SELECT * FROM `inlogsysteem` WHERE `email` = '".$email."' AND `password` = '".$md5_ww."'";
$statusquery = mysql_query($statussql);
$status = mysql_fetch_assoc($statusquery);
if($status['status'] == "n")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "n";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "m")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "m";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "z")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "z";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "a")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "a";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
header("Location: ".$_SERVER['PHP_SELF']."");
}
else
{
echo "Emailadres en/of wachtwoord verkeerd<br><br>";
}
}
echo "
<table border=\"0\">
<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<tr>
<td>Emailadres</td>
<td><input type=\"text\" name=\"email\" size=\"15\"></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td><input type=\"password\" name=\"password\" size=\"15\"></td>
</tr>
<tr>
<td></td><td align=\"right\"><input type=\"submit\" name=\"login\" value=\"Login\"></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><a href=\"new_pass.php\">Nieuw wachtwoord?</a></td>
</tr>
</form>
</table>
";
}
ob_end_flush();
?>
include("config.php");
if($_GET['p'] == "uitloggen")
{
$_SESSION = array();
header("Location: ".$_SERVER['PHP_SELF']."");
}
elseif($_GET['p'] == "wijzig_pass")
{
if($_POST['wijzig_pass'])
{
if($_POST['password'] == $_POST['password2'])
{
$sql = "UPDATE `inlogsysteem` SET `password` = '".md5($_POST['password'])."' WHERE `id` = '".$_SESSION['id']."'";
mysql_query($sql)
or die('Kon query niet naar database verzenden');
header("Location: ".$_SERVER['PHP_SELF']."");
}
else
{
echo "<b><i>De wachtwoorden zijn niet gelijk</i></b><br><br>";
echo "Klik <a href=\"javascript:history.back(-1)\">hier</a> om terug te gaan";
}
}
else
{
echo "<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\">";
echo "<form action=\"\" method=\"post\">";
echo "<span style=\"font-size:8pt;\">* Niet op 'Enter' drukken maar<br> met de muis klikken op 'Wijzig'</span>";
echo "
<tr>
<td>Nieuwe wachtwoord</td>
<td><input type=\"password\" name=\"password\"></td>
</tr>
<tr>
<td>Herhaal wachtwoord</td>
<td><input type=\"password\" name=\"password2\"></td>
<tr>
<td> </td>
<td align=\"right\"><input type=\"submit\" name=\"wijzig_pass\" value=\"Wijzig\"></td>
</tr>
";
echo "</form>";
echo "</table>";
echo "<a href=\"".$_SERVER['PHP_SELF']."\">Terug</a><br><br>";
}
}
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "a")
{
echo "Welkom ".ucfirst($_SESSION['naam'])." !<br><br>";
echo "[Admin]<br><br>";
echo "<a href=\"admin.php\" target=\"_blank\">Admin Locatie</a><br><br>";
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=wijzig_pass\">Wijzig wachtwoord</a><br><br>";
echo "<a href=\"leden.php\"><b>Ledenlijst</b><br><br>";
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=uitloggen\">Uitloggen</a>";
}
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "m")
header ("location: index2.php");
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "z")
header ("location: index4.php");
elseif($_SESSION['login'] == "1" && $_SESSION['status'] == "n")
header ("location: index3.php");
else
{
if($_POST['login'])
{
$email = addslashes($_POST['email']);
$md5_ww = md5($_POST['password']);
$sql = "SELECT * FROM `inlogsysteem` WHERE `email` = '".$email."' AND `password` = '".$md5_ww."'";
$query = mysql_query($sql);
if(mysql_num_rows($query) == 1)
{
$email = addslashes($_POST['email']);
$md5_ww = md5($_POST['password']);
$statussql = "SELECT * FROM `inlogsysteem` WHERE `email` = '".$email."' AND `password` = '".$md5_ww."'";
$statusquery = mysql_query($statussql);
$status = mysql_fetch_assoc($statusquery);
if($status['status'] == "n")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "n";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "m")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "m";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "z")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "z";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
elseif($status['status'] == "a")
{
$_SESSION['login'] = "1";
$_SESSION['status'] = "a";
$_SESSION['naam'] = $email;
$_SESSION['id'] = $status['id'];
}
header("Location: ".$_SERVER['PHP_SELF']."");
}
else
{
echo "Emailadres en/of wachtwoord verkeerd<br><br>";
}
}
echo "
<table border=\"0\">
<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<tr>
<td>Emailadres</td>
<td><input type=\"text\" name=\"email\" size=\"15\"></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td><input type=\"password\" name=\"password\" size=\"15\"></td>
</tr>
<tr>
<td></td><td align=\"right\"><input type=\"submit\" name=\"login\" value=\"Login\"></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><a href=\"new_pass.php\">Nieuw wachtwoord?</a></td>
</tr>
</form>
</table>
";
}
ob_end_flush();
?>
<!-- en het php gedeelte van de content eindigt hier.-->
</h2>
</div>
</div>
<!--nog even de footer includen-->
config.php
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
session_start();
ob_start();
mysql_connect("xxxx","xxxx","xxxx")
or die("Kan geen contact maken met de mysql database");
mysql_select_db("xxxx")
or die("Kan de database niet selecteren");
?>
session_start();
ob_start();
mysql_connect("xxxx","xxxx","xxxx")
or die("Kan geen contact maken met de mysql database");
mysql_select_db("xxxx")
or die("Kan de database niet selecteren");
?>
title.php
<html>
<head>
<title>EACzc Intranet</title>
<link rel="stylesheet" type="text/css" href="style.css">
Hopelijk kunnen jullie hier wat mee. En zou iemand misschien kunnen verklaren dat dit systeem vlekkeloos werkte op mijn eigen server en hier in de nieuwe server deze errors ineens geeft.
Groetjes,
Bram
Output doe je als aller, aller laatste en begint dus nooit op regel 1.