header already sent
Warning: Cannot modify header information - headers already sent by (output started at http://*****/test/style.css:1) in /var/www/***/test/login.php on line 105
Ben nou al 3 uur bezig en krijg het niet voor elkaar, heb het script exact overgenomen en heb inmiddels al diverse topics gelezen over dit probleem
Dit zijn de bestanden:
style.css
<style type=text/css>
body, table
{
font-family: MS Sans Serif;
font-size: 10pt;
background: #EEEFEE;
color: #000000;
}
hr {
color: black;
height: 1;
}
a {
color: #000000;
text-decoration: none;
}
a:hover
{
text-decoration: underline;
}
input, textarea, select
{
font-family: MS Sans Serif;
font-size: 10pt;
background: #FFFFFF;
border: 1px solid #C0C0C0;
}
--!>
</style>
login.php
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
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
<?
session_start();
include("config.inc.php");
if(IsSet($stijl))
{
include($stijl);
}
$grens = date("YmdHi", mktime(date("H") - $tijd_blokkeren,date("i"), 0, date("m"),
date("d"), date("Y")));
$user_ip=$_SERVER['REMOTE_ADDR'];
$query = mysql_query("
SELECT id
FROM foute_aanmelding
WHERE ip='$user_ip' AND
tijd>$grens
")
or die(mysql_error());
$result = mysql_num_rows($query);
if(!$result)
{
if(IsSet($_POST['submit']))
{
// maak "gevaarlijke" tekens van invoer onschakelijk door een "\" toe te voegen
$gebruikersnaam = addslashes($_POST['gebruikersnaam']);
$wachtwoord = md5(addslashes($_POST['wachtwoord']));
// controleer gebruikersnaam en wachtwoord met gegevens uit de database
$query = mysql_query("
SELECT *
FROM members
WHERE gebruikersnaam='$gebruikersnaam' AND
wachtwoord='$wachtwoord' AND
geactiveerd='1'
")
or die(mysql_error());
$result = mysql_num_rows($query);
if(!$result)
{
// wachten met output om "brute force" tegen te gaan
sleep(2);
if (IsSet($_SESSION['foute_aanmelding']))
{
$_SESSION['foute_aanmelding']++;
if($_SESSION['foute_aanmelding']>=$max_foute_aanmelding)
{
$tijd=date("YmdHi");
// blokkeren van het ip adres
mysql_query ("
INSERT INTO foute_aanmelding
(
ip,
tijd
)
VALUES
(
'$user_ip',
'$tijd'
)
")
or die(mysql_error());
echo $blok_melding;
session_destroy();
}
}
else
{
$_SESSION['foute_aanmelding']=1;
}
// gebruikersnaam of wachtwoord is onjuist, terug naar inlogformulier
$a = "Gebruikersnaam en/of Wachtwoord is/zijn incorrect.
Of je bent vergeten om je account te activeren...<br>
<br><a href=\"?gebruikersnaam=$gebruikersnaam\">Ga terug</a>";
echo $a;
}
else
{
while($object = mysql_fetch_object($query))
{
$memberid = $object->memberid;
}
// inloggen: registreren gegevens in sessie en openen beveiligde pagina
$login = 1;
// aanmaken object "$reg_sessie" zodat gegevens onzichtbaar voor webbrowsers worden
$reg_sessie->login=$login;
$reg_sessie->memberid=$memberid;
$reg_sessie->ipadres=$user_ip;
$_SESSION['reg_sessie']=$reg_sessie;
// openen van de beveiligde pagina
header("Location: fotos.php"); //--- dit is de regel van de foutmelding
}
}
else
{
if(!IsSet($_SESSION['reg_sessie']->login))
{
// Het inlogformulier
$formulier = "<form method=\"POST\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"submit\" value=\"1\">
Naam:<br>
<input type=\"text\" name=\"gebruikersnaam\" size=\"20\"><br>
Wachtwoord:<br>
<input type=\"password\" name=\"wachtwoord\" size=\"20\"><br>
<input class=\"button\" type=\"submit\" value=\"Login\">
<input class=\"button\" type=\"reset\" value=\"Aanmelden\"
onclick=\"document.location.href=('aanmelden.php')\">
</form>";
}
else
{
// openen van de beveiligde pagina
header("Location: fotos.php");
}
if(!IsSet($_SESSION['reg_sessie']))
{
echo $formulier;
}
}
}
else
{
echo $blok_melding;
}
?>
session_start();
include("config.inc.php");
if(IsSet($stijl))
{
include($stijl);
}
$grens = date("YmdHi", mktime(date("H") - $tijd_blokkeren,date("i"), 0, date("m"),
date("d"), date("Y")));
$user_ip=$_SERVER['REMOTE_ADDR'];
$query = mysql_query("
SELECT id
FROM foute_aanmelding
WHERE ip='$user_ip' AND
tijd>$grens
")
or die(mysql_error());
$result = mysql_num_rows($query);
if(!$result)
{
if(IsSet($_POST['submit']))
{
// maak "gevaarlijke" tekens van invoer onschakelijk door een "\" toe te voegen
$gebruikersnaam = addslashes($_POST['gebruikersnaam']);
$wachtwoord = md5(addslashes($_POST['wachtwoord']));
// controleer gebruikersnaam en wachtwoord met gegevens uit de database
$query = mysql_query("
SELECT *
FROM members
WHERE gebruikersnaam='$gebruikersnaam' AND
wachtwoord='$wachtwoord' AND
geactiveerd='1'
")
or die(mysql_error());
$result = mysql_num_rows($query);
if(!$result)
{
// wachten met output om "brute force" tegen te gaan
sleep(2);
if (IsSet($_SESSION['foute_aanmelding']))
{
$_SESSION['foute_aanmelding']++;
if($_SESSION['foute_aanmelding']>=$max_foute_aanmelding)
{
$tijd=date("YmdHi");
// blokkeren van het ip adres
mysql_query ("
INSERT INTO foute_aanmelding
(
ip,
tijd
)
VALUES
(
'$user_ip',
'$tijd'
)
")
or die(mysql_error());
echo $blok_melding;
session_destroy();
}
}
else
{
$_SESSION['foute_aanmelding']=1;
}
// gebruikersnaam of wachtwoord is onjuist, terug naar inlogformulier
$a = "Gebruikersnaam en/of Wachtwoord is/zijn incorrect.
Of je bent vergeten om je account te activeren...<br>
<br><a href=\"?gebruikersnaam=$gebruikersnaam\">Ga terug</a>";
echo $a;
}
else
{
while($object = mysql_fetch_object($query))
{
$memberid = $object->memberid;
}
// inloggen: registreren gegevens in sessie en openen beveiligde pagina
$login = 1;
// aanmaken object "$reg_sessie" zodat gegevens onzichtbaar voor webbrowsers worden
$reg_sessie->login=$login;
$reg_sessie->memberid=$memberid;
$reg_sessie->ipadres=$user_ip;
$_SESSION['reg_sessie']=$reg_sessie;
// openen van de beveiligde pagina
header("Location: fotos.php"); //--- dit is de regel van de foutmelding
}
}
else
{
if(!IsSet($_SESSION['reg_sessie']->login))
{
// Het inlogformulier
$formulier = "<form method=\"POST\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"submit\" value=\"1\">
Naam:<br>
<input type=\"text\" name=\"gebruikersnaam\" size=\"20\"><br>
Wachtwoord:<br>
<input type=\"password\" name=\"wachtwoord\" size=\"20\"><br>
<input class=\"button\" type=\"submit\" value=\"Login\">
<input class=\"button\" type=\"reset\" value=\"Aanmelden\"
onclick=\"document.location.href=('aanmelden.php')\">
</form>";
}
else
{
// openen van de beveiligde pagina
header("Location: fotos.php");
}
if(!IsSet($_SESSION['reg_sessie']))
{
echo $formulier;
}
}
}
else
{
echo $blok_melding;
}
?>
Ik kan geen harde returns vinden en ook geen spaties aan het einde van de bestanden.
Wie zal mij willen helpen dit (veel voorkomende) probleem te verhelpen.
Alvast bedankt,
Arnold
te gebruiken in style.css
Blijkbaar voeg je die in volgens de foutmelding (in config.inc.php?)
Kan me vergissen maar dien je niet Blijkbaar voeg je die in volgens de foutmelding (in config.inc.php?)
In ieder geval alvast bedankt voor je hulp
De invoeging vindt plaats met include($style)
Maar uitvoer begint daarmee ook. Uit de PHP Help bij include
When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags.
Dus: Je zult de style op andere plekken moeten invoegen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
require("config.inc.php");
if(IsSet($stijl))
{
require($stijl);
}
wijzig.php werkt gewoon goed, nou begrijp ik niet waarom login.php niet werkt. Als ik require($stijl) weghaal bij inlog.php werkt die wel gewoon. Maar dan heeft die pagina niet meer dezelfde opmaak.
En bij het inloggen heeft de pagina halverwege nogmaals een header nl,
// openen van de beveiligde pagina
header("Location: fotos.php");
en hier geeft die dan de foutmelding
session_start();
require("config.inc.php");
if(IsSet($stijl))
{
require($stijl);
}
wijzig.php werkt gewoon goed, nou begrijp ik niet waarom login.php niet werkt. Als ik require($stijl) weghaal bij inlog.php werkt die wel gewoon. Maar dan heeft die pagina niet meer dezelfde opmaak.
En bij het inloggen heeft de pagina halverwege nogmaals een header nl,
// openen van de beveiligde pagina
header("Location: fotos.php");
en hier geeft die dan de foutmelding
Wat ook werkt:
ob_start();
session_start();
dan bij fouten
ob_end_clean();
header(....);
op het einde:
ob_end_flush();
Werkt altijd.
Moet dus beginnen met
ob_start();
session_start();
maar waar zet ik die andere 2 dan?
Ben nog niet zo gevorderd hiermee. Ben wel aan het leren
Heeft dat verder geen gevolgen dan?