hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
18 de Noviembre de 2008, 11:07:47
Noticias: Convocatoria E-zine CPH #2
Para ver este enlace Registrate o Inicia Sesion
> Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Asp y Asp.Net (Moderador: shevchenko)
| | | |-+  Creación de un foro en ASP
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Creación de un foro en ASP  (Leído 270 veces)
maxwellnewage
Colaborador
****
Desconectado Desconectado

Mensajes: 1,607



Ver Perfil WWW
« : 12 de Julio de 2008, 02:18:41 »

 Para realizar un foro necesitas:

    * Una conexión con bases de datos. Esta conexión puede realizarse de dos formas.
    * Directamente, (tal y como se explica en el manual Paginas ASP).
    * Utilizando una DSN solicitándola al servidor que te provee de servicios de internet, (en este caso uso esta opción).

 

 Estructura de la base de datos: Tabla MiTabla

   1. Autor
   2. Email del Autor
   3. Fecha de alta en el foro
   4. Titulo de la cuestión
   5. Cuerpo de la cuestión
   6. ID de la pregunta, (uso interno)
   7. QoR. Pregunta o Respuesta

   Un ejemplo de tabla seria:

El campo QoR :

El campo QoR determina si el registro pertenece a :

-         P: Una pregunta.

-         R: Una respuesta a una pregunta.

-         X: El único registro de la tabla con este valor en el campo QoR. El valor del campo IDPregunta de este registro es el que mantiene el contador de dicho campo. Almacena el valor de IDPregunta del última consulta entrada en el foro.

El campo con QoR = X ha de ser entrado manualmente en el momento de la inauguración del foro.

El campo IDPregunta.

Al dar de alta un nuevo comentario en el foro; este viene identificado con un numero que es asignado por el valor del campo IDPregunta del registro que posee X en el campo QoR, (registro de indice).

Todas las respuestas que se lancen a ese comentario irán identificadas por ese mismo valor en sus respectivos campos IDPregunta.

Nombres especiales.

Los nombres como la DSN de acceso a datos. El nombre de la base de datos y de la tabla. Y las claves de acceso estan referidas en el código que se adjunta en este manual como : MiDSN, MiBase, MiTabla y MiClave. Substituir dichas cadenas por las que se determinen para vuestro foro personalizado.

Todos estos datos son importantes para el funcionamiento del foro. La DSN os la proporciona el servidor que os provee de servicios de internet, (si no es así usad el metodo de acceso directo que se comenta en el código). La base de datos y la tabla es la que creeis vosotros, (por ejemplo en ms.Access). Las claves de acceso son las que vosotros qu
 Proveedor de servicios de internet. Debeis aseguraros que el proveedor de servicios de internet que habeis contratado os proporcione los recursos necesarios para ejecutar páginas ASP y acceder a bases de datos. Muchos proveedores no proporcionan estos servicios y, simplemente, no podreis hacer nada con ASP. Debereis cambiar de proveedor.

Inicio del código.
Declaración de las bases de datos que se van a utilizar.

<%@ LANGUAGE="VBScript" %>

<%

   ' Declaramos el objeto de conexión a la base de datos

    Set ConexionBD = Server.CreateO bject("ADOdb.Connecti on")

   ' Abrimos el objeto con el driver específico

   ConexionBD.Ope n "DSN=MiDNS"

%> 

Si queremos atacar directamente a la base de datos utilizar esta otra técnica.
ConexionBD.Ope n  "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("MiBase.mdb")

QueryString

QueryString recupera los valores de los parámetros entrados al llamar al ASP desde la URL.

' Recupera los parámetros de la linea de comandos.

   comando=request.querystring("comando")

   ' Datos para la eliminación.

   passw=request.querystring("passw")

   ID=request.querystring("ID")

   ' Datos para una nueva alta.

   QoR=request.querystring("qor")

   IDPregunta=request.querystring("IDPregunta")

   fecha=request.querystring("fecha")

   Titulo=request.querystring("Titulo")

   Cuerpo=request.querystring("Cuerpo")

   Autor=request.querystring("Autor")   

Opciones del foro 

<html> 
<head> 
<title>El Foro</title></head> 
<body> 
<H2>Opciones</H2>

<UL>
<LI><A HRef="qor.asp?comando=anadir"> 
Lanzar un nuevo comentario al foro. 
[/url]</LI>   <LI> 
<A HRef="qor.asp?comando=ver"> 
Ver Todo, (refrescar). 
[/url]</LI></UL> 

Añadir una nueva pregunta al foro.

La siguiente rutina consta de 2 fases 

1 Petición de datos a añadir, (comando=añadir)

 

   <%

   If comando="anadir" Then

   ' Añadir una nueva entrada.

    %>

    <H1>A&ntilde;adir un nuevo comentario al foro.</H1>

    <FORM Method="GET" Action="qor.asp">

<INPUT Type="hidden" Name="fecha" Value="<%= Year(Date) & "/" & Month(Date) & "/" &    Day(Date) %>">

    <INPUT Type="hidden" Name="QoR" Value="P" Size=0>

    <%

 Set RS = ConexionBD.Exe cute("SELECT * FROM MiTabla WHERE QoR='X'")

 RS.MoveFirst

     %>

<INPUT Type="hidden" Name="IDPregunta" Value=<%= RS("IDPregunta") + 1 %>>

<INPUT Type="hidden" Name="comando" Value="adiccion" Size=0>

Autor :<BR>

  <UL>

  <INPUT Type="text" Name="Autor" Size=50></UL>

  e-mail, (si tienes) :<BR>

  <UL>

  <INPUT Type="text" Name="email">

  </UL>

  Titulo, (obligado) :

  <UL>

  <INPUT Type="text" Name="titulo" Size=50>

  </UL>

   Cuerpo del comentario que deseas lanzar al foro :

   <UL>

   <TEXTAREA Rows="10" Cols="50" Name="Cuerpo"></TEXTAREA>

   </UL>

   <INPUT Type="SUBMIT" Value="Enviar">

   <INPUT Type="RESET" Value="Reestablecer">

   </FORM>

   <%

 2 Alta en la base de datos, (comando=adiccion)

       ElseIf comando="adiccion" Then

         ' Añade a la base de datos.

         Error=False

         MsjError=""

         If Autor="" Then

            Autor="-no firma-"

         End If

         If email="" Then

            email=" "

         End If

         If Titulo="" Then

            Error=True

MsjError = MsjError + "- Se necesita un t&iacute;tulo para su comentario.<BR>"

         End If

         If Cuerpo="" Then

         Error=True

MsjError = MsjError + "- Se necesita un cuerpo del mensaje para incluirlo en el foro.<BR>"

End If

' Añade el nuevo comentario al foro.

Set RS = ConexionBD.Exe cute("INSERT INTO MiTabla (QoR, IDPregunta, Fecha, Autor, email, Titulo, Cuerpo) VALUES ('" & QoR & "', " & IDPregunta & ", #"& Fecha & "#, '" & Autor & "', '" & email & "', '" & Titulo & "', '" & Cuerpo & "')")

'Si es una nueva pregunta, aumenta el contador.

If QoR="P" Then

Set RS = ConexionBD.Exe cute("UPDATE MiTabla SET IDPregunta = " & IDPregunta & " WHERE QoR='X'")

  End If

Response.Write("<BR><BR><B>Se ha dado de alta tu colaboraci&oacute;n al foro :</B><BR><BR>")

    Response.Write("<UL>")

    Response.Write("Fecha : " & Fecha & "<BR>")

    Response.Write("Autor : " & Autor & "<BR>")

    Response.Write("e-mail : " & email & "<BR>")

    Response.Write("Titulo : " & Titulo & "<BR>")

    Response.Write("Cuerpo : " & Cuerpo & "<BR>")

    Response.Write("</UL>")

    Response.Write("Gracias por colaborar en el foro de Acervo Visual")

 
Ver las preguntas abiertas en el foro.

Esta sección se comporta de 2 formas. Si Comando=ver o no tiene valor, mostrará el contenido de todo el foro.

Si Comando=explosion se mostrará sólo la pregunta, (y todas sus respuestas), dada por el parámetro IDPregunta. 

 

' Visualizar FORO.

ElseIf comando="ver" or comando="explosion" or comando="" Then

' Visualizar FORO.

      %>

<BR><BR>

<CENTER>

<TABLE Border=2 Width="90%">

<TR>

<TH BGColor='#03A7CF' Align='Left'>

  <%

  ' Ver el libro de visitas completo.

   If Comando="explosion" Then

   Set RS = ConexionBD.Exe cute("SELECT * FROM MiTabla WHERE IDPregunta=" & IDPregunta & " ORDER BY IDPregunta DESC, QoR, Fecha DESC")

   Response.Write("Comentarios abiertos referentes a : <B>" & RS("Titulo") & "</B>")

   Else

   Set RS = ConexionBD.Exe cute("SELECT * FROM MiTabla WHERE QoR<>'X' ORDER BY IDPregunta DESC, QoR, Fecha DESC")

   Response.Write("Comentarios abiertos en el foro.")

 End If

 %>     

</TH>

</TR>

<%

 Do while not RS.EOF

'Escribimos en la salida los datos que nos interesa

 %><tr>

<td><%

' Indenta si es respuesta.

If RS("QoR")="R" Then

Response.Write("<UL>")

End If

' Fecha.

 If IsNull(RS("Fecha")) Then

Else

Response.Write("(" & FormatDateTime(CDate(RS("Fecha")), 2) & ") ")

End If

' ID.

Response.Write(" - (" & RS("ID") & ") ")

' Título.

If IsNull(RS("Titulo")) Then

Response.Write(" <BR>")

Else

If Comando="explosion" Then

Response.Write("<B>" & RS("Titulo") & "</B><BR><BR>")

Else

Response.Write("<A HRef='qor.asp?comando=explosion&IDPregunta="& RS("IDPregunta") & "'>" & RS("Titulo") & "[/url]<BR>")

End If

End If

' Autor y e-mail.

If Comando="explosion" Then

Response.Write("<B>Autor : </B>")

If IsNull(RS("Autor")) Then

Else

Response.Write((RS("Autor"))

End If

If IsNull(RS("email")) Then

Response.Write(" <BR>")

Else

Response.Write(" (<A HRef='mailto:" & RS("email") & "?subject=Foro Acervo Visual'>" & RS("email") & "[/url])<BR>")

End If

Response.Write("<BR><B>Cuerpo del comentario : </B><UL>")

Response.Write(RS("Cuerpo") & "</UL>")

'Botón de respuesta.

If RS("QoR")="P" Then

%>         

<FORM Method="GET" Action=" qor.asp">

<INPUT Type="hidden" Name="comando" Value="Responder" Size=0>

<INPUT Type="hidden" Name="fecha" Value="<%= Date %>" Size=0>

<INPUT Type="hidden" Name="IDPregunta" Value=<%= RS("IDPregunta") %> Size=0>

<%

Tit = RS("Titulo")

Tit = Replace(Tit, " ", "+")

%>

<INPUT Type="hidden" Name="Titulo" Value=<%= Tit %> Size=0>

<INPUT Type="hidden" Name="QoR" Value="R" Size=0>

<INPUT Type="SUBMIT" Value="Responder">

</FORM>     

<%

End If

End If

'Quita la indentación si es una respuesta.

If RS("QoR")="R" Then

Response.Write("</UL>")

End If

%>

</td>

</tr><%     

RS.MoveNext

Loop

%>

</TABLE>

</CENTER>

</UL>

<%
Responder una consulta abierta en el foro.

Al pulsar sobre el botón Responder en una de las consultas abiertas en el foro; Se pasa como Comando=Responder y la pregunta a responder en el parámetro IDPregunta. 

' Responder una questión abierta en el foro.

ElseIf comando="Responder" Then

' Responder a un comentario existente.

TituloResp = Titulo

%>

<H1>A&ntilde;adir un nuevo comentario al foro.</H1>

<FORM Method="GET" Action=" qor.asp">

<INPUT Type="hidden" Name="fecha" Value="<%= Year(Fecha) & "/" & Month(Fecha) & "/" & Day(Fecha) %>" Size=0>

<INPUT Type="hidden" Name="QoR" Value=<%= QoR %> Size=0>

<INPUT Type="hidden" Name="IDPregunta" Value=<%= IDPregunta %>>

<INPUT Type="hidden" Name="comando" Value="adiccion" Size=0>

<H3>Respuesta al comentario :</H3>

<UL>

<%

TituloResp = Replace(TituloResp, "+", " ")

%>

<H4><%= TituloResp %></H4>

</UL>

Autor :<BR>

<UL>

<INPUT Type="text" Name="Autor" Size=50>

</UL>

e-mail, (si tienes) :<BR>

<UL>

<INPUT Type="text" Name="email">

</UL>

Titulo, (obligado) :

<UL>

<%

TituloResp = "Resp : " & TituloResp

%>

<INPUT Type="text" Name="titulo" Value="<%= TituloResp %>" Size=50>

</UL>

Cuerpo del comentario que deseas lanzar al foro :

<UL>

<TEXTAREA Rows="10" Cols="50" Name="Cuerpo"></TEXTAREA>

</UL>

<INPUT Type="SUBMIT" Value="Enviar">

<INPUT Type="RESET" Value="Reestablecer">

</FORM>

<%
Funciones de uso interno.

Eliminar una pregunta o respuesta del foro.

Con esta opción, (Comando=Eliminar), eliminamos un registro de la base de datos. Es conveniente que esta clase de opciones requieran contraseña. 

ElseIf Comando="Eliminar" Then

%>

<H1>Eliminar un comentario del foro.</H1>

<FORM Method="GET" Action=" qor.asp">

<INPUT Type="Hidden" Name="Comando" Value="Eliminacion">

Password :

<INPUT Type="Password" Name="passw"><BR>

ID de pregunta a eliminar :

<INPUT Type="Text" Name="IDPregunta">

<INPUT Type="SUBMIT" Value="Enviar">

<INPUT Type="RESET" Value="Reestablecer">

</FORM>

<%

ElseIf Comando="Eliminacion" Then

'Elimina la pregunta solicitada.

If passw = MiClave Then

Set RS = ConexionBD.Exe cute("DELETE * FROM MiTabla WHERE IDPregunta = " & IDPregunta & " AND QoR<>'X'")

Response.Write("<H2>Ok.</H2>")

Else Password erroneo.

Response.Write(<H2>Password erroneo.</H2>)

End If

End If

%>

Fin del código

</body>

</html>
En línea


Para ver este enlace Registrate o Inicia Sesion
ESCUELA DE HACKING
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online