0

このリンクでフォームを作成していますhttp://jardineselectricos.com/xtatanx/contacto.php、すべて正常に機能します。フォームが入力されるとメールが送信されましたが、エコー出力を受信すると、すべてのウェブサイトが一致します。出力を希望の場所に配置する方法を知りたいです。これは私のコードです。

HTML:

<form method="post" action="contacto.php" id="form">
    <label for="nombre">Nombre: </label>
    <input type="text" name="nombre" placeholder="Su nombre"/>
    <label for="correo">Correo electrónico: </label>
    <input type="email" name="email" placeholder="nombre@correo.com"/>
    <label for="numero-telefonico">Teléfono móvil: </label>
    <input type="text" name="telefono" placeholder="Introducir nº de telf" />
    <label for="mensaje">Mensaje: </label>
    <textarea name="mensaje" cols="20" rows="6" placeholder="Escriba un mensaje breve..."></textarea>
    <input type="submit" id="enviar" name="enviar" value="Enviar">
    <span id="respuesta">
      <?php
                $nombre = $_POST['nombre'];
                $email = $_POST['email'];
                $numero = $_POST['telefono'];
                $mensaje = $_POST['mensaje'];
                $from = 'From: UsuarioStrategyResearch'; 
                $to = 'jhonnatanhxc@gmail.com'; 
                $subject = 'Contacto Strategy Research';

                $body = "De: $nombre\n E-Mail: $email\n Movil: $numero\n Mensaje:\n $mensaje";

                if ($_POST['enviar']) {
                if (mail ($to, $subject, $body, $from)) { 
                    echo '<p>Tu mensaje ha sido enviado, pronto nos pondrémos en contacto.</p>';
                } else { 
                    echo '<p>Ha habido un error y el mensaje no ha podido ser enviado.</p>'; 
                }
            }
            ?>
    </span>
  </form>

出力は常にウェブサイトの真ん中のように配置されます。スパムや div を使用しても変わらず、フッターやどこにでも配置しても、同じ場所にエコーされます。どうもありがとうございました。

4

1 に答える 1

1

ページに問題が表示されます

警告: ヘッダー情報を変更できません - 70 行目の /home/jardines/public_html/xtatanx/contacto.php で既に送信されたヘッダー (/home/jardines/public_html/xtatanx/contacto.php:57 で開始された出力)

つまり、mail関数は HTTP ヘッダーを変更する必要がありますが、既に HTML の出力を開始しているため、ヘッダーは既に送信されています。

mailHTMLを出力する前に必ず呼び出す必要があります

<?php
// At the top of the file, before any HTML is output
$successfulMail = mail ($to, $subject, $body, $from);
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$numero = $_POST['telefono'];
$mensaje = $_POST['mensaje'];
$from = 'From: UsuarioStrategyResearch'; 
$to = 'jhonnatanhxc@gmail.com'; 
$subject = 'Contacto Strategy Research';
$body = "De: $nombre\n E-Mail: $email\n Movil: $numero\n Mensaje:\n $mensaje";
$mailMsg = '';
if ($_POST['enviar']) {
    // Here's the trick, can't call mail after HTML has been output
    if (mail ($to, $subject, $body, $from)) { 
       $mailMsg ='<p>Tu mensaje ha sido enviado, pronto nos pondrémos en contacto.</p>';
    } else {
       $mailMsg ='<p>Ha habido un error y el mensaje no ha podido ser enviado.</p>'; 
    }
}
?>    
...
<form method="post" action="contacto.php" id="form">
    <label for="nombre">Nombre: </label>
    <input type="text" name="nombre" placeholder="Su nombre"/>
    <label for="correo">Correo electrónico: </label>
    <input type="email" name="email" placeholder="nombre@correo.com"/>
    <label for="numero-telefonico">Teléfono móvil: </label>
    <input type="text" name="telefono" placeholder="Introducir nº de telf" />
    <label for="mensaje">Mensaje: </label>
    <textarea name="mensaje" cols="20" rows="6" placeholder="Escriba un mensaje breve..."></textarea>
    <input type="submit" id="enviar" name="enviar" value="Enviar">
    <span id="respuesta"><?php echo $mailMsg ?> </span>
  </form>
于 2013-03-04T02:16:36.340 に答える