2017-11-14 21 views
0

HTMLコード:PHPメール機能404エラー

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>BuddyTeam | Website</title> 

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

    <link rel="stylesheet" type="text/css" href="style.css" /> 
</head> 
<body> 
    <div id="page-wrap"> 
     <img src="images/title.png" alt="BuddyTeam | Website" /><br /><br /> 

     <div id="contact-area"> 

      <form method="post" action="contactengine.php"> 
       <p style="text-align:right" onclick="alert('Só podes registar uma conta secundária se tiveres uma principal!  Neste espaço escreve o Nickname da tua conta registada no Servidor.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p> 
       <label for="Nickname"></label> 
       <p><font face="serif"></font></p><input type="text" name="Nickname" id="Nickname" placeholder="Informa o Nickname da conta principal registada no Servidor." required /> 
       <p style="text-align:right" onclick="alert('Para não haver fraudes precisamos de saber que és mesmo tu!     Vai ao Servidor com a tua conta registada, usa o comando (/meuid) e escreve os números neste espaço.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p> 

       <label for="ID"></label> 
       <p><font face="serif"></font></p><input type="text" name="ID" id="ID" placeholder="Informa o ID da conta principal registada no Servidor." required /> 
       <p style="text-align:right" onclick="alert('Contas nunca são demais!                  Neste espaço escreve o Nickname da nova conta que queres registar.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p> 

       <label for="Novo"></label> 
       <input type="text" name="Novo" id="Novo" placeholder="Informa o Nickname da conta que pretendes registar." required /> 
       <p style="text-align:right" onclick="alert('Segurança em primeiro lugar!                 Neste espaço escreve uma senha para a nova conta que queres registar.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p> 

       <label for="Senha"></label> 
       <input type="text" name="Senha" id="Senha" placeholder="Informa uma senha para a tua nova conta." required /> 
       <p style="text-align:right" onclick="alert('Depois entra em contacto!                  Coloca aqui o teu Email para seres contacto quando a conta for registada.')"><font color="blue">Precisas de ajuda? Clica Aqui!</font></p>  

       <label for="Email"></label> 
       <input type="text" name="Email" id="Email" placeholder="Informa um Email para contacto."> 

       <input type="submit" name="submit" value="Enviar" class="submit-button" /> 
      </form> 

      <div style="clear: both;"></div> 

     </div> 

    </div> 
</body> 
</html> 

PHPコード:

<?php 

$EmailFrom = "[email protected]"; 
$EmailTo = "[email protected]"; 
$Subject = "Novo Pedido de Registo de Conta"; 
$Nickname = Trim(stripslashes($_POST['Nickname'])); 
$ID = Trim(stripslashes($_POST['ID'])); 
$Novo = Trim(stripslashes($_POST['Novo'])); 
$Senha = Trim(stripslashes($_POST['Senha'])); 
$Email = Trim(stripslashes($_POST['Email'])); 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=erro.html\">"; 
    exit; 
} 

// prepare email body text 
$Body = ""; 
$Body .= "Conta Registada: "; 
$Body .= $Nickname; 
$Body .= "\n"; 
$Body .= "ID da Conta Registada: "; 
$Body .= $ID; 
$Body .= "\n"; 
$Body .= "Nova Conta: "; 
$Body .= $Novo; 
$Body .= "\n"; 
$Body .= "Senha: "; 
$Body .= $Senha; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $Email; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=concluido.php\">"; 
} 
else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=erro.html\">"; 
} 
?> 

私はフォームに必要事項を記入して送信すると、私はerro.html」にリダイレクトしています電子メールは送信されません。なにが問題ですか?

何か編集をしなくても、システムはしばらく動作しなくなります。

システムを再び動作させるためには何を変更する必要がありますか?

+0

PHPは、コード全体または最小限のバージョンですか?リダイレクトは 'if($ success){'か 'if(!$ validationOK){'? (HTML /メタでリダイレクトする理由は 'header'だけです) – chris85

+0

' contactengine.php'の位置は? –

答えて

0

無効な第4パラメータ(Fromのアドレス)を指定したため、mail()機能が動作しないという問題があります。 "From: <$EmailFrom>"には電子メールアドレスの括弧を入れてはいけません。角かっこを使用する場合は、の前にという名前を付ける必要があります。

代わり$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

の何をする探していることは、ヘッダーとして追加され

From: $Nickname <$EmailFrom>

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'From: ' . $Nickname. ' <' . $EmailFrom . '>'; 
$success = mail($EmailTo, $Subject, $Body, $headers);` 

これは、と評価されます。

フィッシングを防止するために、メールサーバーによってはFromアドレスが操作されないことがあります。

erro.htmlがサーバーに存在しないため、404が表示されます。関連するファイルを作成するとエラーが解決され、メールの送信中にエラーが発生すると自動的にそこにリダイレクトされます。

希望すると便利です。 :)