Foros del Web » Programando para Internet » PHP »

error en "conexion.php" sistema de registro

Estas en el tema de error en "conexion.php" sistema de registro en el foro de PHP en Foros del Web. Hola, soy nuevo en este foro. Un amigo me ayudo a crear un sistema de registro, cuando lo probé en el host, me sale este ...
  #1 (permalink)  
Antiguo 03/04/2012, 12:19
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta error en "conexion.php" sistema de registro

Hola, soy nuevo en este foro.

Un amigo me ayudo a crear un sistema de registro, cuando lo probé en el host, me sale este error (en el archivo "error_log"):


PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/prueba/public_html/noticias.php:6) in /home/prueba/public_html/conexion.php on line 8


Lo que sucede en la web es que cuando inicio sesion y entro a otro enlace de la misma web, automaticamente se cierra mi cesion y tengo que volver a conectarme.


Este es el archivo conexion.php (line 8 es donde está el "session_start();")



<?php
$nombre_server[1] = 'localhost';
$nombre_user[2] = 'prueba';
$password[3] = 'XXXXX';
$nombre_db[4] = 'XXXXX';
$conectar = @mysql_connect($nombre_server[1],$nombre_user[2],$password[3]) or exit('Datos de conexion incorrectos.');
mysql_select_db($nombre_db[4]) or exit('No existe la base de datos.');
session_start();
/*Función que se encarga de eliminar codigo malicioso de las variables.*/
function limpiar($var)
{
$var = trim($var);
$var = htmlspecialchars($var);
$var = str_replace(chr(160),'',$var);
return $var;
}

/*Función que se encarga de validar el email de registro para que sea correcto.*/
function validar_email($email){
$mail_correcto = 0;
//compruebo unas cosas primeras
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@"))
{
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," ")))
{//miro si tiene caracter .
if (substr_count($email,".")>= 1)
{//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminaci?n del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) )
{//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != ".")
{
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return 1;
else
return 0;
}

/*Funcion que se encarga de validar si el usuario esta registrado en el sistema*/
function user_login()
{
if(!$_SESSION['id'])
{

exit ("Solo usuarios registrados, <a href='javascript:history.back(-1)'>Volver</a><br />");
}
}
?>



Por favor, quisiera que me ayuden con este pequeño problema.
  #2 (permalink)  
Antiguo 03/04/2012, 12:22
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: error en "conexion.php" sistema de registro

hola

siempre que uses session_start(); debe ser la primera linea de tu archivo php.
  #3 (permalink)  
Antiguo 03/04/2012, 19:53
 
Fecha de Ingreso: diciembre-2011
Ubicación: Lima
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: error en "conexion.php" sistema de registro

EDITADO:

------

EL TEMA ESTÁ RESUELTO!!!

El problema es que tenía codigos html antes del php en el archivo login.php. (((Era por eso que aunque ponia el session_start(); en la primera linea de conexion.php que estaba puesto como include, no funcionaba)))
Lo solucioné moviendo el "session_start();" del archivo "conexion.php" al "login.php" poniendo en la primera linea, como dijo informacionsys, antes del codigo html, quedaria asi el archivo login.php:


<? session_start(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<?php
include("conexion.php");

if(isset($_POST['login']))
{
$nick= $_POST['nick'];
$pass= $_POST['pass'];
$b_user=mysql_query("SELECT * FROM usuarios WHERE nick='$nick'");
...
...
...
?>
</body>
</html>


Como ven, esta totalmente al inicio del ARCHIVO y no al inicio del CODIGO php donde hace la conexion.
Tambien hago aclarar que el error en el archivo error_log ya no aparece.

Muchas Gracias!

Pueden cerrar el tema.

------

Última edición por freddie_alvarez; 18/04/2012 a las 16:27

Etiquetas: html, mysql, registro, sistema, variables, usuarios
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 04:33.