Foros del Web » Programando para Internet » PHP »

Necesito una opinión

Estas en el tema de Necesito una opinión en el foro de PHP en Foros del Web. Estimados amigos necesito su opinión con respecto a un script, hice un script que busca los datos para autentificar usuarios i los encuentra crea la ...
  #1 (permalink)  
Antiguo 04/02/2004, 13:06
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Necesito una opinión

Estimados amigos necesito su opinión con respecto a un script, hice un script que busca los datos para autentificar usuarios i los encuentra crea la sesion, despues en cada pagina que requiere la seguridad recoje la sesion y ve si esta esta correcta si esta permite al usuario navegar tranquilamente si no esta correcta los envia a la pagina de autentificación, el problema es que lo subi a un hosting de prueba y funciono perfecto, al cambiarlo de hosting me da errores y las personas del hosting dicen que es error de codigo lo cual no creo que sea asi y necesito saber si ellos estan en lo correcto porque creo que estan mintiendo:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home1/portalporno/foro/index_foro.php:9) in /home1/portalporno/foro/seguridad.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home1/portalporno/foro/index_foro.php:9) in /home1/portalporno/foro/seguridad.php on line 2

este es el error que da el hosting ahora les muestro el script que hice

este es el de autentificacion

Código PHP:
$string="select * from usuarios where nombre='$usuario' and contrasena='$password'";
$respuesta=mysql_query($string,$link)or die("Error Fatal: ".mysql_error());
if(
mysql_num_rows($respuesta)!=0){
session_start();    
session_register("verificado");     
$verificado="SI";
header ("Location: autentificado.php"); 
}else{    
header("Location: index.php?error=si");

mysql_free_result($respuesta);
mysql_close($link); 
(este es solo la parte del código de autentificacion)

ahora la capa de seguridad

Código PHP:
session_start(); 
$var = isset ($_SESSION["verificado"]); 
if (
$var == FALSE) {     
header("Location: index.php");     
exit(); 

if (
$var == TRUE AND $var != "SI") {     
header("Location: autentificado.php");     
exit(); 

esta es la capa de seguridad y es el script que dicen que tiene problemas dice que el error es en la linea dos que es la parte que dice session_start(), no se que error puede ser creo que puede ser algo de la configuración del servidor de ellos?, bueno agradezco me puedan ayudar a sacar esta duda

  #2 (permalink)  
Antiguo 04/02/2004, 13:49
Avatar de vitxo  
Fecha de Ingreso: septiembre-2003
Ubicación: Valencia
Mensajes: 219
Antigüedad: 14 años, 3 meses
Puntos: 0
El problema está en el uso de las funciones session_register y demás, como bien especifican en la documentación: http://es.php.net/manual/en/function...-register.php.

Usa SÓLO el array $_SESSION en su lugar para recuperar y poner valores en la sesión.
Escribo "sólo" con mayúsculas porque, como también indican en la documentación, no debes mezclar el uso de session_register con llamadas a $_SESSION.

No te lo tomes a mal, pero a veces dan ganas de responder mensajes de esta índole con un RTFM (del inglés, Read The Fucking Manual).

Un saludete y dale caña, vitxo.
  #3 (permalink)  
Antiguo 04/02/2004, 15:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Veamos, el error te dice que has enviado salida en la linea 9 de index_foro.php, y antes de session_start() (y de header() y de setcookie()) no se puede enviar salida al navegador.

Asi que si no envias la salida, solucionas ese error.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 05/02/2004, 10:42
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
ok ahora me da otro error

ok entendido o sea no tanto
cambie los codigos pero aún no me resulta la sesion se crea en una pagina que se llama autentificado que es este su script:

Código PHP:
include("connect.php");
if(
$usuario==""){
echo
"<font face='Arial, Helvetica, sans-serif'>Campo Usuario Vacio</font><br>";
echo
"<a href='index.php' title='Atrás'>Volver</a>";
exit();
}
if(
$password==""){
echo
"<font face='Arial, Helvetica, sans-serif'>Campo Contraseña Vacio</font><br>";
echo
"<a href='index.php' title='Atrás'>Volver</a>";
exit();
}
$string="select * from usuarios where nombre='$usuario' and contrasena='$password'";
$respuesta=mysql_query($string,$link)or die("Error Fatal: ".mysql_error());
if(
mysql_num_rows($respuesta)!=0){
//session_start();    
session_register("verificado");     
$_SESSION["verificado"]="SI";
header ("Location: autentificado.php"); 
}else{    
header("Location: index.php?error=si");

mysql_free_result($respuesta);
mysql_close($link); 
ahora cuando entro a index_foro.php llamo la capa de seguridad tomo la sesion y me envia siempre a index.php cosa que deberia hacer solo si no existiera las sesion o si el valor no fuera el que pido asi quedo seguridad:

Código PHP:
$var $_SESSION["verificado"]; 
if (
$var == FALSE) {     
header("Location: ../rogel/index.php");     
exit(); 

if (
$var == TRUE AND $var == "SI") {     
header("Location: index_foro.php");     
exit(); 

porfavor le agradeceria me dijeran lo que esta mal para poder cambiarlo y asi terminar este trabajo muchas gracias
  #5 (permalink)  
Antiguo 05/02/2004, 11:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Primero haz caso a vitxo .. cuando tengas el código modificado continuamos .. OK?

Lo demás .. no sé como te llegas a complicar tanto .. Si tu guardas en tu variable de sesión "verificado" un "SI" si está autentificado .. Tan sólo:

Código PHP:
$var $_SESSION["verificado"]; 
if (
$var == "SI") {     
header("Location: index_foro.php");     
exit(); 
} else { 
header("Location: ../rogel/index.php");     
exit(); 

Si tu $var no tiene un SI .. me da igual lo que tenga . .par eso se usa el "else" .. Yo busco lo que necesito .. lo demás lo descarto (en ese caso es el "SI" por qué si se autentificó .. defines ese valor a esa variable de sesión ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 05/02/2004 a las 11:40
  #6 (permalink)  
Antiguo 05/02/2004, 12:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Hice caso

Ok cluster hice caso cambie el codigo pero sigue pasandome a la pagina index aun cuando el esta bien logueado estos son los cambios.
La pagina que crea la session.

Código PHP:
$string="select * from usuarios where nombre='$usuario' and contrasena='$password'";
$respuesta=mysql_query($string,$link)or die("Error Fatal: ".mysql_error());
if(
mysql_num_rows($respuesta)!=0){
session_start();    
$_SESSION["verificado"]="SI";
header ("Location: autentificado.php"); 
}else{    
header("Location: index.php?error=si");

mysql_free_result($respuesta);
mysql_close($link); 
Ahora la capa deseguridad:

Código PHP:
$var $_SESSION["verificado"]; 
if (
$var == "SI") {     
header("Location: index_foro.php");     
exit(); 
} else { 
header("Location: ../rogel/index.php");

  #7 (permalink)  
Antiguo 05/02/2004, 13:22
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
cambio

perdon la capa esta asi:

Código PHP:
session_start(); 
$var $_SESSION["verificado"]; 
if (
$var == "SI") {     
header("Location: index_foro.php");     
exit(); 
} else { 
header("Location: ../rogel/index.php");
exit();

ahora pasa lo siguiente se queda buscando por mucho tiempo es como si se quedara pegado el navegador

Última edición por rogel; 05/02/2004 a las 13:24
  #8 (permalink)  
Antiguo 05/02/2004, 13:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa simples "echo" para averiguar por donde se encamina tu flujo del código .. es decir .. si llega al IF() o pasa al else ..

Por lo que comentas .. parece que el redirecionamiento se está efectuando .. tal vez no encuentra la pagina (ruta no correcta) ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 05/02/2004, 14:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Si esto esta pasando ahora ha funcionado bien pero cuando funciono la primera vez tuve que esperar mucho tiempo hasta que finalmente me mostro la página, ahora mismo quise ver la pagina de nuevo creo que llevo mas de media hora esperando que la muestre
pero el codigo esta funcionando
que sera
obs(las paginas estan en un hosting externo)
  #10 (permalink)  
Antiguo 05/02/2004, 14:47
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
A lo otro que queria consultar el require('seguridad.php'), que es la capa de seguridad la puse antes del tags <html> eso podra influenciar en que e demore tanto en realidad quedo asi

<?php
require('seguridad.php');
?>
<html>
  #11 (permalink)  
Antiguo 05/02/2004, 15:48
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
de todas maneras si fuera por ruta le di una absoluta y aun asi se demora mucho y hay vecez que esta funcionando y otras no

<?
session_start();
$var = $_SESSION["verificado"];
if ($var == "SI") {
header("Location: http://www.pagina.cl/foro/index_foro.php");
exit();
} else {
header("Location: ../rogel/index.php");
exit();
}
?>
  #12 (permalink)  
Antiguo 05/02/2004, 16:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si dices que a veces funciona .. y el redireccionamiento es externo .. deberías ver que pasa con esa pàgina .. La parte PHP ya cumple su función y redirecciona ..

Has probado a usar un simple:
echo "al foro" .. o en el else echo "al index" .. para ver si tu código PHP se ejucta rápido y correctamente? (en lugar de los header() por el momento para probar).


Por cierto .. esto:
<?php
require('seguridad.php');
?>
<html>


donde lo haces?

Te lo comento por qué si te das cuenta .. tu rutina o redirecciona a un sitio o a otro .. pero NUNCA se queda en esa página que hagas el include("seguridad.php") ya que redireccinas a otra pagina (y paras la ejecución del scirpt con exit; como debe ser si redireccionas).

Un saludo,


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 05/02/2004, 21:55
Avatar de ramzax200  
Fecha de Ingreso: noviembre-2003
Mensajes: 172
Antigüedad: 14 años, 1 mes
Puntos: 0
eso esta raro, solo que en el otro servidor, a donde va si has iniciado sesion, tenga tambien el include al archivo de seguridad, por que si no, quiere decir q tu sesion es solo para redireccionar, en todo caso todo el mundo copia la direccion del otro servidor y entra directo....
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 07:10.