Saludos amig@s de fdw,
He realizado un formulario de contacto que se valida con funciones php (utilizando la libreria XAJAX en su versión 6).
En localhost (entorno de desarrollo: ApacheFriends XAMPP version 1.7.7) funciona de lujo.
Muestro código de formulario a continuación:
Código HTML:
<form id='formContacte' name='formContacte' method='post' action='app/contacte'>
<div id='logoMipe'><img src='img/logo.png' /></div>
<fieldset>
<legend>Formulario de contacto</legend>
<table cellspacing='8' cellpadding='8' border='0'>
<caption><a href='src/inicio'>Volver al contenido</a> * Todos los campos son necesarios</caption>
<tr>
<td>
* Nombre:
</td>
<td>
<input class='' type='text' name='nom' id='nom' value='' maxlength='' size='50' />
</td>
</tr>
<tr>
<td>
* Primer apellido:
</td>
<td>
<input class='' type='text' name='cognom1' id='cognom1' value='' maxlength='' size='50' />
</td>
</tr>
<tr>
<td>
* Segundo apellido:
</td>
<td>
<input class='' type='text' name='cognom2' id='cognom2' value='' maxlength='' size='50' />
</td>
</tr>
<tr>
<td>
* Em@il:
</td>
<td>
<input class='' type='text' name='email' id='email' value='' maxlength='' size='50' />
</td>
</tr>
<tr>
<td>
* Teléfon/Móvil:
</td>
<td>
<input class='' type='text' name='telefon' id='telefon' value='' maxlength='9' size='50' />
</td>
</tr>
<tr>
<td>
* Su consulta:
</td>
<td>
<br /><textarea class='' name='consulta' id='consulta' rows='10' cols='50'></textarea>
</td>
</tr>
<tr>
<td colspan='2'>
<input type='hidden' name='enviat' id='enviat' value='' />
<input style='display:block;' type='button' class='butons' name='btSubmitFormContacte' id='btSubmitFormContacte' value='Enviar mi consulta' onclick="xajax_ValidarFormContacte(xajax.getFormValues('formContacte'));" />
</td>
</tr>
</table>
</fieldset>
</form>
Aquí el código PHP que como función XAJAX, valida y ejecuta el resultado de la validación.
Código PHP:
function ValidaFormulari($form){
$nom = $form['nom'];
$cognom1 = $form['cognom1'];
$cognom2 = $form['cognom2'];
$nomComercial = $form['nomComercial'];
$personaContacte = $form['personaContacte'];
$telefon = $form['telefon'];
$email = $form['email'];
$consulta = $form['consulta'];
$tipusClient = $form['tipusClient'];
// Validació
$error = false;
$falta = "";
$tags = SetTagsFormulari();
// Segons el tipus de client, validaré uns camps o altres
if($tipusClient == "particular"){
if(Smap::ValidaBlancs($nom) != false){
if($nom == ""){
$error = true;
$falta .= MontaError("null", $tags[0]);
}
}else{
$error = true;
$falta .= MontaError("format", $tags[0]);
}
if(Smap::ValidaBlancs($cognom1) != false){
if($cognom1 == ""){
$error = true;
$falta .= MontaError("null", $tags[1]);
}
}else{
$error = true;
$falta .= MontaError("format", $tags[1]);
}
if(Smap::ValidaBlancs($cognom2) != false){
if($cognom2 == ""){
$error = true;
$falta .= MontaError("null", $tags[2]);
}
}else{
$error = true;
$falta .= MontaError("format", $tags[2]);
}
}else{
if(Smap::ValidaBlancs($nomComercial) != false){
if($nomComercial == ""){
$error = true;
$falta .= MontaError("null", $tags[3]);
}
}else{
$error = true;
$falta .= MontaError("format", $tags[3]);
}
if(Smap::ValidaBlancs($personaContacte) != false){
if($personaContacte == ""){
$error = true;
$falta .= MontaError("null", $tags[4]);
}
}else{
$error = true;
$falta .= MontaError("format", $tags[4]);
}
}
if(Smap::ValidaBlancs($telefon) != false){
if($telefon == ""){
$error = true;
$falta .= MontaError("null", $tags[5]);
}else{
if(Smap::FormatTelefon($telefon) != true){
$error = true;
$falta .= MontaError("format", $tags[5]);
}
}
}else{
$error = true;
$falta .= MontaError("format", $tags[5]);
}
if(Smap::ValidaBlancs($email) != false){
if($email == ""){
$error = true;
$falta .= MontaError("null", $tags[6]);
}else{
if(Smap::GetValidacioEmail($email) == false){
$error = true;
$falta .= MontaError("format", $tags[6]);
}
}
}else{
$error = true;
$falta .= MontaError("format", $tags[6]);
}
if($consulta == ""){
$error = true;
$falta .= MontaError("null", $tags[7]);
}
$cadenaForm = $nom."\n";
$cadenaForm .= $cognom1."\n";
$cadenaForm .= $cognom2."\n";
$cadenaForm .= $telefon."\n";
$cadenaForm .= $email."\n";
$cadenaForm .= $consulta."\n";
$xr = new xajaxResponse();
if($error == true){
$xr->alert(utf8_encode($falta));
}else{
$xr->script("document.forms.formContacte.submit();");
}
return $xr;
}
Esta función emplea dos funciones adicionales para cuestiones de organizar datos y acabados de interface de usuario en pantalla
Auxiliar 1
Código PHP:
function MontaError($error, $camp){
if(Sistema::GetIdioma() == "cat"){
$res = ($error == "null")
? "ERROR: El camp ".$camp." és necesari\n"
: "ERROR: Format incorrecte del camp ".$camp."\n";
}elseif(Sistema::GetIdioma() == "esp"){
$res = ($error == "null")
? $miss = "ERROR El campo ".$camp." es necesario\n"
: $format = "ERROR: formato incorrecto del campo ".$camp."\n";
}else{
$res = ($error == "null")
? $miss = "ERROR: The ".$camp." field is required\n"
: $format = "ERROR: malformed ".$camp." field\n";
}
return $res;
}
Auxiliar 2
Código PHP:
function SetTagsFormulari(){
if(Sistema::GetIdioma() == "esp"){
$array = array("Nombre","Primer apellido","Segundo apellido","Nombre comercial","Persona de contacto","Teléfono","Email","Consulta");
}elseif(Sistema::GetIdioma() == "cat"){
$array = array("Nom","Primer cognom","Segon cognom","Nom comercial","Persona de contacte","Telèfon","Email","Consulta");
//$array = array("Name","Surname","Second surname","Telephone","Email","Consultation");
}else{
$array = array("Name","Surname","Second surname","Trade name","Contact","Telephone","Email","Consultation");
}
return $array;
}
Resumiendo:
En http://localhost/miProyecto
Al pulsar el botón del formulario, se comprueba:
1. Si el campo está o no vacío
2. Si está rellenado con caracteres aceptables.
.....y funciona correctamente
peeeeero, cuando lo suba al servidor de hosting y lo ejecuto desde
http://www.MiProyecto.es
Ahí empezamos con sorpresas.
1. Se salta la captura de los tres primeros campos del formulario, así, por la cara.
2. En la captura de un campo, me devuelve (independientemente de lo que escriba en el, "{".
Le he dado miles de vueltas y no se por donde cogerlo.
¿Puede ser que los servidores de hosting en entorno de linux pateen la libreria de xajax ?
¿A alguién le ha ocurrido algo similar?
¿Habéis podido solucionarlo?
Gracias de antemano a tod@s !!!