警告:session_start():无法发送会话缓存限制器 - 已发送的标头

时间:2014-04-24 13:13:21

标签: php

我有一个html表单发布到post_form.php进行处理。我在尝试提交联系表单时收到此错误:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\advanced-dynamic-php-form\form-files\post_form.php:1) in C:\wamp\www\advanced-dynamic-php-form\form-files\post_form.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0011  283424  {main}( )   ..\post_form.php:0
2   0.0011  284240  session_start ( )   ..\post_form.php:2

我已经检查过以确保session_start();在打开php标签后首先出现在页面上。我还检查了我的php.ini文件,以确保session.auto_start = 0.这里是php页面:

<?php
session_start();
isset($_FILES['contact_form']);
$body = "";
if(isset($_POST["submit"])){

    if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["code"]==$_POST["captcha"])
    {

        $to = "info@lexomatic.com";
        $subject = "Contact";

        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $address = $_POST['address'];
        $message = $_POST['message'];
        $total_lines = $_POST['total_lines'];



            $dirname = str_replace ("@","",$email);
            $allowed =  array('jpg', 'png', 'gif', 'doc', 'docx', 'pdf', 'xls', 'xlsx', 'zip', 'rar', 'JPG', 'PNG', 'GIF', 'DOC', 'DOCX', 'PDF', 'XLS', 'XLSX', 'ZIP', 'RAR');

            $i=0;
            $num_of_att = 0;
            $error_ext = 0;
            $error_size = 0;
            $upload_error =0;
            $target1 = "";
            $target2 = "";
            $target3 = "";

            $img_url1 = "";
            $img_url2 = "";
            $img_url3 = "";

            // File Attachment Function
            for ($file_num=1; $file_num<=3; $file_num++){
                ${'ok'.$file_num} = 0;
                $input_name = "file".$file_num;

                if(!empty($_FILES[$input_name]["name"] )){
                    ${'target'.$file_num} = $_SERVER['DOCUMENT_ROOT'] . '/form-files/uploads/'.$dirname .'/'. $_FILES[$input_name]["name"];
                    ${'img_url'.$file_num} = 'http://YOURSITEURL.COM/form-files/uploads/'.$dirname .'/'. $_FILES[$input_name]["name"];
                    $file_ext = $_FILES[$input_name]["name"];
                    $ext = end(explode(".", $file_ext));
                    //$file_ext = new SplFileInfo(${'target'.$file_num});
                    //$ext  = $file_ext->getExtension();


                    if(!in_array($ext,$allowed) ) {
                        $error_ext++;
                        $error_message = "<div style='width: 250px; color: red; font-family: Arial; font-weight: normal; font-size:12px'>Extensions " .$ext. " are not allowed</div>";
                    } elseif(($_FILES[$input_name]['size'] > 2097152) || ($_FILES[$input_name]['size'] == 0)){
                        $error_size++;
                        $error_message = "<div style='margin-left:15px; width: 250px; color: red; font-family: Arial; font-weight: normal; font-size:12px'>File " .$input_name. " exceeds max file size</div>";
                    }else{
                        ${'ok'.$file_num} = 1;
                        $num_of_att++;
                        ${'cur_temp_name'.$file_num} = $_FILES[$input_name]["tmp_name"];                        
                    } //close if
                }//close if
            }//close for

            // File attachment check
            $counter = 0;
            if(($num_of_att>0) && ($error_size==0) && ($error_ext==0)){ 
                if (!file_exists("uploads/".$dirname)) {
                    mkdir("uploads/$dirname", 0777, true);
                }

                if($ok1 == 1){
                    if(move_uploaded_file($cur_temp_name1, $target1)){
                        $counter++;
                    }else{
                        $upload_error++;
                    }
                }
                if($ok2 == 1){
                    if(move_uploaded_file($cur_temp_name2, $target2)){
                        $counter++;
                    }else{
                        $upload_error++;
                    }
                }
                if($ok3 == 1){
                    if(move_uploaded_file($cur_temp_name3, $target3)){
                        $counter++;
                    }else{
                        $upload_error++;
                    }
                }

            }   
                //////////////////////// Create Email Body ////////////////////////////////


        //  if(($num_of_att==0) && ($error_size==0) && ($error_ext==0)){
                    /*while (list($key,$value) = each($_POST)){
                        $body .= $key.": " .$value."\n";
                    }*/
            if(($upload_error == 0) && ($error_size==0) && ($error_ext==0)){    
                $body .= "Name: ".$name."\n";
                $body .= "Email: ".$email."\n";
                $body .= "Phone: ".$phone   ."\n";
                $body .= "Address: ".$address."\n";
                $body .= "Message: ".$message."\n\n";


                for($i=1; $i<=20; $i++){

                    $dynamicentryvaluefirst = 'dynamicentryvaluefirst'.$i;
                    $dynamicentryvaluesecond = 'dynamicentryvaluesecond'.$i;
                    $dynamicentryvaluethird = 'dynamicentryvaluethird'.$i;
                    $dynamicentryvaluefourth = 'dynamicentryvaluefourth'.$i;
                    $dynamicentryvaluefifth = 'dynamicentryvaluefifth'.$i;

                    if (isset($_POST[$dynamicentryvaluefirst])){
                        $cur_dynamicentryvaluefirst = $_POST[$dynamicentryvaluefirst];
                    }else{
                        $cur_dynamicentryvaluefirst ="";
                    }

                    if (isset($_POST[$dynamicentryvaluesecond])){
                        $cur_dynamicentryvaluesecond = $_POST[$dynamicentryvaluesecond];
                    }else{
                        $cur_dynamicentryvaluesecond ="";
                    }

                    if (isset($_POST[$dynamicentryvaluethird])){
                        $cur_dynamicentryvaluethird = $_POST[$dynamicentryvaluethird];
                    }else{
                        $cur_dynamicentryvaluethird ="";
                    }

                    if (isset($_POST[$dynamicentryvaluefourth])){
                        $cur_dynamicentryvaluefourth = $_POST[$dynamicentryvaluefourth];
                    }else{
                        $cur_dynamicentryvaluefourth ="";
                    }

                    if (isset($_POST[$dynamicentryvaluefifth])){
                        $cur_dynamicentryvaluefifth = $_POST[$dynamicentryvaluefifth];
                    }else{
                        $cur_dynamicentryvaluefifth ="";
                    }


                    ${'line'.$i} = $cur_dynamicentryvaluefirst . " | " . $cur_dynamicentryvaluesecond . " | " . $cur_dynamicentryvaluethird . " | " . $cur_dynamicentryvaluefourth . " | " . $cur_dynamicentryvaluefifth;
                    if(${'line'.$i} == (" |  |  |  | ")){

                    }else{
                        $body .= "Line".$i.": ".(${'line'.$i})."\n";
                    }
                }

                $body .= "\n"."File 1: ".$img_url1."\n";
                $body .= "File 2: ".$img_url2."\n";
                $body .= "File 3: ".$img_url3."\n";

                $sent = mail($to, $subject, $body); 
                //echo "Body----------------------"."<br/>".$body;

                echo "<div style='position: relative; top: -10px; margin-left:15px; width: 250px; color: green; font-family: Arial; font-weight: normal; font-size:12px'><img src='tick-icon.png' width='70px' /><div id='message_result'>The form submitted successfully.</div></div>";

            }else{

                echo "<div style='margin-left:15px; width: 250px; color: red; font-family: Arial; font-weight: normal; font-size:12px'><img src='delete-icon.png' width='70px' /><div id='message_result'>An error occured while uploading the file(s).<br/>". $error_message . "</div></div>";
            }   
        }else{
            echo "<div style='margin-left:15px; width: 250px; color: red; font-family: Arial; font-weight: normal; font-size:12px'><img src='delete-icon.png' width='70px' /><div id='message_result'>Wrong security code number.</div></div>"; // invalid code
        }   
}else{
    echo "<div style='margin-left:15px; width: 250px; color: red; font-family: Arial; font-weight: normal; font-size:12px'><img src='delete-icon.png' width='70px' /><div id='message_result'>An error occured. <br/>Please check file sizes and types & try again.</div></div>";
    session_destroy();
}


?>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

假设<?php ...... ?>之间的所有内容都将被删除,剩下的其余内容将以“html”的形式“输出”到浏览器。

这总是一个p-i-t-a,因为换行符,空格,像退格等在php标签之前和之后的无形字符,甚至在它们之间可能会弄乱你的输出。

这样的事情
<?php
      /**
       * some comments
       */
?>

<?php
...

需要几个小时才能找到。这里:nl和第二个?>之间的两个(!)<?php