Page 1 of 1

Problem with session _start

Posted: Fri Jan 16, 2009 12:08 pm
by ardan16
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.

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>
Thank you

Re: Problem with session _start

Posted: Fri Jan 16, 2009 12:10 pm
by RobertGonzalez
That is the only code? Have you rewritten it in an ascii based editor to make sure there is no BOM being output before the code?

Re: Problem with session _start

Posted: Fri Jan 16, 2009 5:46 pm
by ardan16
Thank You so much.
Saved it again in notepad ++ this time as UTF-8 without BOM. Now it does what I need. Ok now off to see why this was.
thanks