[PHP] Vreemde error

Pagina: 1
Acties:
  • 86 views sinds 30-01-2008

  • BabyCatjuh
  • Registratie: Februari 2004
  • Laatst online: 11-09-2023
Hoi. Ik ben momenteel bezig met een login voor mijn site, maar als ik het pw en login invul krijg ik telkens een error.
Deze error krijg ik:
Warning: Cannot modify header information - headers already sent by (output started at /home/jacksel/public_html/ooc/top.txt:3) in /home/jacksel/public_html/ooc/correct.php on line 15

Dit zijn de codes die ik gebruik:

correct.php:
code:
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
<? include('top.txt'); ?>
<div id="stuff" align="justify" style="filter: dropshadow(Color=white, OffX=1, OffY=1, Positive=1); width: 360 px">
<?php

// Simple Authentication I
// Declare Variables 
$user1 = "kingdom hearts manga";
$pass1 = "sora";
$user2 = "kingdom heart manga";
$pass2 = "sora";
$url = "correcta.php";

if (($user=="$user1" && $password=="$pass1") || ($user=="$user2" && $password=="$pass2"))
{
header('Location: '.$url);
}

else {
echo "Wrong. Please try again.";
}

?> 

</div>
<? include('bottom.txt'); ?>


Pagina met login box:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<? include('top.txt'); ?>
<div id="stuff" align="justify" style="filter: dropshadow(Color=white, OffX=1, OffY=1, Positive=1); width: 360 px">

<b>Character Guess</b><br>
How to: I'll put the picture of a character here, it can be of an Anime, manga or a game. <br>
If you think you know who it is, fill in the answer below the picture.<br>
Example: the picture is Cloud from FF7. Then you havo to fill this in : series: ffvii character: cloud.<br>
Everything has to have correct punctation, spaces and NO capitals.
<br>
Round 01<br>
[img]"round1.jpg">
<br>
<form[/img]
UserName : <input name="user" type="text" size=25><br>
PassWord : <input type="password" name="password" size=25><br>
<input type="submit" value="submit"></form>
<br><br> </div>

<? include('bottom.txt'); ?>


Top.txt
code:
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<HTML>
<HEAD>
<script>  
<!--  
if (window.Event)   
  document.captureEvents(Event.MOUSEUP);   
 function nocontextmenu()    
{  
 event.cancelBubble = true  
 event.returnValue = false;  
  return false;  
}  
 function norightclick(e)   
{  
 if (window.Event)   
 {  
  if (e.which == 2 || e.which == 3)  
   return false;  
 }  
 else  
  if (event.button == 2 || event.button == 3)  
  {  
   event.cancelBubble = true  
   event.returnValue = false;  
   return false;  
  }  
 }  
 document.oncontextmenu = nocontextmenu;   
document.onmousedown = norightclick;   
 function disableselect(e){
return false
}
function reEnable(){
return true
}
document.onselectstart=new Function ("return false")
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}

//-->   
</script>   

<script>  
<!--  
if (window.Event)   
  document.captureEvents(Event.MOUSEUP);   
 function nocontextmenu()    
{  
 event.cancelBubble = true  
 event.returnValue = false;  
  return false;  
}  
 function norightclick(e)   
{  
 if (window.Event)   
 {  
  if (e.which == 2 || e.which == 3)  
   return false;  
 }  
 else  
  if (event.button == 2 || event.button == 3)  
  {  
   event.cancelBubble = true  
   event.returnValue = false;  
   return false;  
  }  
 }  
 document.oncontextmenu = nocontextmenu;   
document.onmousedown = norightclick;   
//-->   
</script>   

<script type="text/javascript" src="http://www.haloscan.com/load.php?user=babycatjuh"> </script>

<link rel=stylesheet href="this.css" type="text/css"> 


<TITLE>Version #001[Star Ocean EX] TCG</TITLE>
<script>
           defaultStatus=" ";
</script>
</HEAD>
<BODY BGCOLOR=black LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<background image="images/bg.JPG">
<TABLE WIDTH=779 BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>
        <TD>
            [img]"images/illusions_01.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_02.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_03.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_04.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_05.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_06.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_07.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_08.jpg"[/img]</TD>
    </TR>
    <TR>
        <TD>
            [img]"images/illusions_09.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_10.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_11.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_12.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_13.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_14.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_15.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_16.jpg"[/img]</TD>
    </TR>
    <TR>
        <TD>
            [img]"images/illusions_17.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_18.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_19.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_20.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_21.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_22.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_23.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_24.jpg"[/img]</TD>
    </TR>
    <TR>
        <TD>
            [img]"images/illusions_25.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_26.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_27.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_28.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_29.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_30.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_31.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_32.jpg"[/img]</TD>
    </TR>
    <TR>
        <TD>
            [img]"images/illusions_33.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_34.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_35.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_36.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_37.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_38.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_39.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_40.jpg"[/img]</TD>
    </TR>
    <TR>
        <TD>
            [img]"images/illusions_41.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_42.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_43.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_44.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_45.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_46.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_47.jpg"[/img]</TD>
        <TD>
            [img]"images/illusions_48.jpg"[/img]</TD>
    </TR>
</TABLE>


Ik heb echt geen idee wat ik fout doe. Kan een van jullie me helpen?

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Je probeert de headers te veranderen terwijl het header-gedeelte al verzonden is. Waarschijnlijk omdat je met cookies werkt (je mag na bijv. HTML-output nooit cookies gaan setten enzo, omdat je dan al de body (de html-output) aan het versturen bent).

In dat eerste stuk laat je bijv. eerst wat HTML sturen (<div ...>) en vervolgens ga je nog met header() de header aanpassen, en dat mag nie :)

[ Voor 23% gewijzigd door JER00N op 29-05-2004 12:32 ]


  • mjax
  • Registratie: September 2000
  • Laatst online: 14-05 11:00
Je stuurt in regel 15 een header, terwijl er al andere informatie naar de browser is gestuurd.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:34

crisp

Devver

Pixelated

simpel: je kan geen headers meer sturen als je al HTML-output gegenereerd hebt.

edit: spuit-11 8)7

[ Voor 14% gewijzigd door crisp op 29-05-2004 12:32 ]

Intentionally left blank


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22-05 21:28

MBV

Ik heb dat probleem met redirect opgelost met een stukje javascript. Is niet netjes, maar het was in een grote site die ook niet al te netjes was gemaakt :(

Verwijderd

Enne...je login is niet echt veilig zo hè ;)
Als iemand die lokatie van correcta.php kent, kan je hier zonder in te loggen naar toe gaan...

(tip: kijk eens naar sessions)

  • BabyCatjuh
  • Registratie: Februari 2004
  • Laatst online: 11-09-2023
Ik zal even de <div> weghalen, kijken of er dan verschil is..

Edit: Nou is de boel nog steeds vreemd.. en de tekst staat onderaan de pagina.. :?

http://ooc.sanctus-gladius.net/charguess.php
Kijk zelf maar. Eerste vakje is kingdom hearts manga
2de is sora

Edit2: Ik ben nogal nieuw met PHP dus ik heb echt geen idee wat een session is, of hoe ik het nou kan fixen..

[ Voor 20% gewijzigd door BabyCatjuh op 29-05-2004 12:49 ]


Verwijderd

Nou...boven die <div> staat deze regel nog:
<? include('top.txt'); ?>

En ik vermoed dat je daar ook al tekst naar de browser stuurt :)

En sessions, kijk eens aan: http://www.php.net/session

  • BabyCatjuh
  • Registratie: Februari 2004
  • Laatst online: 11-09-2023
Verwijderd schreef op 29 mei 2004 @ 12:50:
Nou...boven die <div> staat deze regel nog:
<? include('top.txt'); ?>

En ik vermoed dat je daar ook al tekst naar de browser stuurt :)

En sessions, kijk eens aan: http://www.php.net/session
Ik heb die page even vluchtig voor gelezen en ik snap er niet echt wat van..

Ik heb de includes ook weggedaan en ik krijg nog steeds een error:

Warning: Cannot modify header information - headers already sent by (output started at /home/jacksel/public_html/ooc/correct.php:2) in /home/jacksel/public_html/ooc/correct.php on line 14

Kan niemand even in de php kijken en het editten wat er nou fout is aangezien ik het echt niet meer snap..

  • NetRipper
  • Registratie: Mei 2000
  • Laatst online: 09:49
Vrij simpel, als je het zo doet zou het wel moeten werken. Correct.php hieronder:
code:
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
<?php

// Simple Authentication I
// Declare Variables 
$user1 = "kingdom hearts manga";
$pass1 = "sora";
$user2 = "kingdom heart manga";
$pass2 = "sora";
$url = "correcta.php";

if (($user=="$user1" && $password=="$pass1") || ($user=="$user2" && $password=="$pass2"))
{
header('Location: '.$url);
}

else {
    $error = "Wrong. Please try again.";
}

?> 
<? include('top.txt'); ?>
<div id="stuff" align="justify" style="filter: dropshadow(Color=white, OffX=1, OffY=1, Positive=1); width: 360 px">
<?
    if ($error) echo $error;
?>
</div>
<? include('bottom.txt'); ?>


Zorg er voor dat er geen lege enters staan _voor_ de <?php helemaal bovenaan. Lege enters voor de <?php tag zorgen ook voor output. Wanneer PHP output stuurt, moeten eerst de headers gestuurd worden. Wanneer je daarna pas de headers aanpas, krijg je die melding.

Een andere oplossing is door helemaal bovenaan een regel toe te voegen:
<? ob_start(); ?>

Op deze manier gebruik je 'output buffering'. Dit zorgt ervoor dat PHP eerst het hele script parsed en alle output 'opspaart'. Pas wanneer het script helemaal klaar is (en er dus zeker van is dat er geen extra headers meer zijn, wordt de output naar de browser van de bezoeker gestuurd.

Github - Tikkie! - NED-Clan - Volvo EX30 SMSR Plus


  • BabyCatjuh
  • Registratie: Februari 2004
  • Laatst online: 11-09-2023
Het werkt :D Topic mag dicht nu.

Verwijderd

En om te zorgen dat het script verder niks uitvoert na het sturen van de Location header kan je het beste met de functie exit() zorgen dat het script stopt.

Dus:
PHP:
1
2
3
4
5
6
if (($user=="$user1" && $password=="$pass1") || ($user=="$user2" && $password=="$pass2")) {
    header('Location: '.$url);
    exit();
} else {
    $error = "Wrong. Please try again.";
}

[ Voor 18% gewijzigd door Verwijderd op 29-05-2004 13:17 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Basic

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.