problemer ang header location

Tags:    php

jeg får dette output når jeg trykker submit på min comment

<?php include 'config.php'
?>
<?
ob_start();

$inf = "SELECT * FROM `comments` WHERE page = '".stripslashes($_SERVER['REQUEST_URI'])."' ORDER BY time ASC";
$info = mysql_query($inf);
if(!$info) die(mysql_error());

$info_rows = mysql_num_rows($info);
if($info_rows > 0) {
echo '<h5>Comments:</h5>';
echo '<table width="95%">';

while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td>"'.stripslashes($info2->subject).'" by: <a href="'.$info2->contact.'">'.stripslashes($info2->username).'</a></td> <td><div align="right"> @ '.date('h:i:s a', $info2->time).' on '.$info2->date.'</div></td>';
echo '</tr><tr>';
echo '<td colspan="2"> '.stripslashes($info2->comment).' </td>';
echo '</tr>';
}
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'No comments for this post. Feel free to be the first <br>';

if(isset($_POST['submit'])) {
if(!addslashes($_POST['username'])) die('<u>ERROR:</u> you must enter a username to add a comment.');
if(!addslashes($_POST['contact'])) die('<u>ERROR:</u> enter contact method in contact field.');
if(!addslashes($_POST['subject'])) die('<u>ERROR:</u> enter a subject to your comment.');
if(!addslashes($_POST['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');

if(substr($_POST['contact'],0,7) != 'mailto:' && !strstr($_POST['contact'],'//')) {
if(strstr($_POST['contact'],'@'))
$_POST['contact'] = "mailto:".$_POST['contact']."";
else
$_POST['contact'] = "http://".$_POST['contact']."";
}

$c = "SELECT * from `comments` WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";
$c2 = mysql_query($c);
while($c3 = mysql_fetch_object($c2)) {
$difference = time() - $c3->time;
if($difference < 300) die('<u>NOTICE:</u> '.$c3->username.', You can only post one comment each 5 minute (This is to prevent spam)<BR>');
}

$q ="INSERT INTO `comments` (article_id, page, date, time, username, ip, contact, subject, comment) VALUES ('".$_GET['id']."', '".$_POST['page']."', '".$_POST['date']."', '".$_POST['time']."', '".addslashes(htmlspecialchars($_POST['username']))."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes(htmlspecialchars($_POST['contact']))."', '".addslashes(htmlspecialchars($_POST['subject']))."', '".addslashes(htmlspecialchars(nl2br($_POST['comment'])))."')";

header('Location: http://htxvejle.com/klasser_2007_programmering/2z/Rene_Thyge_Nielsen/Blog3/' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");

$q2 = mysql_query($q);
if(!$q2) die(mysql_error());


} else {
?>


<form name="comments" action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table border="0" cellspacing="0" cellpadding="0">

<tr>
<td><div align="right">Username:</div></td>
<td align="left"><input name="username" type="text" size="30" value=""></td>
</tr>

<tr>
<td><div align="right">Contact:</div></td>
<td align="left"><input type="text" name="contact" size="30" value=""> <i>(email or url)</i></td>
</tr>

<tr>
<td><div align="right">Subject:</div></td>
<td align="left"><input type="text" name="subject" size="30" value=""></td>
</tr>

<tr>
<td><div align="right">Comment:</div></td>
<td align="left"><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>

<tr>
<td colspan="2"><input type="reset" value="Reset Fields"><input type="submit" name="submit" value="Add Comment"></td>
</tr>

</table>
</form>
<?
}
?>

Warning: Cannot modify header information - headers already sent by (output started at Z:\\wamp\\www\\htxvejle\\klasser_2007_programmering\\2z\\Rene_Thyge_Nielsen\\Blog3\\comments.php:23) in Z:\\wamp\\www\\htxvejle\\klasser_2007_programmering\\2z\\Rene_Thyge_Nielsen\\Blog3\\includs\\comment.php on line 48



og hvis jeg bare sletter den header linje opdaterer den ikke ordentligt.



Du kan ikke bruge header(); når du allerede har sendt noget output. Header('location'); skal være det eneste /første du sender til klienten, da header(''); modificerer din http header du sender afsted.

Alle print, echo osv. skal derfor IKKE udskrives, hvis du skal skifte brugeren over på en anden side.



problemet er bare, at når han har output buffering slået til i starten af sin fil, så burde det ikke have indflydelse



ahh, havde jeg ikke lige spottet :)



t