Comunidad de diseño web y desarrollo en internet online

Ayuda con formulario de contacto HTML & PHP

Citar            
MensajeEscrito el 28 Oct 2010 10:49 am
Por un lado tengo el formulario en el archivo HTML:

<form method="post" action="contacto.php" id="cForm">
<fieldset>
<label for="posName">Nombre</label>

<input class="input" type="text" size="25" name="posName" id="posName" />


<label for="posEmail">Email</label>

<input class="input" type="text" size="25" name="posEmail" id="posEmail" />


<label for="posRegard">Asunto</label>

<input class="input" type="text" size="25" name="posRegard" id="posRegard" />


<label for="posText">Mensaje</label>

<textarea cols="50" rows="5" name="posText" id="posText" class="textarea"></textarea>


<label for="selfCC">
<!--<input type="checkbox" name="selfCC" id="selfCC" value="send" /> Send CC to self-->
<input type="hidden" name="selfCC" id="selfCC" value="***" />
</label>
<input class="input-submit" type="submit" name="sendContactEmail" id="sendContactEmail" value=" " />
</fieldset>
</form>


Y por el otro tengo el archivo PHP, al que se llama en el HTML:

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+… $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+… ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\… )){
$error.="Ha ingresado un email incorrecto";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ('name','email','message');
$required = array('name','email','message');

$your_email = "[email protected]";
$email_subject = "Nuevo mensaje: ".$_POST['subject'];
$email_content = "nuevo mensaje:\n";

foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != 'subject' && $key != 'company') {
if( empty($_POST[$value]) ) { echo 'Por favor rellene todos los campos'; exit; }
}
$email_content .= $value.': '.$_POST[$value]."\n";
}
}

if(@mail($your_email,$email_subject,$… {
echo 'Mensaje enviado.';
} else {
echo 'Error al enviar mensaje.';
}
}
?>



No sé, que estará pasando pero no me envia los mails, ayudenme por favor!

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Oct 2010 01:05 pm
tienes variables y partes con puntos suspensivos, eos no deberian ser puntos suspensivos, por ejemplo:

Código ActionScript :

if(@mail($your_email,$email_subject,$… {


deberia ser

Código ActionScript :

if(@mail($your_email,$email_subject,$email_content {

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

firefox
Citar            
MensajeEscrito el 28 Oct 2010 01:23 pm
Tienes razón, pero acabo de revisarlo y estaba bien..Se ve que al pegarlo aquí se ha puesto los puntos suspensivos, no se por qué...Es algo que se hizo automáticamente aquí.

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Oct 2010 02:14 pm
Quita el @ delante de mail() para que puedas ver el mensaje de error que está generando la función.
Por otro lado ¿estás seguro que el hosting tiene habilitada la función mail()?. Y si estás probando en tu máquina ¿tienes instalado y configurado un servidor SMTP?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Oct 2010 04:23 am

El error que me da en la consola de errores es el siguiente:


pos.responseXML is null
El archivo en cuestion sería el siguiente js

xmlhttp.js


Aquí va el código:



var pos; // variable for posting information
function loadXMLPosDoc(url,posData) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
pos = new XMLHttpRequest();
pos.onreadystatechange = processPosChange;
pos.open("POST", url, false);
pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
pos.send(posData);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
pos = new ActiveXObject("Microsoft.XMLHTTP");
if (pos) {
pos.onreadystatechange = processPosChange;
pos.open("POST", url, false);
pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
pos.send(posData);
}
}
}

function grabPosXML (tagName) {
return pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
}

function processPosChange() {
// page loaded "complete"
if (pos.readyState == 4) {
// page is "OK"
if (pos.status == 200) {
if ( grabPosXML("posStatus") == 'NOTOK' ) {
alert('Hubo un problema al enviar E-mail. Por favor, vuelva a interntarlo en unos minutos');
}
}
}
}


También por otro lado, si puede ayudar de algo, les comento que tengo el el directorio js, un archivo contact.js con el siguiente código:



function isEmailAddr(email)
{
var result = false;
var theStr = new String(email);
var index = theStr.indexOf("@");
if (index > 0)
{
var pindex = theStr.indexOf(".",index);
if ((pindex > index+1) && (theStr.length > pindex+1))
result = true;
}
return result;
}

function validateFields() {
var frmEl = document.getElementById('cForm');
var posName = document.getElementById('posName');
var posEmail = document.getElementById('posEmail');
var posRegard = document.getElementById('posRegard');
var posText = document.getElementById('posText');
var strCC = document.getElementById('selfCC');
var whiteSpace = /^[\s]+$/;
if ( posText.value == '' || whiteSpace.test(posText.value) ) {
alert("Please fill field.");
}
else if (posEmail.value.length<1){
alert("Please enter e-mail address.");
}
else if (isEmailAddr(posEmail.value)==false){
alert("Please enter valid e-mail address");
}
else if ( posEmail.value == '' && strCC.checked == true ) {
alert("Why are you trying to CC yourself without an email?");
alert("Just for that...");
alert("I\'m Clearing all the fields!");
frmEl.reset();
alert("There. Satisified.");
alert("Now start over!");
posName.focus();
}
else {
sendPosEmail();
}
}
function sendPosEmail () {
var success = document.getElementById('emailSuccess');
var posName = document.getElementById('posName');
var posEmail = document.getElementById('posEmail');
var posRegard = document.getElementById('posRegard');
var posText = document.getElementById('posText');
var strCC = document.getElementById('selfCC').value;
var page = "scripts/xmlHttpRequest.php?contact=true&xml=true";

showContactTimer(); // quickly begin the load bar
success.style.display = 'none'; // hide the success bar (incase this is a multi-email

// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
var str1 = posName.value;
str1 = str1.replace(/&/g,"**am**");
str1 = str1.replace(/=/g,"**eq**");
str1 = str1.replace(/\+/g,"**pl**");
var str2 = posEmail.value;
str2 = str2.replace(/&/g,"**am**");
str2 = str2.replace(/=/g,"**eq**");
str2 = str2.replace(/\+/g,"**pl**");
var str3 = posRegard.value;
str3 = str3.replace(/&/g,"**am**");
str3 = str3.replace(/=/g,"**eq**");
str3 = str3.replace(/\+/g,"**pl**");
var str4 = posText.value;
str4 = str4.replace(/&/g,"**am**");
str4 = str4.replace(/=/g,"**eq**");
str4 = str4.replace(/\+/g,"**pl**");

var stuff = "selfCC="+strCC+"&posName="+str1+"&posEmail="+str2+"&posRegard="+str3+"&posText="+str4;
loadXMLPosDoc(page,stuff)
}
function showContactTimer () {
var loader = document.getElementById('loadBar');
loader.style.display = 'block';
sentTimer = setTimeout("hideContactTimer()",6000);
}

function hideContactTimer () {
var loader = document.getElementById('loadBar');
var success = document.getElementById('emailSuccess');
var fieldArea = document.getElementById('contactFormArea');
var inputs = fieldArea.getElementsByTagName('input');
var inputsLen = inputs.length;
var tAreas = fieldArea.getElementsByTagName('textarea');
var tAreasLen = tAreas.length;
// Hide the load bar alas! Done Loading
loader.style.display = "none";
success.style.display = "block";
success.innerHTML = '<strong style="color:red;">'+grabPosXML("confirmation")+'</strong>';
// Now Hijack the form elements
for ( i=0;i<inputsLen;i++ ) {
if ( inputs[i].getAttribute('type') == 'text' ) {
inputs[i].value = '';
}
}
for ( j=0;j<tAreasLen;j++ ) {
tAreas[j].value = '';
}
}

function ajaxContact() {
var frmEl = document.getElementById('cForm');
addEvent(frmEl, 'submit', validateFields, false);
frmEl.onsubmit = function() { return false; }
}
addEvent(window, 'load',ajaxContact, false);

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Nov 2010 09:51 am
Bueno...está complicado eh....
^^

Aquí tengo un PHP nuevo, a ver si con este me pueden orientar en qué puedo estar haciendo mal...


--------------------------------------------
contacto.html
--------------------------------------------

<form method="post" action="contacto.php" id="cForm">
<fieldset>
<label for="posName">Nombre</label><br />
<input class="input" type="text" size="25" name="posName" id="posName" /><br /><br />
<label for="posEmail">Email</label><br />
<input class="input" type="text" size="25" name="posEmail" id="posEmail" /><br /><br />
<label for="posRegard">Asunto</label><br />
<input class="input" type="text" size="25" name="posRegard" id="posRegard" /><br /><br />
<label for="posText">Mensaje</label><br />
<textarea cols="50" rows="5" name="posText" id="posText" class="textarea"></textarea><br /><br />
<label for="selfCC">
<!--<input type="checkbox" name="selfCC" id="selfCC" value="send" /> Send CC to self-->
<input type="hidden" name="selfCC" id="selfCC" value="xxx" />
</label>
<input class="input-submit" type="image" name="sendContactEmail" id="sendContactEmail" value=" " />
</fieldset>
</form>
</div>


--------------------------------------------
contacto.php
--------------------------------------------
<?php
//If the form is submitted
if(isset($_POST['submitted'])) {

//Check to see if the honeypot captcha field was filled in
if(trim($_POST['checking']) !== '') {
$captchaError = true;
} else {

//Check to make sure that the name field is not empty
if(trim($_POST['contactName']) === '') {
$nameError = 'You forgot to enter your name.';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}

//Check to make sure sure that a valid email address is submitted
if(trim($_POST['email']) === '') {
$emailError = 'You forgot to enter your email address.';
$hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$emailError = 'You entered an invalid email address.';
$hasError = true;
} else {
$email = trim($_POST['email']);
}

//Check to make sure that the name field is not empty
if(trim($_POST['subject']) === '') {
$subjectError = 'You forgot to enter your subject.';
$hasError = true;
} else {
$subject = trim($_POST['subject']);
}
//Check to make sure comments were entered
if(trim($_POST['comments']) === '') {
$commentError = 'You forgot to enter your comments.';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}

//If there is no error, send the email
if(!isset($hasError)) {

$info_email = get_option('CT_info_email');
$emailTo = $info_email;
$subject = $subject;
$sendCopy = trim($_POST['sendCopy']);
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
$headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

mail($emailTo, $subject, $body, $headers);

if($sendCopy == true) {
$subject = $subject;
$headers = 'From: Your Name <[email protected]>';
mail($email, $subject, $body, $headers);
}

$emailSent = true;

}
}
} ?>

-------------------------------------------------

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Nov 2010 12:17 pm
Los campos que se verifican en contacto.php no se corresponden con los inputs que están en el formulario de contacto.html.
Como leí por aquí en alguna parte: copiar y pegar no es programar.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Nov 2010 12:37 pm
No es muy útil ese tipo de respuesta, no crees? No voy a contratar a un programador, ya es suficiente con lo que pagué por un template. Si vino con un pequeño error no es justificable contratar a uno...Cuanto me puede cobrar un programador para resolver este inconveniente y cuánto puedo tardar yo en recibirme como programador para resolver esto? Por eso es que estpy acudiendo a foros de ayuda, responder con altanería no es ayudar.

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Nov 2010 02:44 pm
Yo creo que sí es muy útil.
Tus problemas de dinero no son mi asunto ni éste es lugar para ventilarlos. No te confundas, una cosa es pedir y dar ayuda, otra cosa es pretender que los demás te hagan el trabajo... Habrá gente que lo haga gratis, pero yo no soy uno de ellos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Nov 2010 02:54 pm
Nadie te pidió ayuda a vos. Si no querés "hacer el trabajo" de otros gratis, estás muy desubicado acá y además perdiendo el tiempo, porque acá no creo que consigas trabajo remunerado. Y te reitero que no es útil el tipo de respuesta que acabas de darme, a pesar de que sigas obstinado a decir lo contrario.Además tenés un concepto de brindar ayuda muy equivocado y resentido. Y no vine con la intencipon de pedir ayuda, no de que me hagan un trabajo, y no te estoy poniendo un arma en la cabeza para que me ayudes, ni para que me hagas un trabajo.

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Nov 2010 08:14 pm
No necesito que nanie me pida ayuda para simplemente darla. ¿Y de dónde has sacado que aquí estoy buscando trabajo remunerado?.

Yo sigo creyendo que mi respuesta es muy útil, y decir las cosas una vez no es ser obstinado, es simplemente responder a lo que se me dice. Tus opiniones acerca de mi concepto de brindar ayuda no me interesa. Y no es verdad que no has venido a pedir ayuda, el título de este tema dice explícitamente que estás buscando ayuda. Y te repito, no necesito ni de tus amenazas ni de tus pataleos para brindar ayuda, ni las de nadie.

Si mi respuesta a tu problema no te satisface, simplemente la ignoras y sigues adelante, no hay ninguna necesidad de armar escándalo y ni de poner calificativos. Aquí yo no soy ni el único, ni el mejor ni el más especial de los participantes frecuentes ni me voy a poner a llorar solo porque a ti te parece que mis respuestas no te son útiles.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Nov 2010 08:47 pm
WTF!!! muy mal!!! pero muy mal!!!
1ro. futurebydesign Mete ese código entre tag de código... ¬¬
2do. DriverOp se tomo la molestia de aclararte algo! se cortes
3ro. Debes tomarte la molestia y leer el código de tu template y ir corrigiendo lo que veas o te sugieran.
4to. comportaos o.... :punal:
5to. si copiaste y pegaste..... no llegaras muy llejos

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

chrome
Citar            
MensajeEscrito el 04 Nov 2010 10:02 pm
Ah, listo, sin palabras...DriverOp te fue a llorar o lo defiendes porque lleva más tiempo aaquí que yo? Se tomó la molestia de aclarame algo? Me aclaró algo que no me sirve su cometario denota altanería al decir que copiar y pegar no es programar. Y te aclaro a tí que no copié y pegué nada, solo traigo aquí el código del template QUE COMPRÉ, y necesito un mano. Si no hay nadie capacitado para decirme que hay mal en estos códigos solo abstengase a comentar y listo. Resolveré esto con un programador que tengo a dos cuadras, solo que no lo quería molestar porque es una persona muy ocupada.

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Nov 2010 10:16 pm
Cuando dije esto: "Y no vine con la intencipon de pedir ayuda, no de que me hagan un trabajo, y no te estoy poniendo un arma en la cabeza para que me ayudes, ni para que me hagas un trabajo. "

Quise decir:
"YO VINE con la intencion de pedir ayuda, no de que me hagan un trabajo, y no te estoy poniendo un arma en la cabeza para que me ayudes, ni para que me hagas un trabajo. "

Desde ya que vine con la intención de pedir ayuda, pero no de que me hagan un trabajo, como vos decías....

Decías: "¿Y de dónde has sacado que aquí estoy buscando trabajo remunerado?."
Y....Si te molesta ayudar y tomás que mi consulta es pedir que otro me haga un trabajo, asumo que sentís que te estoy pidiendo que me hagas un trabajo sin que te pague, por eso digo que debés estar buscando que se te pague, y como no se te paga no estás dipuesto a dar una ayuda en este caso. Solo me hiciste una pequeña aclaración que, desde ya, ya la he notado.

Pero ya, mi intención no es ponerme a debatir con vos, porque se pone muy tedioso. Dejemos lugar a otras personas a comentar y no llenemos más este post con nuestra conversación, además de perder el tiempo en una discución sin sentido.

Por futurebydesign

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Dic 2011 07:55 pm
Al final no dijeron nada productivo, solo fue un alboroto de niñitas... (no intento ofender a nadie, pero maduren). Deberian borrar esta DISCUSION que no ayuda a nadie... :(

Por billyLH

19 de clabLevel



Genero:Masculino  

Puerto Colombia, Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.