PHP标头无法正常工作

时间:2014-03-04 15:31:34

标签: php

前段时间我写了一个简单的脚本来处理从我的网页发送电子邮件。这是blogspot(没有PHP),所以我使用外部服务器与PHP来解决我的问题。我不知道为什么,但在我的代码下面,函数头突然停止工作。我在寻找可能是什么原因。我在“?php”之前没有空白行,我已经正确地形成了“标题”......我没有得到它。有人能告诉我发生了什么吗?

<?php
      $informacja = "success_txt";  
      $flaga = TRUE;  
      $adresat = 'podsmoczymdiamentem@gmail.com'; 

    if (!isset($_POST['submit'])) 
      {
         $informacja = "error_submit";
         $flaga = FALSE;
      }


      $autor = $_POST['autor'];
      $autorTemp = str_replace(' ', '', $autor);
      if ($autorTemp == '')
      {
         $informacja = 'error_name';
         $flaga = FALSE;
      }

      $tytul = $_POST['tytul'];
      $tytulTemp = str_replace(' ', '', $tytul);
      $tytulTemp = str_replace('<br>', '', $tytul);
      $tytulTemp = str_replace('<\ br>', '', $tytul);
      $tytulTemp = str_replace('<\br>', '', $tytul);
      $tytulTemp = str_replace('<BR>', '', $tytul);
      $tytulTemp = str_replace('<\ BR>', '', $tytul);
      $tytulTemp = str_replace('<\BR>', '', $tytul);
      if ($tytulTemp == '')
      {
         $informacja = 'error_title';
         $flaga = FALSE;
      }

      $nadawca = $_POST['e-mail'];
      $nadawcaTemp = str_replace(' ', '', $nadawca);
      if ($nadawcaTemp == '')
      {
         $informacja = 'error_email';
         $flaga = FALSE;
      }

      $opowiadanie = $_POST['opowiadanie'];
      $opowiadanieTemp = str_replace(' ', '', $opowiadanie);
      if ($opowiadanieTemp == '')
      {
         $informacja = 'error_story';
         $flaga = FALSE;
      }

      $subject = "$autor nadesłał swoją opowieść: $tytul";
      $headers  = "From: Pod Smoczym Diamentem<podsmoczymdiamentem@gmail.com>\r\n";
      $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
      $headers  .= "MIME-Version: 1.0\r\n";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
      $tresc = "Witaj Marcinie. Użytkownik <b>$autor</b> nadesłał opowiadanie do 

    twej karczmy. Jakbyś chciał się z nim skontaktować, tu jest jego adres:<br><a 

    href='mailto:$nadawca'>$nadawca</a><br><br> Oto jego 

    opowieść...<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br><b><h1>

    $tytul</h1></b><br><br> $opowiadanie";


      if ($flaga == TRUE)
      {
         $mail_sent = @mail( $adresat, $subject, $tresc, $headers);
         if($mail_sent == FALSE)
         {
            $informacja = "error_send";
         }
      } 

       $url = 'Location: http://www.podsmoczymdiamentem.blogspot.com/p/przeslij.html?info=';
       $url .= $informacja;
       header($url);
    ?>

来自html部分的FORM代码:

<form action="http://podsmoczymdiamentem.meximas.com/posts.php" id="post" method="POST" name="post">
<table border="0" cellpadding="4" cellspacing="0"><tbody>
<tr><td colspan="2"><b>Tytuł:</b></td></tr>
<tr><td colspan="2"><input id="tytul" name="tytul" size="30" type="text" /></td></tr>
<tr><td colspan="2"><b>Treść:</b></td> </tr>
<tr> <td colspan="2"><textarea cols="82" name="opowiadanie" rows="30" wrap="virtual"></textarea></td></tr>
<tr><td align="right"></td><td align="right"><b>Imię:</b><input name="autor" size="20" type="text" /></td></tr>
<tr><td></td><td align="right"><b>e-mail:</b><input name="e-mail" size="20" type="text" /></td></tr>
<tr> <td></td> <td align="right">
<input name="submit" type="submit" value="Wyślij" /><input name="reset" type="reset" value="Wyczyść" />
</td></tr>
<tr><td colspan="2"><div style="text-align: right;">
<span id="error"></span></div>
</td></tr>
</tbody></table>
</form>

3 个答案:

答案 0 :(得分:2)

试试这个:

header($url);
exit;

参考:http://it2.php.net/manual/en/function.header.php

答案 1 :(得分:0)

试试这个并立足于以下内容:

重定向到http://www.podsmoczymdiamentem.blogspot.ca/p/przeslij.html?info=FOO 当我使用$informacja = "FOO";时,我在服务器上测试了它,这是我浏览器中出现的地址。

<?php
// ob_start(); // uncomment to test if error of headers disappears
// $informacja = "FOO"; // commented out for testing purposes
$url = 'http://www.podsmoczymdiamentem.blogspot.com/p/przeslij.html?info=';
$url .= $informacja;
header('Location: ' . $url);
exit;

您可能没有删除Location:

中的$url = 'Location:...

修改

<?php
ob_start(); // uncomment to test
// $informacja = "FOO"; // commented out for testing purposes
$informacja = "success_txt";  
$flaga = TRUE;  
$adresat = 'podsmoczymdiamentem@gmail.com';

// rest of code
// $informacja = "FOO";
$url = 'http://www.podsmoczymdiamentem.blogspot.com/p/przeslij.html?info=';
$url .= $informacja;
header('Location: ' . $url);
exit;

编辑2

评论条件语句测试:(重定向,我收到了邮件)。

//      if ($flaga == TRUE)
//      {
         $mail_sent = mail($adresat, $subject, $tresc, $headers);
//         if($mail_sent == FALSE)
//         {
//            $informacja = "error_send";
//         }
//      } 


$url = 'http://www.podsmoczymdiamentem.blogspot.com/p/przeslij.html?info=';
$url .= $informacja;
header('Location: ' . $url);
exit;

答案 2 :(得分:0)

我做到了! 由于某种原因标头不起作用,所以我在考虑另一个解决方案。我想出了这个:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL='.$url . '">';

这条线完成了这项工作。感谢所有帮助我解决这个问题的人!