PHP session_start(); syntax error

4 posts in this topic

Hey all, I have got a PHP contact form which is working fine in localhost, but when I upload it to a live server(hostgator),I get the following single-line error when l load the form, Please assist





 //INITIALIZE VARIABLES and set to empty values
$name = $phone = $email = $message= $captchaResults= "";
$nameErr = $phoneErr = $emailErr = $checkboxErr= $messageErr= $captchaErr= "";

ini_set('display_errors', 1);

    $valid = true;
    //check if name is empty and performs functions in curly brackets
    if (empty($_POST["name"])) {
       $valid = false;
	   $nameErr = "Please fill out this field";
	else {
		//Passes name throught test input function at the bottom of page
		 $name = test_input($_POST["name"]);
		//remove illegal characters from name , Sanitize data
		$nm =filter_var($name, FILTER_SANITIZE_STRING);
       // Validate Data
        if (!preg_match("/^[a-zA-Z\s,.-]{3,30}$/", $nm))          // Regexp requiring letters, spaces, commas and fullstops and should not exceed 30 letters
			$valid = false;
			$nameErr = "Please don't insert numbers*";
	//check if phone contains numbers
    if (empty($_POST["phone"])) {
		$valid = false;
		$phoneErr = "Please fill out this field";
	else {
        $phone = test_input($_POST["phone"]);
        if (!preg_match("/^[0-9\s(),+.-]*$/", $phone)) {

            $valid = false;
			$phoneErr = "Please don't insert letters*";
             //check if email is valid
    if (empty($_POST["email"])) {

        $valid = false;

        $emailErr = "Please fill out this field";
        echo'email is empty<br>';
	else {
		$email = test_input($_POST["email"]);
		//Remove all illegal characters from email
		$em = filter_var($email, FILTER_SANITIZE_EMAIL);
      if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $em))
            $valid = false;
			$emailErr = "*Please insert a valid email address*";
		// Check the values from checkbox and POST them to email 
         $value= "";	                                       
	 if (empty($_POST["checkbox"])) {

        $valid = false;
		$checkboxErr = "Please fill out this field*"; 
		$checkbox =$_POST["checkbox"];                //Array of values from the checkbox values
			$value= implode(' , ', $checkbox);           //implode values and separate by a comma
				$value = test_input($value);
	//check if message contains letters and white-space
    if (empty($_POST["message"])) {
       $valid = false;
	   $messageErr = "Please fill out this field";
        echo 'Message is empty<br>';
	else {
		$message = test_input($_POST["message"]);
		//remove illegal characters from url
		  $msg =filter_var($message, FILTER_SANITIZE_STRING);
        if (!preg_match("/^[a-zA-Z\s-,:;`~.?()]*$/", $msg))       //Regexp requiring spaces, full-stops, colon, semi-colons brackets, question marks 
			$valid = false;
			$messageErr = "Only letters and spaces are allowed*";
	//Captcha Results
	$getRandomNumber1 = $_POST["firstRandomNumber"];
	$getRandomNumber2 = $_POST["secondRandomNumber"];
	$getCaptchaResults = $_POST["captchaResults"];
	$totalNumber= $getRandomNumber1 + $getRandomNumber2;
	if($totalNumber == $getCaptchaResults){
	else{$valid = false; 
		$captchaErr="Wrong Answer";}

	//stores name in a session variable to be used in thank-you page	
	$_SESSION["nm"]= $nm;
	require ("PHPMailer/PHPMailerAutoload.php");                      //including phpmailer class

    $mail = new PHPMailer();

    $mail->IsSMTP();                                      // set mailer to use SMTP
    $mail->SMTPDebug = 2;
    $mail->Host = "smtp.gmail.com";            // specify main and backup server or I.P ADDRESS from server
    $mail->SMTPSecure = "tls";                     // Connect using a TLS connection
    $mail->Port = 587;                                //Gmail SMTP port
    $mail->SMTPAuth = true;                         // turn on SMTP authorization
    $mail->Username = "************@gmail.com";  // SMTP username
    $mail->Password = "**********";            // SMTP password

    $mail->From = "$em";                         //email of sender
    $mail->FromName = "$nm";                        //name of the sender
    $mail->AddAddress("**************@gmail.com", "Patwan");        //email address of recepient and name
    $mail->AddReplyTo($em, $nm);                     //Address to which recepient will reply

    $mail->WordWrap = 100;                                   // set word wrap to 100 characters
    $mail->IsHTML(true);                                          // set email format to HTML
    $mail->Subject = "Contact  Form";    //subject of email

    $mail->Body = "Name: " . $nm . 
	              "<br>Phone: " . $phone . 
				  "<br>Email: " . $em .
				  "<br>Subject: " . $value .
                  "<br>Message: " . $msg ;

    //$mailphp = false;
    if ($valid) {

        // if (!$mailphp) {
        if (!$mail->Send()) {
            echo 'Form could not be sent.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;
        } else {

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);

    return $data;


Warning: session_start(): Cannot send session cookie - headers already sent by ( output started at /home4/pwebk/public_html/contact.php:1) in /home4/pwebk/public_html/contact.php on line 4

Share this post

Link to post
Share on other sites

Move 'session_start();' directly after '<?php', there should not be any space/empty line break before '<?php' or after.

1 person likes this

Share this post

Link to post
Share on other sites

If you can guarantee that there are no spaces or line breaks before the opening <?php tag then it's probably because your document is encoded as UTF-8 with a byte order mark. To solve that, open your document in a code editor and save it with a UTF-8 encoding that doesn't have a BOM.

1 person likes this

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now