Problemas con session_start()

Uso esta función y me envía errores este bien o mal la información del usuario
{"lat":19.2669105221752,"lng":-99.6211051940918}

1 Respuesta

Respuesta
1
Session_start debes colocarlo antes de mostrar nada en el navegador.
Puedes hacer consultas y operaciones antes de ponerlo, pero no puedes sacar ningún print ni ningún echo porque fallará.
De todas maneras, si dices qué errores da o qué cosas haces antes de session_start, podría indicarte mejor...
Hola,
Te pongo el código completo para que lo cheques:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html version="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="textcontent=html;charset=utf-8"/>
<title>Untitled Document</title>
</head>
<body>
<?
session_start('username');//linea 9
$_SESSION['username'];
if(!isset($_POST['username'])){
header("Location: http://www.decisionesmexico.com");
} else {
$id=mysql_connect("localhost","decisio5_ibc","snakes43");
mysql_select_db("decisio5_mexico",$id);
$consulta = "SELECT * FROM usuarios WHERE username='{$_POST['username']}' AND password = '{$_POST['password']}'";
$datos = mysql_query($consulta, $id);
$numDatos = @mysql_num_rows($datos);
if ($numDatos <= 0) {
echo "Error: usuario o contraseña incorrectos. O usuario no dado de alta.<br>";
} else {$_SESSION['username']=$_POST['username'];
header("Location: http://www.intercambiosybendiciones.net".mysql_result($datos,0,3));// registro 0, campo 3,//linea 22
}
}
?>
</body>
</html>
Y el error que me da con clave o usuario incorrectos es el siguiente:
Warning: session_start() [function. session-start]: Cannot send session cache limiter - headers already sent (output started at /home/decisio5/public_html/validar.php:8) in /home/decisio5/public_html/validar.php on line 9 (este es el error que me da)
Error: usuario o contraseña incorrectos. O usuario no dado de alta. (Este mensaje es correcto ya que el password o el user name están mal)
El error que me da con usuarios y clave correctos es el siguiente:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/decisio5/public_html/validar.php:8) in /home/decisio5/public_html/validar.php on line 9
Warning: Cannot modify header information - headers already sent by (output started at /home/decisio5/public_html/validar.php:8) in /home/decisio5/public_html/validar.php on line 22
Te comento que el mismo script funciona en un host gratuito sin problema alguno pero en el host de mi página me da el error que te comento.
Gracias
Cuco
No funciona en el host gratuito tampoco, lo que pasa es que los warning los tendrán desactivados.
Tienes que poner session_start antes de que le mandes cualquier otra cosa al navegador. Esto incluye el html.
Debes cambiarlo de manera que quede el session_start en la línea 1 del archivo:
<?php session_start('username');//linea 1 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html version="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="textcontent=html;charset=utf-8"/>
<title>Untitled Document</title>
</head>
Realiza ese cambio y comprueba a ver si funciona todo correctamente. Si no funciona, seguimos mirando...
Hola
Al parecer funciono pero me cambio el error por este:
Warning: Cannot modify header information - headers already sent by (output started at /home/decisio5/public_html/validar.php:4) in /home/decisio5/public_html/validar.php on line 17
creo que es el que redirecciona a la pagina que estoy protegiendo con contraseña.
Gracias
Cuco
¿Y cuál es el contenido de validar.php?
El contenido es el mismo script que te puse al principio
Gracias
Ah, vale, quita todo el html, porque si es una página que sólo vas a usar para redireccionar y no mostrar nada, el html que tienes ahí más que servir para nada, molesta.
Te debe quedar así:
<?session_start('username');//linea 9
$_SESSION['username'];
if(!isset($_POST['username'])){
header("Location: http://www.decisionesmexico.com");
} else {
$id=mysql_connect("localhost","decisio5_ibc","snakes43");
mysql_select_db("decisio5_mexico",$id);
$consulta = "SELECT * FROM usuarios WHERE username='{$_POST['username']}' AND password = '{$_POST['password']}'";
$datos = mysql_query($consulta, $id);
$numDatos = @mysql_num_rows($datos);
if ($numDatos <= 0) {
echo "Error: usuario o contraseña incorrectos. O usuario no dado de alta.<br>";
} else {$_SESSION['username']=$_POST['username'];
header("Location: http://www.intercambiosybendiciones.net".mysql_result($datos,0,3));// registro 0, campo 3,//linea 22
}
}
?>
Y es exactamente por lo que te dije antes, tanto con session_start como con header como con muchas otras cosas, no funcionará bien si tienen una salida previa (como ese html) al navegador.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas