Foros del Web » Programando para Internet » PHP »

Problema con header

Estas en el tema de Problema con header en el foro de PHP en Foros del Web. Buenas, tengo un php mu facilito para insertar los datos del usuario en la bd. Antes de insertarlo compruebo que no se repita el user ...
  #1 (permalink)  
Antiguo 05/06/2010, 17:04
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema con header

Buenas, tengo un php mu facilito para insertar los datos del usuario en la bd. Antes de insertarlo compruebo que no se repita el user ni el email. Si se repite les mando un alert diciéndolo y les mando al index. si no esta repetido se registra correctamente y muestro alert diciendo que se ha registrado correctamente y los mando a la pagina principal.

El problema esta en que al pasar por el header no hace nada mas de código ¿¿porque puede ser? os dejo el código

Un saludo

Código PHP:
<?php

include('conexion.inc');

$conexion mysql_connect($servidor$usuario$pass);

mysql_select_db ('BDmontiel') or die("No conecta");

$user=$_REQUEST['user'];
$pass=$_REQUEST['pass'];
$nombre=$_REQUEST['nombre'];
$apellidos=$_REQUEST['apellidos'];
$email=$_REQUEST['email'];


$consulta1="SELECT * FROM usuarios WHERE user='$user';";
$use=mysql_query($consulta1,$conexion) or die("No se han podido consultar los datos");


$consulta2="SELECT * FROM usuarios WHERE pass='$pass';";
$pas=mysql_query($consulta2,$conexion) or die("No se han podido consultar los datos");

if (
mysql_num_rows($use)!=0){ 
    
header ("Location: curiosidades.php");
    echo 
"<script type='text/javascript'>alert('Este usuario ya existe')</script>";}
    
elseif(
mysql_num_rows($pas)!=0){ 
    
header ("Location: index.php");
    echo 
"<script type='text/javascript'>alert('Este email ya existe')</script>";}

else{
header ("Location: index.php");

$consulta="INSERT INTO usuarios (user,pass,nombre,apellidos,email) VALUES ('$user', '$pass', '$nombre', '$apellidos', '$email');";

mysql_query($consulta,$conexion) or die('No ha sido posible insertar los datos');

echo 
"<script type='text/javascript'>alert('Usuario registrado con exito')</script>";
    }


?>
El principal problema es que si le meto un usuario que ya existe me dirige a la pagina curiosidades.php como dice el header pero al javascript no le hace ni caso, se lo salta
  #2 (permalink)  
Antiguo 05/06/2010, 17:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con header

es completamente lógico, una redirección Location hace precisamente eso...

cuando se hace una redirección usando header() se detiene el script y redirecciona, no lo habías pensado??

hay que leer el manual... ;)
http://php.net/header
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/06/2010, 17:09
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

ya pero la solucion no esta en poner el header despues porque dice el manual que es lo primero ke hay que poner...
  #4 (permalink)  
Antiguo 05/06/2010, 17:09
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Problema con header

Cita:
Iniciado por pateketrueke Ver Mensaje
es completamente lógico, una redirección Location hace precisamente eso...

detiene el script y redirecciona, no lo habías pensado??
La instrucción no detiene el script, la instrucción hace que el navegador vaya a otra dirección pero el script sigue en ejecución, aunque como bien mencionas, la impresión de mensajes de error se da, aunque es como gritar en el bosque, gritas pero nadie escucha.
  #5 (permalink)  
Antiguo 05/06/2010, 17:11
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

Y otra manera de poder redireccionar y sacar el script a la vez..?
  #6 (permalink)  
Antiguo 05/06/2010, 17:13
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Problema con header

haz la redirección desde javascript también, en lugar de hacerla desde el header.
  #7 (permalink)  
Antiguo 05/06/2010, 17:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con header

Cita:
Iniciado por davidmontiel Ver Mensaje
Y otra manera de poder redireccionar y sacar el script a la vez..?
en todo caso si vas a redireccionar, ¿para que mostrar algo después??

bueno, quizá con un <meta/> o Javascript se puede redireccionar, todo es posible...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 05/06/2010, 17:16
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

en teoria y lo mas facil seria mostar una pagina que pusiera: "Usuario registrado correctamente, puede ingresar desde aqui"

pero lo que queria era mostar directamente el link de la pagina y avisarle que se ha registrado con el alert
  #9 (permalink)  
Antiguo 06/06/2010, 09:19
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

Lo solucione poniendo require_once en vez de header, no es exactamente lo que quiero pero bueno....


Ahora tengo otro problema con las sesiones, cuando inserto usuario y contraseña inicio la sesion y le doy un nombre. Luego le tengo puesto un if para que compruebe si la sesion esta iniciada, si lo esta que muestre "Bienvenido $_SESSION['usuario']" y si no esta pues que muestre de nuevo el cuadro para insertar usuairo y contraseña.


Me funciona con la primera pagina, luego no propaga la sesion o se queda abierta aunque la destruya.

os dejo el codigo:

Sesion.php (Esta pagina comprueba usuario y contraseña e inicia la sesion)

Código PHP:
$consulta="SELECT * FROM usuarios WHERE user='$usuario' AND pass='$password';";

$rs=mysql_query($consulta,$conexion);

if (
mysql_num_rows($rs)!=0){ 
       
//usuario y contraseña válidos 
       //defino una sesion y guardo datos 
    
session_cache_limiter('nocache,private');
    
session_name('usuario');
       
session_start(); 
    
$_SESSION['usuario']=$usuario;
       
session_register("autentificado"); 
       
$autentificado "SI"
       require_once(
'index.php');    
}else { 
       
//si no existe le mando otra vez a la portada 
    
echo "<script type='text/javascript'>alert('Usuario o contrase\u00f1a incorrectos');</script>";
    require_once(
'index.php');
   

index.php (Esta es la pagina principal, tiene un cuadro que pide usuario y contraseña, ademas contiene un panel de usuario para modificar sus datos.)

Código PHP:
/*compruebo si la sesion esta vacia, si esta llena le doy la bienvenida y 
    le ofrezco opciones de panel de usuario y cirre sesion. Si esta vacia le muestro un formulario
    de usuario y contraseña*/
    if (isset($_SESSION['usuario']))
    {
        echo "<div class='sesionabierta'><P>Bienvenido ".$_SESSION['usuario']."</p>";
    echo "<a  class='enlace' href='#'> Panel de usuario</a><br>";
    $conexion=mysql_connect("localhost", "root", "") or die('Fallo en la conexion');

mysql_select_db('BDmontiel',$conexion) or die('Problemas al realizar la conexion');


$consulta="SELECT * FROM usuarios WHERE user='$_SESSION[usuario]';";
$registros=mysql_query($consulta,$conexion) or die("No se han podido insertar los datos");

$registro=mysql_fetch_array($registros); ?>
    <div id="contenedor">  
        <div id="inner"> 
        <span class="enlace" style="position:absolute;right:2%;top:2%;"><input type="button"  style="font-weight:bold;" value="Cerrar"></span>
                                            <br />
                                            <br />
                                            <form action="modificar.php" method="post" enctype="multipart/form-data" name="actualizar">
                                            <center>
                              <table>
                                      <tr>
                                            <td>Usuario&nbsp;&nbsp;&nbsp;</td>
                                            <td><?php echo $registro['user']?>&nbsp;&nbsp;&nbsp;</td><input type="hidden" name="userviejo" value="<?php echo $registro['user']?>"/>
                                            <td >Contrase&ntilde;a&nbsp;&nbsp;&nbsp;</td>
                                            <td ><input type="password" name="passnuevo" value="<?php echo $registro['pass']?>"/></td>
                                                    <input type="hidden" name="passviejo" value="<?php echo $registro['pass']?>"/>
                                      </tr>
                                      <tr>
                                            <td >Nombre</td><td ><input type="text" name="nombrenuevo" value="<?php echo $registro['nombre']?>"/></td>
                                                                    <input type="hidden" name="nombreviejo" value="<?php echo $registro['nombre']?>"/>
                                            <td >Apellidos</td><td ><input type="text" name="apellidosnuevo" value="<?php echo $registro['apellidos']?>"/></td>
                                                                    <input type="hidden" name="apellidosviejo" value="<?php echo $registro['apellidos']?>"/>
                                      </tr>
                                      <tr>
                                            <td >Email</td><td ><?php echo $registro['email']?></td>
                                      </tr>
                                       <tr>
                                            <td></td><td></td><td></td>
                                            <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="boton" value="Registrarse" /></td>
                                       </tr>
                                  </table></center></form></div></div>;
    <?php echo '<img src="images/shutdown.png"><a href="shutdown.php">Cerrar sesion</a></div>';}
El problema viene cuando intento pasar a otra pagina, que ya no me coje la sesion y le tengo puesto para que compruebe

Código PHP:
if (isset($_SESSION['usuario']))
    {
session_start();
        echo 
"<div class='sesionabierta' style='margin-bottom:50px;'><P>Bienvenido ".$_SESSION['usuario']."</p>";
    echo 
"<a href='panel.php'> Panel de usuario</a><br>";
    echo 
'<a href="shutdown.php">Cerrar sesion</a></div>';} 




como puedo propagar bien la sesion??

La finalidad es sencilla, inicio sesion en una pagina y quiero que mientra navega en ella siga identificado con la session.
  #10 (permalink)  
Antiguo 06/06/2010, 09:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con header

no se supone que el session_start() va al comienzo de la pagina??

justo antes de usar variables $_SESSION, y antes de cualquier salida...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 06/06/2010, 09:36
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

mmmmm segun mis apuntes el orden seria este?

session_cache_limiter();
session_name('nombre');
session_start();
  #12 (permalink)  
Antiguo 06/06/2010, 09:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con header

Cita:
Iniciado por davidmontiel Ver Mensaje
mmmmm segun mis apuntes el orden seria este?

session_cache_limiter();
session_name('nombre');
session_start();
bueno, según el manual...
http://www.php.net/manual/en/features.sessions.php

al menos session_start() debe estar antes de usar variables $_SESSION
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 06/06/2010, 09:44
 
Fecha de Ingreso: junio-2010
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con header

session_cache_limiter('nocache,private');
session_name('usuario');
session_start();
$_SESSION['usuario']=$usuario;
session_register("autentificado");

asi lo tengo yo.

Si lo que me falla creo yo es el if que comprueba si la sesion esta iniciada o no...

que tengo puesto if (isset($_SESSION['usuario']))

Etiquetas: header
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:59.