Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2012, 12:07
neobcn
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->home = "BCN";
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
La versión 6 de Xajax falla en servidor hosting

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>&nbsp;&nbsp;&nbsp;* 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 !!!