2012-02-13 13 views
2

PHPメールに問題があります。私はコードに触れることなく、時々動作しなくなります。私は必要な書式が空であるかどうかをチェックするスクリプトを持っています。このスクリプトは動作します。しかし、私が必要なフィールドをすべて記入すると、「あなたのメールは正常に送信されました」というテキストを取得する必要がありますが、私はしません。しかし、テキストの一部を元の位置に戻したり元の位置に戻したりするだけで、コードを編集するとしばらくの間、動作します。それは働くことを止める夜の下にあることがよくあります。それは問題を引き起こしているサーバーか、それとも私が下に投稿したコードですか?コードなしでPHPメールが動作しなくなる

<?php 

if(isset($_POST['submit'])){ 

$namn = strip_tags($_POST['namn']); 
$foretag = strip_tags($_POST['foretag']); 
$adress = strip_tags($_POST['adress']); 
$postnr = strip_tags($_POST['postnr']); 
$ort = strip_tags($_POST['ort']); 
$telefon = strip_tags($_POST['telefon']); 
$epost = strip_tags($_POST['epost']); 
$meddelande = strip_tags($_POST['meddelande']); 

function check_required_fields($required_array){ 
    $field_errors = array(); 
    foreach($required_array as $fieldname){ 
     if ((!isset($_POST[$fieldname])) || (empty($_POST[$fieldname]))){ 
      if($_POST[$fieldname] != '0'){ 
       $field_errors[] = $fieldname; 
      } 
     } 
    } 
    return $field_errors; 
} 

$errors = array(); 
$required_fields = array('namn', 'telefon', 'meddelande'); 
$errors = array_merge($errors, check_required_fields($required_fields)); 

if(empty($errors)){ 

$meddelande=nl2br($meddelande); 

if(empty($foretag)){ $foretag='-'; } 
if(empty($adress)){ $adress='-'; } 
if(empty($postnr)){ $postnr='-'; } 
if(empty($ort)){ $ort='-'; } 
if(empty($epost)){ $epost='-'; } 

$body = 
" 
Namn: <b>". $namn ."</b><br /> 
Företag: <b>". $foretag ."</b><br /> 
Adress: <b>". $adress ."</b><br /> 
Postnr: <b>". $postnr ."</b><br /> 
Ort: <b>". $ort ."</b><br /> 
Telefon: <b>". $telefon ."</b><br /> 
E-post: <b>". $epost ."</b><br /><br /> 
Meddelande: <b><br />". $meddelande 
; 

$headers = "From: $namn <[email protected]>\r\n"; 
$headers .= "Content-type: text/html; charset=utf-8\r\n"; 
$headers .= "X-Mailer: PHP v".phpversion(); 

$success = mail('[email protected]', 'Meddelande', $body, $headers); 

} 

} 

?> 

    <form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>"> 

      <?php 
       if(!empty($errors)){ 
        echo "<p class=\"field_error\">De rödmarkerade fälten måste fyllas i.</p>"; 
       } 
      ?> 

      <?php 
       if(empty($errors) && $success){ 
        echo "<p class=\"p_success\">Tack för ditt meddelande! Vi kommer att besvara det inom kort.</p>"; 
       } 
      ?> 

    <p> 
     <label for="namn"> 
     <?php if(!empty($errors)){if(in_array("namn", $errors)){echo "<span class=\"field_error\">";}}?>Namn: *<?php if(!empty($errors)){if(in_array("namn", $errors)){echo "</span>";}} ?> 
     </label><br /> 
     <input type="text" name="namn" id="namn" class="text" tabindex="15" value="<?php if(!empty($errors)){ echo $namn; } ?>" /> 
      <br /> 
     <label for="foretag">Företag:</label><br /> 
     <input type="text" name="foretag" id="foretag" class="text" tabindex="20" value="<?php if(!empty($errors)){ echo $foretag; }?>" /> 
      <br /> 
     <label for="adress">Adress:</label><br /> 
     <input type="text" name="adress" id="adress" class="text" tabindex="30" value="<?php if(!empty($errors)){ echo $adress; } ?>" /> 
      <br /> 
     <label for="postnr">Postnummer:</label><br /> 
     <input type="text" name="postnr" id="postnr" class="text_medium" tabindex="40" value="<?php if(!empty($errors)){ echo $postnr; } ?>" /> 
      <br /> 
     <label for="ort">Ort:</label><br /> 
     <input type="text" name="ort" id="ort" class="text" tabindex="50" value="<?php if(!empty($errors)){ echo $ort; } ?>" /> 
      <br /> 
     <label for="telefon"> 
     <?php if(!empty($errors)){if(in_array("telefon", $errors)){echo "<span class=\"field_error\">";}}?>Telefon: *<?php if(!empty($errors)){if(in_array("telefon", $errors)){echo "</span>";}} ?> 
     </label><br />    
     <input type="text" name="telefon" id="telefon" class="text" tabindex="60" value="<?php if(!empty($errors)){ echo $telefon; } ?>" /> 
      <br /> 
     <label for="epost">E-post:</label><br />     
     <input type="text" name="epost" id="epost" class="text" tabindex="70" value="<?php if(!empty($errors)){ echo $epost; } ?>" /> 
      <br /> 
     <label for="meddelande"> 
     <?php if(!empty($errors)){if(in_array("meddelande", $errors)){echo "<span class=\"field_error\">";}}?>Meddelande: *<?php if(!empty($errors)){if(in_array("meddelande", $errors)){echo "</span>";}} ?> 
     </label><br />    
     <textarea name="meddelande" id="meddelande" class="textarea" tabindex="80"><?php if(!empty($errors)){ echo $meddelande; } ?></textarea> 
      <br /> 
     <input type="submit" name="submit" value="Skicka" class="submit" /> 
    </p> 

    </form> 

答えて

0

問題を解決しました。新しいサーバーホストに変更されました。もう問題はありません!

0

私は同様の問題を経験しました。ブラウザでエラーが表示されると、フォームがダブルポストされることがあります。コンテンツのある時間とコンテンツのない時間。

スクリプトにコンテンツが送信されていない場合は、明らかに対処する必要はありません。これをチェックするにはいくつかの方法がありますが、スクリプトの実行ごとに自分宛てに電子メールを送信したのは必死の最後の手段でした。そして、スクリプトが一回しか実行されていないメールが2つあることがわかりました。あなたのコード内で何かあれば

それは:)

+0

メールは一切送信されないことです。私が述べたように、エラーチェックは機能しますが、すべての必須フィールドに記入すると、成功メッセージが表示されず、メールも送信されません。 –

1

をしようとworhtだが見つけることができませんでした。 サーバーでAPCキャッシュが有効になっているかどうかを確認します。 更新されたコードを取得する際に問題が発生することがあります。

SMTPサーバーを使用している場合は、mail()関数が機能しない可能性があります。 これにはPEARSを使用できます。

+0

私のWebホスティング会社と話しましたが、APCキャッシュはすでに有効になっています。彼はさらにこの問題を検討している。しかし、それはサーバーの権利と何かでなければなりませんか?そうでなければ、私は無知だ。 –

+0

OK、SMTPサーバーを使用していますか? はいの場合、メールが機能しない可能性があります。 梨を使用してメールを送信します。 これを参照できます。 http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm – rajesh

+0

そうだと思います。私は自分のサーバーのホストに尋ねて、彼はSMTPがメールサーバー上で構成されていると言った。私は梨を使ってメールを送ろうとしましたが、成功しませんでした。私は提出を打つときに空白のウィンドウを取得します。しかし、これは本当に問題になりますか?なぜ私のメールを送信するのですか? –

関連する問題