Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2009, 12:55
Bam_Margera
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 10 meses
Puntos: 13
Exclamación problema con formulario el $_POST nunca coge valor...

Muy buenas,

Quería plantear un problemilla...

estoy utilizando esta 'mini libreria'

Código PHP:
function llamarasincrono (urlid_contenedor)
{
    var 
pagina_requerida false;
    if (
window.XMLHttpRequest)
    {
        
// Si es Mozilla, Safari etc
        
pagina_requerida = new XMLHttpRequest ();
    } else if (
window.ActiveXObject)
    {
        
// pero si es IE
        
try 
        {
            
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (
e)
        {
            
// en caso que sea una versión antigua
            
try
            {
                
pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (
e)
            {
            }
        }
    } 
    else
    return 
false;
    
pagina_requerida.onreadystatechange = function ()
    {
        
// función de respuesta
        
cargarpagina (pagina_requeridaid_contenedor);
    }
    
pagina_requerida.open ('GET'urltrue); // asignamos los métodos open y send
    
pagina_requerida.send (null);
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina (pagina_requeridaid_contenedor)
{
    if (
pagina_requerida.readyState == && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1)){
        
document.getElementById (id_contenedor).innerHTML pagina_requerida.responseText;
    }
    else if(
pagina_requerida.readyState == 1){
        
//    ...en caso contrario, le diremos al usuario que los estamos cargando:
      
document.getElementById (id_contenedor).innerHTML '<br></br><br></br><div align="center"><p>Cargando...</p<img src="./js/ajax_loader.gif" align="absmiddle" /> <p>';
    }

Bien, la librería funciona perfectamente. El caso es que en un formulario: hago

Código PHP:
<form name="form1" method="post" action="javascript:llamarasincrono('./php/sesiones/reg.php', 'contenidos');">
  <
TABLE>
    <
TBODY>
      <
TR>
        <
TD align="right">Nombre de usuario:
          <
INPUT maxLength="25" size="15" name="username">
        </
TD>
      </
TR>
      <
TR>

..... 
El formulario está en la misma página que la comprobación, en reg.php, siguiente:

Código PHP:
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$cpassword $_POST["cpassword"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$cpassword) {
            echo 
"Las contraseñas no coinciden";
        }else{
        
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT alias FROM usuarios WHERE alias='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            
            if (
$email_exist>0|$username_exist>0) {
                echo 
"EL nombre de usuario o la cuenta de correo estan ya en uso";
            }else{
            
//Todo parece correcto procedemos con la inserccion
                
$query "INSERT INTO usuarios (alias, pass, email) VALUES('$username','$password','$email')";
                echo 
"Almost perfection";
                
mysql_query($query) or die(mysql_error());
                echo 
"Perfection";
            }
        }
    }
}else {
    echo 
"<p>whats...</p>";

entonces siempre me enra en 'whats'.... Lo gracioso es que si pongo


Código PHP:
<form name="form1" method="post" [B]action="reg.php"[/B]>.... 
funciona bien, pero claro, no me lo carga en el <div id="contenidos">

Es posible que al pasar los valores del formulario de la manera que lo hago, se pierdan los $_POST ? si es así, cómo podría hacerlo para tener el 'post' en el div contenido?

muchas gracias de antemano!!!