ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: MaTiaS en Agosto 08, 2012, 03:44:06

Título: [AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 08, 2012, 03:44:06
Hola gente, resulta que estoy haciendo un sistema de usuarios con php y mysql, más precisamente estoy siguiendo este tutorial http://www.sectorweb.net/2008/01/17/como-hacer-un-sistema-de-usuarios-con-php-y-mysql/.

Cuando llego al ante último punto me surge el problema, te dan el código php de la página user.php que consiste en algo así

<?
session_start();
if(!isset($_SESSION["login"])){
header("location:index.php");
} else {
echo "
<html>
    <body>
        ";echo "
        Bienvenido al Area de usuarios: <strong>";echo $_SESSION["nombre"]." ".$_SESSION["apaterno"]." ";echo "</strong>
        <br>
        Has entrado con el nick: <strong> ";echo $_SESSION["login"];echo "</strong>
        <br>
        Para cerrar la sesión, pulsa: <a href='logout.php'>Aqui</a>";echo "
    </body>
</html>
".isset($_SESSION);
}
?>


para mostrar esto...
(http://i47.tinypic.com/1hf0iv.jpg)


AHORA VIENE EL TEMA.... lo que yo quiero es insertar esa info que genera el anterior codigo en una parte determinada del sitio que estoy desarrollando... más precisamente en esta parte...
(http://i50.tinypic.com/33cw17s.jpg)


alguien me puede guíar acerca de dónde insertar el código para que aparezca la info dentro del cuadro azul?

si pego todo el codigo dentro del div correspondiente al cuadro azul me muestra errores cuando me logueo...
(http://i48.tinypic.com/33u7m0o.jpg)

por si les sirve de ayuda la linea 437 es la 2ª linea del código que les mostré anteriormente
session_start();


Espero puedan darme una mano! hace rato vengo luchando con este sistema de usuarios, saludos a todos!
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: frhfpwimb en Agosto 08, 2012, 11:07:18
tengo que session start tiene que estar al principio del código antes de imprimir cualquier cosa. fijate la info en php.net
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 08, 2012, 15:24:35
Cita de: frhfpwimb en Agosto 08, 2012, 11:07:18
tengo que session start tiene que estar al principio del código antes de imprimir cualquier cosa. fijate la info en php.net

bien ahi man! puse el session-start al principio y quedó joya
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 08, 2012, 19:53:33
Para darte una referencia más amplia, el orden de codigo de PHP requiere que todas las funciones que utilicen cabeceras (header, set/getcookie, session, etc) se utilizen previo a iniciar la salida de texto. Ello por una cuestión lógica. Las cabeceras es lo primero que el servidor envía al navegador y luego el texto de la página web
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 09, 2012, 00:04:51
Cita de: Camello_AR en Agosto 08, 2012, 19:53:33
Para darte una referencia más amplia, el orden de codigo de PHP requiere que todas las funciones que utilicen cabeceras (header, set/getcookie, session, etc) se utilizen previo a iniciar la salida de texto. Ello por una cuestión lógica. Las cabeceras es lo primero que el servidor envía al navegador y luego el texto de la página web

gracias por la info camello!
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 09, 2012, 01:09:20
Una salida tipica de un servidor web es


HTTP/1.1 200 OK
Server: nginx
Date: Tue, 17 May 2011 05:09:22 GMT
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=120
Vary: Accept-Encoding
Set-Cookie: miasessid=4PI9TrqPFXffwUw2jq3co3; expires=Fri, 14-May-2021 05:09:22
GMT; path=/; domain=.dominio.com.ar
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip

<html>


Fijate que en la cabecera se hace el "Set-Cookie" por parte del servidor (apache, IIS, nginx en este caso) y toma los valores que le pasa PHP (en el caso un cookie de sesión). Tanto si querés fijar el cookie o iniciar/modificar/destruir la misma, van en cabeceras. También si querés personalizar una sección del header como por ejemplo

header("Content-Disposition: attachment; filename=".$archivo."\r\n");

Que sirve para forzar la descarga de un archivo y no abrirlo desde el navegador (util para un sistema de descargas), y forzar a darle un nombre al archivo (imagina que usas dominio/descargas/bajar.php?id=9999 y el archivo 9999 es comprimido.zip y quieres que el navegador te diga "Que desea hacer con el archivo comprimido.zip" y no "Que desea hacer con el archivo bajar.php")

Luego de la linea en blanco, inicia la salida de la pagina web (en el caso solo puse el tag de inicio <html>)
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 12, 2012, 05:00:42
recien me doy cuenta que cuando ingreso a la página sin estar logueado, debería enviarme a INDEX.PHP, sin embargo no lo hace y me muestra este error...

(http://i49.tinypic.com/29mrvrk.jpg)

que supongo es porque la etiqueta HEADER tiene que estar arriba del todo como start-sesion.... cómo tendría que hacer para pasar el header arriba pero dejando el codigo necesario dentro del cuadro azul para que cuando alguien esté logueado aparezca la info ahí?


(http://i46.tinypic.com/28u7lmc.jpg)
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: frhfpwimb en Agosto 12, 2012, 21:28:50
es complejo deberia ver ese código,
simplemente hay que ver si mandas un header location no podes imprimir nada antes por el mismo problema de sessionstart.
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 13, 2012, 00:26:12
Fijate que la linea 1 del archivo user.php está generando salida de texto
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 13, 2012, 01:09:09
Cita de: Camello_AR en Agosto 13, 2012, 00:26:12
Fijate que la linea 1 del archivo user.php está generando salida de texto

eso significa? estoy medio en bolas con php perdón por mi lentitud...
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 13, 2012, 08:53:02
Que la linea 1 de tu código está generando la página que vas a mostrar, por lo cual al ejecutar primero una salida HTML sin ejecutar previamente las salidas de cabeceras, volvemos a lo que dijimos antes, y no te toma la redirección.


En PHP tenés dos formas de trabajar. PHP puro o PHP/HTML combinado.


En la primera con PHP generás las salidas HTML mediante comandos de PHP (echo/printf/etc).


En la segunda, dentro de un código tradicional HTML insertas etiquetas <?PHP que ejecutan los comandos y van insertando la parte dinámica dentro del texto (y eventualmente generan HTML). Acá tenés que tener en cuenta que la inicialización del script y los comandos que envian cabeceras se encuentren indefectiblemente al inicio del script. Lease iniciar el user.php con


<?php
//inicialización
?>

<html>


Si antes del primer <?php tenés al menos un espacio en blanco

<?php

Va a empezar a iniciar la salida de texto y ya no puede procesar las cabeceras
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 13, 2012, 15:00:10
camello quizás no te aparece el código desde el principio fijate q la barrita de scroll esté bien arriba, mi código comienza con
<?php

el problema es que hay cierta parte que necesito que aparezca en medio del html, más precisamente en el recuadrdo azul donde tiene que aparecer la info de usuarios logueados.
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 13, 2012, 16:10:37
el tema que el código tenés que dividirlo en dos

Por una lado la verificación de usuarios que lo haces al inicio del script y por otra parte el texto html.


session_start();
if(!isset($_SESSION["login"])){
header("location:index.php");
} else {
$bloque_usuario = "
<html>
    <body>
        ";echo "
        Bienvenido al Area de usuarios: <strong>";echo $_SESSION["nombre"]." ".$_SESSION["apaterno"]." ";echo "</strong>
        <br>
        Has entrado con el nick: <strong> ";echo $_SESSION["login"];echo "</strong>
        <br>
        Para cerrar la sesión, pulsa: <a href='logout.php'>Aqui</a>";echo "
    </body>
</html>
".isset($_SESSION);
}
?>


eso va en la cabecera (fijate que te reemplacé echo (salida de texto) por $bloque_usuario = que es una variable que contiene todo ese texto en memoria para su posterior utilización

Despues, en la parte donde va el texto, insertas

<?php
echo $bloque_usuario;
?>

Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 13, 2012, 17:00:44
la cabecera quedó así

<?php require_once('Connections/conexionbase.php'); ?>
<?
session_start();
if(!isset($_SESSION["login"])){
header("location:index.php");
} else {
$bloque_usuario = "
<html>
    <body>
        ";echo "
        Bienvenido al Area de usuarios: <strong>";echo $_SESSION["nombre"]." ".$_SESSION["apaterno"]." ";echo "</strong>
        <br>
        Has entrado con el nick: <strong> ";echo $_SESSION["login"];echo "</strong>
        <br>
        Para cerrar la sesión, pulsa: <a href='logout.php'>Aqui</a>";echo "
    </body>
</html>
".isset($_SESSION);
}
?>


y la otra parte a donde debería ir el texto, pero no funciona, cuando me logueo no aparece nada en el cuadro donde debería ir el texo y aparece este error en la parte superior de la página en el navegador


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ls000382/public_html/user.php:1) in /home/ls000382/public_html/user.php on line 3
Bienvenido al Area de usuarios: matias castro
Has entrado con el nick: admin
Para cerrar la sesión, pulsa: Aqui 1
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: Camello_AR en Agosto 14, 2012, 09:01:59
el archivo conexiobase.php tiene alguna salida de texto?
Título: Re:[AYU] ¿dónde inserto este codigo PHP? (sistema de usuarios)
Publicado por: MaTiaS en Agosto 14, 2012, 13:09:11
Cita de: Camello_AR en Agosto 14, 2012, 09:01:59
el archivo conexiobase.php tiene alguna salida de texto?

este es el codigo del archivo..
conexionbase.php
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conexionbase "localhost";
$database_conexionbase "nombrebasededatos";
$username_conexionbase "contraseña";
$password_conexionbase "";
$conexionbase mysql_connect($hostname_conexionbase$username_conexionbase$password_conexionbase) or trigger_error(mysql_error(),E_USER_ERROR); 
?>