Envío de datos de formulario a través de PHPMailer - Cómo actuar el script PHP desde un formulario

2

Algunos puntos fáciles en oferta ...

Deseo actuar un script PHP desde una página de WordPress pero ¿dónde está el mejor lugar para almacenar el script? El script funciona perfectamente bien usando un entorno que no sea de WordPress en una estructura de directorio HTML plana.

y quiero actuar desde la página con el siguiente código:

<form class="contact_form" form action="phpmailersub.php" method="post" enctype="multipart/form-data" name="contact_form" onsubmit="return validateForm()">

¿Qué pasará entonces al formulario action="file"?

Actualmente, la acción de envío está buscando una página http://current/route/to/contact-test/phpmailersub.php pero, obviamente, WordPress no puede encontrarla.

¡Su ayuda sería muy apreciada! Si puedo hacer algo para articular mi consulta o si necesita material adicional, haré todo lo posible para ayudar.

ACTUALIZAR

Actualmente, el archivo PHP (phpmailersub.php) y class.phpmailer.php se encuentra en: enlace

y mi código actual se ve así:

<form class="contact_form" action="&lt;?php bloginfo('http://damtech.it/demo/etap/wp-content/plugins/'); ?&gt;&lt;p&gt;/phpmailersub.php" enctype="multipart/form-data" method="post" name="contact_form" onsubmit="return validateForm()">
<table class="contact">
<tbody>
<tr>
<td class="third"><input type="text" name="cf_mercury" required="" /></td>
<td><span style="color: #3c4247;">   Name</span><span style="color: #3492d1;">*</span></td>
</tr>
<tr>
<td class="third"><input type="email" name="cf_jupiter" required="" />
<span class="form_hint">Correct format "name@url.com"</span></td>
<td>   <span style="color: #3c4247;">E-mail</span><span style="color: #3492d1;">*</span></td>
</tr>
<tr>
<td colspan="2"><textarea name="cf_uranus" required="" rows="6"></textarea></td>
</tr>
</tbody>
</table>
<table class="contact">
<tbody>
<tr>
<td width="50%"><button class="submit" onclick="document.getElementById('contact_form').submit()" type="submit">Send message</button></td>
<td style="text-align: right;" width="50%"><span class="c-clear"><button class="reset" style="color: #3c4247; letter-spacing: -0.5px;" onclick="document.getElementById('contact_form').reset()" type="reset">reset</button></span></td>
</tr>
</tbody>
</table>
</form>
    
pregunta Paul 20.05.2013 - 12:16

3 respuestas

1

En realidad, estás más cerca en tu primer intento.

Mi recomendación sería crear una carpeta llamada "scripts" en la raíz de WP y colocar aquí los archivos de script de PHP, así como sus archivos adjuntos. A continuación, deberá declarar la ruta completa en su atributo de acción, ya que la secuencia de comandos ahora no comparte la misma ruta de archivo que en su "estructura de archivos HTML plana".

Tu código de acción será action="http://damtech.it/demo/etap/scripts/phpmailersub.php"

Tan fácil como eso. No es necesario crear un complemento (aunque esto puede ser una mejor práctica). No olvide cambiar los detalles dentro de phpmailersub.php para acomodar los cambios realizados en términos de rutas de archivos adjuntos (ruta del servidor), direcciones de página, etc.

    
respondido por el BarmyArmy 22.05.2013 - 12:45
3

No llame directamente a sus archivos PHP. Esto se interrumpirá, porque en algunas configuraciones, el directorio de complementos podría estar ubicado en otro dominio , y su archivo funcionará sin el contexto de WordPress ahora.

Use la URL actual como URL de acción de formulario ( o admin-post.php ), luego pruebe si la solicitud es una solicitud POST y maneje el envío del formulario. Luego, redirija a la página original con un encabezado de estado 303 .

    
respondido por el fuxia 21.05.2013 - 10:53
2

Suponiendo que no haya un complemento de formulario de contacto que coincida con sus necesidades, la forma correcta de hacerlo en wordpress es escribir y agregar una plantilla de página adecuada a su tema que contenga y maneje su formulario. Una vez hecho esto, asocie la página en la que se debe mostrar el formulario con la plantilla de la página y, a continuación, su ruta de acción es simplemente "".

    
respondido por el Mark Kaplun 21.05.2013 - 14:05

Lea otras preguntas en las etiquetas