Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Login en phpbb y en toda la web

Estas en el tema de Login en phpbb y en toda la web en el foro de Sistemas de gestión de contenidos en Foros del Web. Hola a tod@s¡¡¡ Soy bastante novato en php y la verdad es que tengo una duda que no consigo resolver. Me gustaría que en mi ...
  #1 (permalink)  
Antiguo 01/07/2004, 12:00
Avatar de jesus_10  
Fecha de Ingreso: junio-2004
Mensajes: 61
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta Login en phpbb y en toda la web

Hola a tod@s¡¡¡
Soy bastante novato en php y la verdad es que tengo una duda que no consigo resolver. Me gustaría que en mi web, que tengo un foro "phpbb", se pudiera hacer login en la página principal o en cualquier página ya que quiero tener zonas reservadas para usuarios registrados y no quisiera registrarlos varias veces y que además una vez logeado el usuariao apareza algo como ésto "Estás logeado como....". Espero haberme explicado bien.

Aquí os dejo el código que encontré por ahí y la verdad es que lo hace muy bien pero tengo el siguiente proglema:
  1. Cuando hacemos el login me redirecciona a una página que no es la principal
  2. Cuando ingreso en el foro no me aparece como conectado

Tengo tres archivos:

Conexión con la base de datos del foro:
Código PHP:
<? 
$a 
mysql_connect("dbserver","dbuser","dbpassword");
mysql_select_db("dbname",$a);
?>
Primera página del login "login.php" (formulario para ingresar):
Código PHP:
<form name="form" method="post" action="login2.php">
      <
p><b><font size="2">Usuario</font></b><br />
         <
input type="text" name="user">
      </
p>
      <
p><b><font size="2">Contraseña</font></b><br />
          <
input type="text" name="pass">
      </
p>
      <
p
           <
input type="submit" name="Submit" value="Entrar">
      </
p>
</
form
Página que recibe los datos del formulario y los procesa "login2.php":
Código PHP:
<? session_start(); ?>

<?
// Incluimos el archivo de la conexion a la base de datos
// (cambiad en conexion.php el nombre de la base de datos y el host, usuario y contraseña)

     
include("conexion.php");

// Hacemos una consulta a la base de datos buscando un registro con ese Usuario y esa Contraseña

    
$user=$HTTP_POST_VARS['user'];
    
$pass=md5($HTTP_POST_VARS['pass']);

// Cambia el prefix de la variable '$prefix' si no es el que viene
//$prefix="phpbb_";
    
$sql mysql_query("SELECT * FROM foro_users where username='$user' and user_password='$pass'",$a);

// Si el registro existe...

    
if(mysql_num_rows($sql)!= 0) {

// Aquí podeis poner un include de una seccion privada o lo que querais
// Yo voi a poner algunos datos del usuario, en el archivo 'campos.php' teneis
// los campos que usa phpbb para el usuario y su descripción.

    
$logueado=true;
    
session_register("user","pass");
    
$campo mysql_fetch_object($sql);
    echo 
"información de usuario que queramos";
    } 
             else {

// Si el usuario o la contraseña no es correcto vuelve a 'login.php'

    
echo "<script> location.href='login.php' </script>";
    } 
?>
Aquí os pongo el código para otra página que recoge toda la información del usuario registrado en el foro:

Código PHP:
?>
$campos = Array(
"\$campo->user_id" => "Id del usuario",
"\$campo->username" => "Nick del usuario",
"\$campo->user_regdate" => "Fecha de registro",
"\$campo->user_password" => "Contraseña encriptada con md5()",
"\$campo->user_email" => "Email del usuario",
"\$campo->user_icq" => "Numero de ICQ",
"\$campo->user_website" => "Pagina Web",
"\$campo->user_occ" => "Ocupacion del usuario",
"\$campo->user_from" => "Procedencia del usuario",
"\$campo->user_interests" => "Sus intereses",
"\$campo->user_sig" => "La firma que sale al final de los post en el foro",
"\$campo->user_avatar" => "El avatar",
"\$campo->user_avatar_type" => "Tipo de avatar",
"\$campo->user_viewemail" => "Muestra '1' si permites que vean yu email y '0' si no",
"\$campo->user_aim" => "Direccion del AIM",
"\$campo->user_yim" => "Correo para el msn de yahoo",
"\$campo->user_msnm" => "Correo para el msn",
"\$campo->user_attachsig" => "Muestra '1' si quieres que tu firma salga en todos los post y '0' si no",
"\$campo->user_allowsmile" => "'1' si estan activados los smilies y '0' si no lo estan",
"\$campo->user_allowhtml" => "Lo mismo pero con el html",
"\$campo->user_allowbbcode" => "Tres cuartos de lo mismo con el BBCode",
"\$campo->user_allow_viewonline" => "Muestra '1' si permites que sepan cuando estas online y si no lo permites '0'",
"\$campo->user_notify" => "Muestra '1' si tienes activado que te avisen por e-mail cuando te contesten a un post, y '0' cuando no lo este",
"\$campo->user_notify_pm" => "Lo mismo pero te avisan con los mensajes privados",
"\$campo->user_popup_pm" => "Lo mismo, pero esto es para algunas plantillas que te informan de un mensaje privado por pop-up",
"\$campo->user_timezone" => "Zona de horario (GMT)",
"\$campo->user_dateformat" => "Formato en el que se muestra la fecha",
"\$campo->user_lang" => "Lenguaje del foro",
"\$campo->user_style" => "Theme del foro",
"\$campo->user_level" => "Nivel en el foro: '1' para administradores y '0' para usuarios normales",
"\$campo->user_allow_pm" => "Muestra '1' si permites mensajes privado y por el contrario '0'",
"\$campo->user_active" => "Muestra '1' si el usuario esta activo y '0' si no lo esta",
"\$campo->user_posts" => "Numero de mensajes escritos en el foro",
"\$campo->user_new_privmsg" => "Muestra '1' si tienes algun mensaje privado nuevo y '0' si no tienes ninguno",
"\$campo->user_unread_privmsg" => "Lo mismo pero si tienes mensajes sin leer y leidos",
"\$campo->user_last_privmsg" => "Fecha del ultimo mensaje privado",
"\$campo->user_lastvisit" => "Fecha de la ultima visita del usuario",
);
?> 
Espero que os sirva de algo....


Gracias a tod@s de antemano.....
__________________
Todavía hay esperanza de que exista un día en que el ser humano se de cuenta de lo que hace.

Última edición por jesus_10; 01/07/2004 a las 12:19 Razón: Se me olvidó poner otra pagina.... jejeje xD
  #2 (permalink)  
Antiguo 03/07/2004, 10:13
Avatar de jesus_10  
Fecha de Ingreso: junio-2004
Mensajes: 61
Antigüedad: 19 años, 10 meses
Puntos: 0
No hay nadie que me pueda ayudar???????

Necesito que me ayude alguien con este tema. Si es muy complicado lo que he escrito en el anterior post decirme como lo puedo hacer más sencillo. Lo único que quiero es que mis usuarios puedan tener zonas reservadas y aprovechar el login del foro phpBB.

Si alguien tiene alguna idea o me puede decir como hacerlo facilmente le agradecería una respuesta.

Gracias.
__________________
Todavía hay esperanza de que exista un día en que el ser humano se de cuenta de lo que hace.
  #3 (permalink)  
Antiguo 16/08/2004, 09:24
Avatar de DeYoN  
Fecha de Ingreso: febrero-2004
Mensajes: 81
Antigüedad: 20 años, 3 meses
Puntos: 0
Holas,
Respecto al primer problema creo que se solucionaria con sustituri la linea de código que dice:
Código:
echo "información de usuario que queramos";
por esta otra linea:
Código:
echo "<script> location.href='login.php' </script>";
Cambiando login.php por la pagina que desees.

No te puedo decir mucho mas xq vengo del asp ;)

Talues. Espero que funcione.
  #4 (permalink)  
Antiguo 18/08/2004, 05:47
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 5 meses
Puntos: 5
Una vez que has iniciado sesión en phpBB para que se muestren el nombre del usuario tendrías que poner esto en tu script:

Código PHP:
$nombre_usuario=($userdata['user_id']==-1) ? "Usuario anónimo" $userdata['username'];
$nombre_usuario="Estás conectado cómo "$nombre_usuario
Y para iniciar sesión en phpBB hay que meter este código al inicio de los scripts:

Código PHP:
define('IN_PHPBB'true); 
$phpbb_root_path 'phpBB2/'//PATH DEL FORO RESPECTO DEL SCRIPT
include($phpbb_root_path 'extension.inc'); 
include(
$phpbb_root_path 'common.'.$phpEx); 
$userdata session_pagestart($user_ipPAGE_INDEX); 
init_userprefs($userdata); 
Al meter esas líneas no es necesario conectar con la base de datos, ya que de eso se encarga el archivo common.php. Recuerdo que en phpbb_root_path tienes que poner la ruta del foro respecto del script.

Para lo de las zonas reservadas se me ocurre que podrías definir rangos nuevos y actuar en las páginas reservadas en consecuencia. Por ejemplo al instalar phpBB al inicio se crea un rango cuyo identificador en la base de datos es 1 que le serviría en tu caso para distinguir al administrador de los demás usuarios. Para observar el identificador de cada rango que crees bastaría con entrar desde el phpMyAdmin a la tabla phpbb_ranks.
Así ya desde el panel de administración puedes gestionar todo.
Por ejemplo si deseas que una página sólo la pueda ver el administrador, inicias sesión con phpBB tal y cómo te indique y pones luego

Código PHP:
if (userdata['user_rank']<>1)
{
session_write_close(); 
header("Location: http://" $_SERVER['HTTP_HOST']
                     . 
dirname($_SERVER['PHP_SELF'])."script_al_que_redireccionas.php");
exit;

De esta forma al inicio de la página si no se cumple el rango requerido para verla te redirecciona a otro sitio (en concreta a dónde dice script_al_que_redireccionas.php del directorio actual. Antes de redireccionar recuerda que no debe de haber ningún código HTML ya que si no puede dar error (si tienes problemas puedes usar esto http://www.forosdelweb.com/showthrea...490#post414490 )

Bueno sólo son ideas, tampoco sé con exactitud lo que deseas hacer.
Por otra parte si te fijas al iniciar sesión en phpbb, para acceder a cualquier dato del usuario basta con usar el array $userdata['campo_de_la_tabla_phpbb_users_que_desees']
Para el login te recomiendo que uses el login del foro, porque sino la forma que te sugiero no funcionaría . Se trataría de toquetearlo un poco para que no redirija al índice del foro (eso si puedo lo miro pero no debe de ser muy difícil )
Salu2 ;) (no se siré aplicable a lo que tienes hecho y lo mismo te parece un poco dificilillo)

Última edición por yoseman; 18/08/2004 a las 06:02
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 21:34.