entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

porque me salen estos errores en PHP?

Hola a todos :) estoy desarrollando un sistema web php okey todo funciona ala perfeccion pero hace unas horas me salio este error en la login mysql-php?

no entiendo bien? porque me sale talvez como veo el error" es porque no inicio la
"SESSION_STAR() " pero la pongo y me sale otro error y la quito y se me pone el error de la imagen.

bueno pero lo mas raro es que inicia todo bien y funciona todo bien sin error pero ese error no entiendo porque me sale?

ESTE ES EL CODIGO DE AQUI VIENE EL ERROR:


<?php

if(Session::getUID()=="") {
$user = $_POST['mail'];
$pass = sha1(md5($_POST['password']));

$base = new Database();
$con = $base->connect();
 $sql = "select * from user where (email= \"".$user."\" or username= \"".$user."\") and password= \"".$pass."\" and is_active=1";
//print $sql;
$query = $con->query($sql);
$found = false;
$userid = null;
while($r = $query->fetch_array()){
    $found = true ;
    $userid = $r['id'];
}

if($found==true) {
    session_start();
//  print $userid;
    $_SESSION['user_id']=$userid ;
//  setcookie('userid',$userid);
//  print $_SESSION['userid'];
    print "Cargando ... $user";
    print "<script>window.location='index.php?view=home';</script>";
}else {
    print "<script>window.location='index.php?view=login';</script>";
}

}else{
    print "<script>window.location='index.php?view=home';</script>";

}
?>

CAPTURA DEL ERROR
[URL=http://www.subirimagenes.com/fotos-error-9577738.html][IMG]http://s2.subirimagenes.com/fotos/previo/thump_9577738error.png[/IMG][/URL]

CAPTURA DEL SISTEMA(noten que funciona bien) ?
<a href='http://www.subirimagenes.com/fotos-captura-9577741.html'><img src='http://s2.subirimagenes.com/fotos/previo/thump_9577741captura.png' alt='subir imagenes' border='0'></a>

DONDE PODRIA ESTAR EL ERROR?

3votos

Peter comentado

Pusiste mal los enlaces a las imágenes y a un tamaño que no se puede ni ver el error.

¿Porque no pones el error en código para poder leerlo?

2 Respuestas

2votos

magarzon Puntos30650

Hola.

Para empezar, no te da exactamente un error, si no una "notificación", que no es exactamente un error si no simplemente un aviso de que hay algo que puede no estar del todo bien.

Para evitar que te salga, debes ejecutar esta línea de código, para que te avise de todos los errores menos las notificaciones:

error_reporting(E_ALL ^ E_NOTICE);

Por otro lado, no sabemos lo que hace ese método Session::getUID() que llamas al principio, ¿es posible que dentro de esa clase y de ese método se esté inicializando la sesión y por eso luego te dé el NOTICE cuando la intentar inicializar de nuevo con el session_start()? ¿Por qué no usas el método estándar de php, session_id()?

De todas formas, no hay nada "malo" en principio, la llamada a session_start la segunda vez simplemente no hace nada, solo lanzar ese NOTICE, que se puede ignorar como ya te he indicado.

0voto

Gilberto comentado

Hola magarzon gracias por tu respuesta en estos dias,le pregunte a un profesor(ing.en sistemas computacionales) me digo lo mismo que lo ignorara pórque era una notificacion no un error que no sucede nada.

:) gracias por su respuesta :)

2votos

Leonardo-Tadei Puntos227320

Hola @Gilberto,

el error te aparece porque estás llamando a session_start() dos veces. La primera vez funciona como debe, pero la segunda vez que la inciciás en widget-default.php, falla.

Si bien es una notificación y el software sigue funcinando, corresponde solucionar el problema, ya que aunque no lo muestres en la pantalla, el mensaje irá al log de errores, lo que aumenta la carga del sistema... además que dejar un error sin corregir no es nada profesional ;-)

La forma de solucionarlo es hacer un seguimiento del código de esa página, y ver por qué carga dos veces... posiblemente tengas dos include de la misma cosa y se soluciona nada maś que cambiando por include_once() para que no repita el código.

Una forma rápida de gestionar el error, es que en widget-default.php que es el 2do que carga, pongas un IF preguntado si la sesión está iniciada, y solo la iniciás en caso contrario. Algo del tipo:

...
if(session_id() == ''){
   session_start()
}
...

Saludos cordiales!

PD: sobre el profesor que te dijo que ignoraras las notificaciones en PHP, me reservo los comentarios...

0voto

magarzon comentado

Aunque estoy de acuerdo en que debería buscar la fuente del error, ya que aunque en este caso en principio no provocaría ningún efecto (la segunda llamada al session_start no hace nada), sí que podría estar ejecutándose doblemente otro código que sí que pueda tener efectos colaterales, si establece el nivel de log de errores como he indicado, ignorando los NOTICE, no habrá sobrecarga del sistema, pues ningún log de este nivel será guardado en ningún sitio.

0voto

ankeorum comentado

Estoy con @Leonardo-Tadei, a pesar de que sea un simple "notice" deberías solventarlo así como todos los que te aparezcan. No es sencillo cuando tienes un software PHP con 100.000 líneas de código y lo más sencillo es dejarlo como está "ya que funciona" pero es poco profesional no depurar todos los notice y warning que tengas.

SaludoS!

0voto

magarzon comentado

@ankeorum Como ya dije en mi anterior comentario, no está de más buscar la fuente del error, e intentar solventarlo, o al menos saber por qué ocurre, pero como tú dices, si tienes un software con 100.000 líneas, es una tarea infructuosa, pues un NOTICE puede saltar simplemente por usar funciones obsoletas, y si es un software legacy y/o antiguo que no te planteas migrar a PHP 7.0 (donde se van a cepillar todas o casi todas las funciones obsoletas), pues no merece la pena el esfuerzo.

0voto

Gilberto comentado

gracias por tu comentario :) me ayudo de mucho y ablando de mi profesor ajajaja otro profesor pero que tiene una maestria en ciencias la informatica(algo asi) me digo que buscara el error aunque fuera tedioso

PD: el profesor(maestria) me digo

" no es nada profesional degar un error " y gracias por tu comentario :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta