新手求解!Cannot modify header information…的有关问题TAT
新手求解!!Cannot modify header information…的问题TAT
我想用PHP contact form做一个inquiry page, 让人填上姓名、电话、email等, 按”send”就会将以上资料变成email 发到我的mail box
但其实我是新手…整个contact form基本上是用这个网教的抄抄改改出来的: http://myphpform.com/php-form-tutorial.php
按了”send”后我想网页跳到thank you page, 但会出现”Cannot modify header information – header already sent by (output started at C:\inetpub\wwwroot\contant2.php:1) in C:\inetpub \wwwroot\contant2.php on line 34” 这个问题
*Line34 = header('location:ThankYou.html');
我找过解决方法, 试了
1. 在header后加exit();
2. 加上<?php ob_start(); ?>和ob_end_flush();
最后是可以成功寄出email, 资料有遗漏也会跳到error page, 但都是无法去到thank you page…都是会出现Cannot modify header information(略)
请问我加exit / ob_start的地方有错吗? 还是有什么其他问题呢?
麻烦各位高手帮忙看看><"
以下是代码
P.S.我是用notepad做这个php档的
------解决方案--------------------
------解决方案--------------------
检查下文件是否有bom头,有的话去掉
在header('location: ThankYou.html');前面加上ob_clean();试试
------解决方案--------------------
除了 On 还需要设置显示的级别
error_reporting(E_ALL);
我想用PHP contact form做一个inquiry page, 让人填上姓名、电话、email等, 按”send”就会将以上资料变成email 发到我的mail box
但其实我是新手…整个contact form基本上是用这个网教的抄抄改改出来的: http://myphpform.com/php-form-tutorial.php
按了”send”后我想网页跳到thank you page, 但会出现”Cannot modify header information – header already sent by (output started at C:\inetpub\wwwroot\contant2.php:1) in C:\inetpub \wwwroot\contant2.php on line 34” 这个问题
*Line34 = header('location:ThankYou.html');
我找过解决方法, 试了
1. 在header后加exit();
2. 加上<?php ob_start(); ?>和ob_end_flush();
最后是可以成功寄出email, 资料有遗漏也会跳到error page, 但都是无法去到thank you page…都是会出现Cannot modify header information(略)
请问我加exit / ob_start的地方有错吗? 还是有什么其他问题呢?
麻烦各位高手帮忙看看><"
以下是代码
P.S.我是用notepad做这个php档的
- PHP code
<?php ob_start(); ?> <?php date_default_timezone_set('Asia/Hong_Kong'); ini_set("sendmail_from","*****@yahoo.com"); ini_set("SMTP","smtp.wtt-mail.com"); $myemail = "**********@yahoo.com"; $company = check_input($_POST['company'], "Please enter your company's name"); $person = check_input($_POST['person'], "Please enter your name"); $tel = check_input($_POST['tel'], "Please enter your contact number"); $email = check_input($_POST['email'], "Please enter your E-mail"); $subject = "Online Enquiry"; if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { show_error("E-mail address not valid"); } if (!preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i", $website)) { $website = ''; } $message = "Hello! Contact form has been submitted by: Company Name: $company Contact Person: $person Tel: $tel E-mail: $email Content: $content End of message "; mail($myemail,$subject,$message); header('location:ThankYou.html'); exit(); function check_input($data, $problem='') { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); if ($problem && strlen($data) == 0) { show_error($problem); } return $data; } function show_error($myError) { ?> <html> <head> <title>Order form error</title> <style type="text/css"> .style2 { text-align: center; border-width: 0px; } </style> </head> <body> <MARQUEE direction="right" hspace="200" vspace="50" behavior="alternate"> <H2><b>Please correct the following error:</b><br /><H2> <H2><?php echo $myError; ?><H2> </MARQUEE> <p> <p class="MsoNormal" align="center"> <input type="button" value=" Back to previous page " onclick="history.back()"> <p class="MsoNormal" align="center"> </p> </body> </html> <?php exit(); } ob_end_flush(); ?>
------解决方案--------------------
------解决方案--------------------
检查下文件是否有bom头,有的话去掉
在header('location: ThankYou.html');前面加上ob_clean();试试
------解决方案--------------------
除了 On 还需要设置显示的级别
error_reporting(E_ALL);