新手求解!Cannot modify header information…的有关问题TAT

php中文网
发布: 2016-06-13 10:27:46
原创
989人浏览过

新手求解!!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. 加上和ob_end_flush();

最后是可以成功寄出email, 资料有遗漏也会跳到error page, 但都是无法去到thank you page…都是会出现Cannot modify header information(略)

请问我加exit / ob_start的地方有错吗? 还是有什么其他问题呢?
麻烦各位高手帮忙看看>
以下是代码

P.S.我是用notepad做这个php档的

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php ob_start(); ?><?phpdate_default_timezone_set('Asia/Hong_Kong');ini_set("sendmail_from","[email&#160;protected]");ini_set("SMTP","smtp.wtt-mail.com");$myemail  = "[email&#160;protected]";$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: $companyContact Person: $personTel: $telE-mail: $emailContent:$contentEnd 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>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/1928">
                            <img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d56e1edcc642.png" alt="达芬奇">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/1928">达芬奇</a>
                            <p>达芬奇——你的AI创作大师</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="达芬奇">
                                <span>144</span>
                            </div>
                        </div>
                        <a href="/ai/1928" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="达芬奇">
                        </a>
                    </div>
                  </body>    </html><?phpexit();}ob_end_flush();?>
登录后复制





------解决方案--------------------
探讨

喔...不好意思那空行是发帖时手滑按到的...

------解决方案--------------------
检查下文件是否有bom头,有的话去掉
在header('location: ThankYou.html');前面加上ob_clean();试试
------解决方案--------------------
除了 On 还需要设置显示的级别
error_reporting(E_ALL);

探讨

我把header那行改成
//header('location: ThankYou.html');
然後在php.ini改了display_errors = On
是這樣沒錯吧?

(我不是用apache是用IIS的)重启了之後......浏览器出現的是一片空白......
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号