error cannot modify header information
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
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
<?php
function test1()
{
$waarde = file_get_contents("http://net-force.nl/challenge/level602/prog2.php");
preg_match("@'(.+)'@", $waarde, $aMatches);
$antwoord = ($aMatches[1] * 3 +2) - 250;
if ($antwoord=="1") {
header("Location: http://net-force.nl/challenge/level602/prog2.php?solution=" .$antwoord);
}
Else {
header("Location: http://net-force.nl/challenge/level602/prog2.php?solution=" .$antwoord);
}
}
session_start();
$sessPath = ini_get('session.save_path');
$sessCookie = ini_get('session.cookie_path');
$sessName = ini_get('session.name');
$sessVar = 'foo';
echo '<br>sessPath: ' . $sessPath;
echo '<br>sessCookie: ' . $sessCookie;
echo '<hr>';
if( !isset( $_GET['p'] ) ){
// instantiate new session var
$_SESSION[$sessVar] = test1();
}else{
if( $_GET['p'] == 1 ){
// printing session value and global cookie PHPSESSID
echo $sessVar . ': ';
if( isset( $_SESSION[$sessVar] ) ){
echo $_SESSION[$sessVar];
}else{
echo '[not exists]';
}
echo '<br>' . $sessName . ': ';
if( isset( $_COOKIE[$sessName] ) ){
echo $_COOKIE[$sessName];
}else{
if( isset( $_REQUEST[$sessName] ) ){
echo $_REQUEST[$sessName];
}else{
if( isset( $_SERVER['HTTP_COOKIE'] ) ){
echo $_SERVER['HTTP_COOKIE'];
}else{
echo 'problem, check your PHP settings';
}
}
}
}else{
// destroy session by unset() function
unset( $_SESSION[$sessVar] );
// check if was destroyed
if( !isset( $_SESSION[$sessVar] ) ){
echo '<br>';
echo $sessName . ' was "unseted"';
}else{
echo '<br>';
echo $sessName . ' was not "unseted"';
}
}
}
?>
<hr>
<a href=test1.php?p=1>test 1 (printing session value)</a>
<br>
<a href=test1.php?p=2>test 2 (kill session)</a>
function test1()
{
$waarde = file_get_contents("http://net-force.nl/challenge/level602/prog2.php");
preg_match("@'(.+)'@", $waarde, $aMatches);
$antwoord = ($aMatches[1] * 3 +2) - 250;
if ($antwoord=="1") {
header("Location: http://net-force.nl/challenge/level602/prog2.php?solution=" .$antwoord);
}
Else {
header("Location: http://net-force.nl/challenge/level602/prog2.php?solution=" .$antwoord);
}
}
session_start();
$sessPath = ini_get('session.save_path');
$sessCookie = ini_get('session.cookie_path');
$sessName = ini_get('session.name');
$sessVar = 'foo';
echo '<br>sessPath: ' . $sessPath;
echo '<br>sessCookie: ' . $sessCookie;
echo '<hr>';
if( !isset( $_GET['p'] ) ){
// instantiate new session var
$_SESSION[$sessVar] = test1();
}else{
if( $_GET['p'] == 1 ){
// printing session value and global cookie PHPSESSID
echo $sessVar . ': ';
if( isset( $_SESSION[$sessVar] ) ){
echo $_SESSION[$sessVar];
}else{
echo '[not exists]';
}
echo '<br>' . $sessName . ': ';
if( isset( $_COOKIE[$sessName] ) ){
echo $_COOKIE[$sessName];
}else{
if( isset( $_REQUEST[$sessName] ) ){
echo $_REQUEST[$sessName];
}else{
if( isset( $_SERVER['HTTP_COOKIE'] ) ){
echo $_SERVER['HTTP_COOKIE'];
}else{
echo 'problem, check your PHP settings';
}
}
}
}else{
// destroy session by unset() function
unset( $_SESSION[$sessVar] );
// check if was destroyed
if( !isset( $_SESSION[$sessVar] ) ){
echo '<br>';
echo $sessName . ' was "unseted"';
}else{
echo '<br>';
echo $sessName . ' was not "unseted"';
}
}
}
?>
<hr>
<a href=test1.php?p=1>test 1 (printing session value)</a>
<br>
<a href=test1.php?p=2>test 2 (kill session)</a>
ik krijg:
sessPath: /var/lib/php5
sessCookie: /
Warning: Cannot modify header information - headers already sent by (output started at /home/legerarmy.nl/www/test_berry/test1.php:33) in /home/legerarmy.nl/www/test_berry/test1.php on line 17
test 1 (printing session value)
test 2 (kill session)
iemand enig idee?
Leesvoer
Een klassieker...
Er mag geen enkele vorm van output naar de browser worden geschreven voor session_start() wordt aangeroepen.
Er mag geen enkele vorm van output naar de browser worden geschreven voor session_start() wordt aangeroepen.
enigzins een idee hoe ik deze anders kan laten lopen dan?
sessions is nieuw voor mij.
sessions is nieuw voor mij.
Zoals de foutmelding al stelt, wordt er data naar het scherm geoutput (data staat buiten de , of je maakt gebruik van functies als echo of print):
file: /home/legerarmy.nl/www/test_berry/test1.php
line: 33
file: /home/legerarmy.nl/www/test_berry/test1.php
line: 33
Kijk, simpel gezegd, ofwel behandel je de post ofwel stuur je het formulier naar de gebruiker, niet de twee samen.
Simpele methode: zet een grote accolade rond je hele pagina
Simpele methode: zet een grote accolade rond je hele pagina
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
session_start();
if ($_POST)
{
// hier alles doen om de post in de db te steken
header('location ...');
}
else
{
echo '<html>
<body>
...
<form action=....
...
</html>
';
}
?>
session_start();
if ($_POST)
{
// hier alles doen om de post in de db te steken
header('location ...');
}
else
{
echo '<html>
<body>
...
<form action=....
...
</html>
';
}
?>




