Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2014, 15:49
MeDxEc
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 11 años
Puntos: 2
Problemas intentando procesar formulario en la misma página

Buenas tardes a todos, tengo un problema al intentar procesar mi formulario de registro usando como action el "<?=$_SERVER['PHP_SELF']?>".

Aquí mi código:

Código PHP:
  <?php 

    
if (isset($_POST['enviar'])) {

      
$nickname $_POST['nickname'];
      
$nombre $_POST['nombre'];
      
$email $_POST['email'];
      
$pwd $_POST['pwd'];
      
$repwd $_POST['repwd'];

      function 
validar_email($email){
        if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$email)) return true;
        else return 
false;        
      }
      
$sin_espacios count_chars($nickname1);
      if(!empty(
$sin_espacios[50])) { 
        echo 
"El campo <em>nickname</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
      }elseif(empty(
$nickname)) { 
        echo 
"No haz ingresado tu nickname. <a href='javascript:history.back();'>Reintentar</a>";
      }elseif(empty(
$nombre)) { 
        echo 
"No haz ingresado tu nombre. <a href='javascript:history.back();'>Reintentar</a>";
      }elseif (!
valida_email($email)) {
        echo 
"El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
      }elseif (empty(
$pwd)) {
        echo 
"No haz ingresado tu contraseña. <a href='javascript:history.back();'>Reintentar</a>";
      }elseif(
$pwd != $repwd) { 
        echo 
"Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
      }else {        
        
$sql sprintf("SELECT nickname FROM usuarios WHERE nickname='%s'",mysqli_real_escape_string($nickname));
        
$sql2 sprintf("SELECT email FROM usuarios WHERE email='%s'",mysqli_real_escape_string($email));

        
$query mysqli_query($conexion,$sql) or die('Error en query1 '.mysqli_error());
        
$query2 mysqli_query($conexion,$sql2) or die('Error en query2 '.mysqli_error());

        if (
mysqli_stmt_num_rows($query) > 0) {
          echo 
"El nickname elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif (
mysqli_stmt_num_rows($query2)) {
          echo 
"El email elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
        }else{
          
$pwd md5($pwd);          
          
$query3 sprintf("INSERT INTO usuarios (nicknae,nombre,email,password,fecha) VALUES ('%s','%s','%s','%s',NOW())",mysqli_real_escape_string($nickname),mysqli_real_escape_string($nombre),mysqli_real_escape_string($email),mysqli_real_escape_string($pwd))or die('Error en query3 '.mysqli_error());
          
$reg mysqli_query($conexion,$query3);
          if (
$reg) {
            echo 
'Datos ingresados correctamente';
          }else{
            echo 
'Ha ocurrido un error y no se han ingresado los datos ' .mysqli_connect_error();
          }
        }
      }
    }else{

  
?>
    
  <div class="block dark">
        <div class="container">
            <div class="row">
                <div class="span12">
                    <div class="clear-form no-border">                                
                        <form>  
                            <div class="form-heading">
                                <h3 class="header">Registrate</h3>   
                                <hr/>                            
                            </div>  
                            <div class="form-body">
                              <form action="<?=$_SERVER['PHP_SELF']?>" method="post">

                                <span class="form-label">Escribe tu nickname</span>
                                <input type="text" class="input-block-level" name="nickname">

                                <span class="form-label">Escribe tu nombre real</span>
                                <input type="text" class="input-block-level" name="nombre">

                                <span class="form-label">Ingresa tu correo electrónico</span>
                                <input type="email" class="input-block-level" name="email">

                                <span class="form-label">Ingresa tu contraseña</span>
                                <input type="password" class="input-block-level" name="pwd">

                                <span class="form-label">Confirma tu contraseña</span>
                                <input type="password" class="input-block-level" name="repwd">                          
                               
                                <p class="highlight">
                                    Al hacer click en el botón de confirmación estás al tanto de que el contenido de esta web es solo para fines de prueba y/o copia de seguridad del material original. Además nos eximes de cualquier responsabilidad por el uso del material aquí encontrado.
                                </p>                                
                            </div>                                 
                            <div class="form-footer">                               
                                <input type="submit" class="btn btn-large btn-green btn-block" name="enviar" value="Crear">
                                <p class="center">
                                     ¿Ya tienes una cuenta? <a href="../iniciosesion">¡Ingresa!</a>.
                                </p>
                            </div>                                         
                        </form>
                    </div> 
                </div>
            </div>
        </div>         
    </div>

    <?php ?>
Antes de que lo pregunten, el archivo de conexión está al inicio de la página y funciona correctamente así que el fallo no está ahí.

El problema en concreto es que al darle en "crear" se supone que escanea el documento de nuevo (por el PHP_SELF) pero en vez de eso tan solo ignora el código e imprime los valores en la URL como si estuviese usando GET cuando uso POST.

Cualquier ayuda que me puedan dar será bienvenida.