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。

您需要确保mail在输出任何 HTML 之前调用

<?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 回答