Problem with session _start
Posted: Fri Jan 16, 2009 12:08 pm
Hi all after spending hours and going crazy, can some one please tell me why I keep getting a headers have already been sent error with this code.
Thank you
Code: Select all
<?php
ob_start();
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="test1.css"/>
</head>
<body>
<div id="header">
<center><img src="images/logo.jpg" height="120px"/></center>
</div>
<div id="content">
<h2> Add your comments.</h2
<?
//connect to your database
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="comments"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//query comments for this page of this article
$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>comment by: ' .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>';
}//end while
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'No comments for this page. 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['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');
if( $_SESSION['CAPTCHA'] != strip_tags($_POST['CAPTCHA']) ) die('<u>ERROR:</u> you got the math wrong.');
//this is for a valid contact
//add comment
$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']."', NULL, NULL, '".addslashes(htmlspecialchars(nl2br($_POST['comment'])))."')";
$q2 = mysql_query($q);
if(!$q2) die(mysql_error());
//refresh page so they can see new comment
//header('Location: http://' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#comments");
} else { //display form
?>
<form name="comments" action="question2.php" 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 width="96%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="username" type="text" size="30" value=""></td>
</tr>
<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td><div align="right">Please enter the answer: </div></td>
<td><input type="text" name="CAPTCHA" />
<img src="captcha/captcha.php" /></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="submit" name="submit" value="Add Comment"></td>
</tr>
</table>
</form>
<?
} // end else
mysql_close();
ob_end_flush();
?>
</body>
</html>