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

Consultas para insertar nuevo usuario en foro phpBB

Estas en el tema de Consultas para insertar nuevo usuario en foro phpBB en el foro de Sistemas de gestión de contenidos en Foros del Web. Muy buenas. Quiero crear un usuario nuevo desde una aplicación ASP.Net en un foro phpBB. No tengo acceso al código fuente del foro (está en ...
  #1 (permalink)  
Antiguo 27/02/2007, 07:49
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Consultas para insertar nuevo usuario en foro phpBB

Muy buenas. Quiero crear un usuario nuevo desde una aplicación ASP.Net en un foro phpBB. No tengo acceso al código fuente del foro (está en Arsys) por lo que no sé exactamente las consultas necesarias para crear un nuevo usuario.

Empezando por INSERT INTO foro_users ....

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 02/03/2007, 15:58
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años
Puntos: 8
Re: Consultas para insertar nuevo usuario en foro phpBB

Que tal Bravenap.

Fijate que tengo el mismo problema y lo que he encontrado hasta ahora es que la estructura de la tabla usuarios es la siguiente( para mySQL ) :
Código:
# --------------------------------------------------------
#
# Table structure for table 'phpbb_users'
#
CREATE TABLE phpbb_users (
   user_id mediumint(8) NOT NULL,
   user_active tinyint(1) DEFAULT '1',
   username varchar(25) NOT NULL,
   user_password varchar(32) NOT NULL,
   user_session_time int(11) DEFAULT '0' NOT NULL,
   user_session_page smallint(5) DEFAULT '0' NOT NULL,
   user_lastvisit int(11) DEFAULT '0' NOT NULL,
   user_regdate int(11) DEFAULT '0' NOT NULL,
   user_level tinyint(4) DEFAULT '0',
   user_posts mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
   user_timezone decimal(5,2) DEFAULT '0' NOT NULL,
   user_style tinyint(4),
   user_lang varchar(255),
   user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
   user_new_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
   user_unread_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
   user_last_privmsg int(11) DEFAULT '0' NOT NULL,
   user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
   user_last_login_try int(11) DEFAULT '0' NOT NULL,
   user_emailtime int(11),
   user_viewemail tinyint(1),
   user_attachsig tinyint(1),
   user_allowhtml tinyint(1) DEFAULT '1',
   user_allowbbcode tinyint(1) DEFAULT '1',
   user_allowsmile tinyint(1) DEFAULT '1',
   user_allowavatar tinyint(1) DEFAULT '1' NOT NULL,
   user_allow_pm tinyint(1) DEFAULT '1' NOT NULL,
   user_allow_viewonline tinyint(1) DEFAULT '1' NOT NULL,
   user_notify tinyint(1) DEFAULT '1' NOT NULL,
   user_notify_pm tinyint(1) DEFAULT '0' NOT NULL,
   user_popup_pm tinyint(1) DEFAULT '0' NOT NULL,
   user_rank int(11) DEFAULT '0',
   user_avatar varchar(100),
   user_avatar_type tinyint(4) DEFAULT '0' NOT NULL,
   user_email varchar(255),
   user_icq varchar(15),
   user_website varchar(100),
   user_from varchar(100),
   user_sig text,
   user_sig_bbcode_uid char(10),
   user_aim varchar(255),
   user_yim varchar(255),
   user_msnm varchar(255),
   user_occ varchar(100),
   user_interests varchar(255),
   user_actkey varchar(32),
   user_newpasswd varchar(32),
   PRIMARY KEY (user_id),
   KEY user_session_time (user_session_time)
);
Lo que no sé es que, si será suficiente con insertar el registro en dicha tabla o hacer más cosas.

Ahora bien, también esta el detalle del campo password, ya que revise el código fuente ( lo puede bajar de www.phpbb.com ) y según yo ( es que no sé php) lo encriptan usando MD5.

Así es que hay que buscar como encriptar usando MD5 en .Net.

O ya encontraste la solución??

Saludos y suerte!!
  #3 (permalink)  
Antiguo 05/03/2007, 04:41
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Re: Consultas para insertar nuevo usuario en foro phpBB

Gracias por responder. Esto y ultimando el procedimiento completo, ya que hay que añadir más registros en otras tablas. En cuanto esté lo pongo.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 05/03/2007, 08:23
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Re: Consultas para insertar nuevo usuario en foro phpBB

Bueno allá va. Se trata de un procedimiento almacenado que registra a nuevos alumnos en una base de datos y al mismo tiempo, ya que la base de datos es la misma, crea usuarios para el foro y les asigna a un grupo para que puedan participar en el subforo del curso al que están inscritos. Marco en rojo sólo las consultas que corresponden a las tablas del foro phpBB.

Código:
ALTER PROCEDURE PA_FC_Inscripcion
(
	@nuevoAlumno bit = 1,
	@idAlumno int = NULL,
	@apellidos nvarchar(255) = '',
	@nombre nvarchar(255) = '',
	@direccion nvarchar(255) = '',
	@localidad nvarchar(255) = '',
	@cp numeric = NULL,
	@telefono char(50) = NULL,
	@correo nvarchar(255) = NULL,
	@profesion nvarchar(255) = NULL,
	@curso int = NULL,
	@pago char(1) = NULL,
	@importe char(50) = NULL,
	@empresa nvarchar(255) = NULL,
	@dirEmpresa nvarchar(255) = NULL,
	@CIFEmpresa char(50) = NULL,
	@locEmpresa nvarchar(255) = NULL,
	@CPEmpresa numeric = NULL,
	@factura bit = 0,
	@usuarioForo varchar(25) = '',
	@pass varchar(32) = ''
)
AS
BEGIN
	DECLARE @Error int, @idForo int, @idGrupo int
	BEGIN TRAN

	IF @nuevoAlumno = 1
	BEGIN
		-- Se crea el usuario para el foro
		SELECT @idForo = (SELECT MAX(user_id) FROM foroCursos_users) + 1
		INSERT INTO foroCursos_users
			(user_id, username, user_regdate, user_password, user_email, user_viewemail, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
			VALUES 
			(@idForo, @usuarioForo, DATEDIFF(ss, '01-01-1970', GetDate()) , @pass, @correo, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 'D M d, Y g:i a', 'spanish', 1, 0, 1, 0,'')
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError

		-- Se crea el grupo para uso personal
		INSERT INTO foroCursos_groups (group_name, group_description, group_single_user, group_moderator) VALUES ('', 'Personal User', 1, 0)
		SELECT @idGrupo = (SELECT @@identity)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
	
		-- Se crea la relación usuario-grupo para el grupo de uso personal
		INSERT INTO foroCursos_user_group (user_id, group_id, user_pending) VALUES (@idForo, @idGrupo, 0)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		
		-- Se inserta el nuevo alumno
		INSERT INTO fc_alumnos
			(Apellidos,Nombre,Domicilio,Localidad,CP,Telefono,Correo,Profesion,IDForo)
			VALUES
			(@apellidos,@nombre,@direccion,@localidad,@cp,@telefono,@correo,@profesion,@idForo)
		SELECT @idAlumno = (SELECT @@identity)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
	END
	ELSE
	BEGIN
		-- Como ya está registrado, se busca su ID en el foro
		SELECT @idForo = (SELECT IDForo FROM fc_alumnos WHERE ID = @idAlumno)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
	END

	INSERT INTO fc_relAlumnoCurso
		(Alumno,Curso,Estado,FechaInscripcion,FormaPago,Importe,Empresa,DirEmpresa,CIFEmpresa,LocEmpresa,CPEmpresa,Factura)
		VALUES
		(@idAlumno,@curso,1,GETDATE(),@pago,@importe,@empresa,@dirEmpresa,@CIFEmpresa,@locEmpresa,@CPEmpresa,@factura)
	SET @Error = @@Error
	IF (@Error<>0) GOTO TratarError

	-- Añadir al usuario al grupo del foro que corresponda al curso
	SELECT @idGrupo = (SELECT group_id FROM foroCursos_groups WHERE group_name = 'Grupo'+CONVERT(char(4),@curso))
	INSERT INTO foroCursos_user_group (user_id, group_id, user_pending) VALUES (@idForo, @idGrupo, 0)
	SET @Error = @@Error
	IF (@Error<>0) GOTO TratarError

	SELECT @idAlumno

	COMMIT TRAN

TratarError: 
	IF @Error<>0
	BEGIN
		ROLLBACK TRAN
		SELECT @Error
	END
END
Y el procedimiento para borrar al alumno y todas sus relaciones:
Código:
ALTER PROCEDURE PA_FC_BorrarAlumno
(
	@idAlumno int
)
AS
BEGIN
	DECLARE @Error int, @idForo int, @usuarioForo varchar(25)
	BEGIN TRAN

		SELECT @idForo = (SELECT IDForo FROM fc_alumnos WHERE ID = @idAlumno)

		-- Se borra el alumno
		DELETE fc_alumnos WHERE ID = @idAlumno
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		DELETE fc_relAlumnoCurso WHERE Alumno = @idAlumno
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError

		-- Se borra el usuario del foro y sus relaciones
		SELECT @usuarioForo = (SELECT username FROM foroCursos_users WHERE user_id = @idForo)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		DELETE foroCursos_users WHERE user_id = @idForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		DELETE foroCursos_groups WHERE group_id IN (SELECT group_id FROM foroCursos_user_group WHERE user_id = @idForo)
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		DELETE foroCursos_user_group WHERE user_id = @idForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		UPDATE foroCursos_posts SET poster_id = -1, post_username = @usuarioForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		UPDATE foroCursos_vote_voters SET vote_user_id = -1 WHERE vote_user_id = @idForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		UPDATE foroCursos_topics SET topic_poster = -1 WHERE topic_poster = @idForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError
		DELETE foroIm_topics_watch WHERE user_id = @idForo
		SET @Error = @@Error
		IF (@Error<>0) GOTO TratarError

	COMMIT TRAN

TratarError: 
	IF @Error<>0
	BEGIN
		ROLLBACK TRAN
		SELECT @Error
	END

END
Espero que esté bien. No lo he comprobado a fondo.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 05:36.