El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Script VBScript Para Limitar El Tiempo De Sesión Al Día

Posted by urpiano en Domingo 10 \10\UTC diciembre \10\UTC 2006

Introducción

¡¡La alegría de los niños!! Este script lo desarrollé para limitar el tiempo que un niño podía jugar al día con el ordenador ¡¡¡Se me comía a besos el muy truhán!!! ¡¡Qué mirada de alegría cuando le contábamos lo que hacía!! Creo que fue el mejor día de su vida… -(|:o)))

 

Modo de empleo

Copiar lo que hay entre <pego> y </pego> y pegarlo en el bloc de notas, guardando el fichero como Limitar-Sesion.vbs.  Para lanzarlo deberemos iniciar sesión con el usuario del afortunado crío , abrir Regedit, y en la clave del registro HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun crear un valor de cadena  (lo podemos llamar “Limitar-Sesion”) al cual le pondremos de contenido “wscript <ruta>limitar-sesion.vbs m a”, siendo “m” el número de minutos que queremos que dure la sesión y “a” el tiempo con el que se avisa al usuario antes de que la sesión se cierre; por ejemplo “wscript c:regalitos-pal-nenelimitar-sesion.vbs 60 5” da una hora de sesión y avisa a los 55 minutos. La próxima vez que el tierno infante inicie sesión se lanzará el script.

 

El Script VBScript

Este es el código del script:

'***********************************************************
'Este script VBScript se encarga de cerrar la sesión del
'usuario que lo lanza al cumplirse los minutos que se
'reciben como primer parámetro, mostrando un aviso con
'antelación al cierre de tantos minutos como se reciben
'de segundo parámetro. Es decir, se lanza:

'wscript limitar-sesion.vbs minutos-sesion minutos-aviso

'Ejemplo:

'wscript limitar-sesion.vbs 60 5

'Este ejemplo cierra la sesión al cabo de una hora de
'ser lanzado el script, avisando al usuario a los 55
'minutos de sesión.

'El script está pensado para limitar el tiempo de sesión
'al día, de forma que si se vuelve a iniciar sesión, una
'vez que ya se ha cumplido el tiempo, ésta se cierra de
'inmediato.

'La fecha y los minutos que quedan los guarda en la
'clave del registro HKCU\Software\Limitar-Sesion. Los
'minutos van siendo descontados, de forma que si el usuario
'cerrase sesión o el sistema se cierra de forma inesperada
'el usuario podrá volver a iniciar una sesión que le
'durará los minutos que resten.

'Este script es la alegría de los niños :o))

'© Fernando Reyes - Mayo de 2005
'*********************************************************

Option Explicit

Dim obj_Shell, str_FechaRegistro, str_FechaActual
Dim int_Minutos, int_Aviso

'Leyendo la fecha de última ejecución
Set obj_Shell = CreateObject("Wscript.Shell")

'Obtenemos la fecha actual
str_FechaActual = CStr(Date)

'Guardamos en nº de minutos de ejecución que se otorgan
'como parámetro
int_Minutos = CInt(WScript.Arguments(0))

'Guardamos en nº de minutos de anticipación al cierre
'de sesión con el que se empieza a avisar
int_Aviso = CInt(Wscript.Arguments(1))

'Obtenemos la fecha en que se ha ejecutado por
'última vez este script para este usuario
On Error Resume Next
str_FechaRegistro = obj_Shell.RegRead( _
                     "HKCU\Software\Limitar-Sesion\Fecha")

If Err.Number <> 0 Then

    'No existe Fecha en el registro. Creamos el valor
    'que recoge la fecha actual y llamamos al procedimiento
    'que se encargará de crear el valor con los minutos
    obj_Shell.RegWrite "HKCU\Software\Limitar-Sesion\Fecha", _
                       str_FechaActual
    str_FechaRegistro = str_FechaActual
    Call s_MinutosEnRegistro(int_Minutos, True, obj_Shell)

ElseIf str_FechaRegistro <> str_FechaActual Then

    'Si la fecha del registro es distinta a la actual
    'significa que hoy tiene el usuario el tiempo
    'completo y por tanto cambiamos la fecha del registro
    'a la actual. A continuación llamamos al procedimiento
    'que se encarga de los minutos
    obj_Shell.RegWrite "HKCU\Software\Limitar-Sesion\Fecha", _
                        str_FechaActual
    Call s_MinutosEnRegistro(int_Minutos, True, obj_Shell)

Else

    'La fecha actual es la misma que la del registro
    'llamamos al procedimiento que se encarga de los
    'minutos
    Call s_MinutosEnRegistro(int_Minutos, False, obj_Shell)

End If

'Vaciamos el objeto Err y devolvemos el control de errores
'a WScript
Err.Clear
On Error Goto 0

'Una vez evaluado todo y ajustados valores de registro
'llamamos al procedimiento que se encarga de hacer
'el logoff cuando corresponda
Call s_LogOff(int_Minutos, int_Aviso, obj_Shell)

'Limpiadita de trasero :-)
Set obj_Shell = Nothing

'*****************************************************
Sub s_LogOff(int_Minutos, int_Aviso, obj_Shell)

'Este procedimiento se encarga de hacer la cuenta atrás
'del tiempo hasta que se alcanza el momento que avisar
'al usuario, momento en que llama a otro procedimiento
'encargado de mostrar el mensaje mientras se completa
'la cuenta atrás. A la vuelta de ese procedimiento
'cierra la sesión.

    Dim str_Mensaje, obj_OS, obj_OS1, obj_WMI, obj_OS2

    If int_Minutos > int_Aviso Then

        'Queda tiempo de sesión antes de tener que avisar
        'Entramos en un bucle que terminará cuando sea el
        'momento de avisar
        Do while int_Minutos > int_Aviso

            'Esperamos un minuto
            WScript.Sleep (60 * 1000)

            'Descontamos el minuto pasado y guardamos
            'los que quedan en el registro
            int_Minutos = int_Minutos - 1
            obj_Shell.RegWrite _
                   "HKCU\Software\Limitar-Sesion\Minutos", _
                    int_Minutos, "REG_DWORD"
        Loop

    Else

        'En el caso de que en el registro quedasen menos minutos
        'que los del aviso, ponemos los que queden como tiempo
        'de aviso
        If int_Aviso >= int_Minutos Then int_Aviso = int_Minutos

    End if

    'Hay que dar ya el aviso. Establecemos el mensaje
    str_Mensaje = "Se acaba el tiempo de sesión de hoy" & _
                      "; se cierra la sesión en "

    'Mostramos el mensaje mientras prosigue la cuenta
    'atrás por medio de una llamada al procedimiento
    's_Mensaje
    Call s_Mensaje(str_Mensaje, int_Aviso, obj_Shell)

    'Cerramos la sesión. Para ello,
    Set obj_WMI = GetObject("winmgmts:{(Shutdown)}")
    Set obj_OS = obj_WMI.InstancesOf("win32_operatingsystem")
    For Each obj_OS1 In obj_OS
        set obj_OS2 = obj_OS1 : exit for
    Next

    obj_OS2.win32shutdown (4)

End Sub 's_LogOff
'*****************************************************

'*****************************************************
Sub s_MinutosEnRegistro(int_Minutos, bln_Borrar, obj_Shell)

'Este procedimiento se encarga de controlar los minutos que
'quedan de sesión cuando se inicia el script y escribe
'en el registro, si procede, los minutos que quedan

    Dim int_Temp
    Dim bln_Devolucion

    If bln_Borrar = False Then

        'Al ser el mismo día recogemos cuántos minutos
        'hay en el registro
        On Error Resume Next
        int_Temp = obj_Shell.RegRead(_
                   "HKCU\Software\Limitar-Sesion\Minutos")

        If Err.Number <> 0 Then

            'No existen minutos en el registro, algún error hubo.
            'Por tanto escribimos los que quedan
            'establecemos los recibidos como parámetro
            obj_Shell.RegWrite _
                 "HKCU\Software\Limitar-Sesion\Minutos", _
                 int_Minutos, "REG_DWORD"

        Else

            'Es el mismo día, por tanto los minutos que
            'que quedan son los que indica el registro
            int_Minutos = int_Temp

        End If

    Else

        'Al ser distinto día, o no tener establecido
        'ningún valor en el registro, establecemos
        'los minutos recibidos como parámetro
        obj_Shell.RegWrite _
               "HKCU\Software\Limitar-Sesion\Minutos", _
               int_Minutos, "REG_DWORD"

    End If

End Sub 's_MinutosEnRegistro
'*************************************************

'*************************************************
Sub s_Mensaje(str_Mensaje, int_Aviso, obj_Shell)

'Este procedimiento se encarga de mostrar un aviso
'al usuario mostrandole el tiempo que queda de sesión
'en una cuenta atrás. Es llamado cuando quedan los
'minutos de aviso antes del cierre recibidos
'como parámetro

    Dim obj_IE, obj_DocumentoIE, int_Segundos
    Dim bln_Revisado, int_Minutos, int_SegundosResto
    Dim str_Minutos, int_Contador, byt_Segundos

    'Ejectamos Internet Explorer
    Set obj_IE = f_IE

    'Reproducimos un sonido de notificación
    Call s_ReproduceSonido(obj_Shell, _
           "%SystemRoot%\media\notify.wav", int_Aviso)

    'En este bucle iremos haciendo la cuenta atrás
    Do While int_Segundos > 0

        'Si no se ha revisado el tiempo restante
        If bln_Revisado = False Then
        
            'Si quedan cero minutos
            If int_Aviso = 0 Then
            
                'Establecemos que quedan cero segundos
                int_Segundos = 0
                
                'Escribimos en el registro que ya está agotado
                'el tiempo de sesión
                obj_Shell.RegWrite _
                     "HKCU\Software\Limitar-Sesion\Minutos", _
                      int_Aviso, "REG_DWORD"
                      
                'salimos del bucle
                Exit Do
                
            'Si no está agotado el tiempo
            Else
            
                'Calculamos los segudnos que quedan
                int_Segundos = int_Aviso * 60
                
            End If
            
            'Marcamos que ya está revisado el tiempo
            bln_Revisado = True
            
        Else
        
            'Vamos a poner en blanco lo que muestra
            'Internet Explorer. Dado que el aviso puede
            'haber sido cerrado por el usuario, para evitar
            'que esto haga que se termine el script sin
            'haber realizado su tarea, ponemos control de
            'errores
            On Error Resume Next
            
            'Ponemos un documento vacío en Internet Explorer
            obj_IE.Navigate "about:blank"
            
            'Si se ha producido el error 462, significa que
            'el usuario cerró Internet Explorer; obraremos en
            'consecuencia
            If Err.Number = 462 Then
            
                'Volvemos a abrir un Internet Explorer
                Set obj_IE = f_IE
                
                'Ponemos un documento en blanco en
                'Internet Explorer
                obj_IE.Navigate = "about:blank"
                
            End If
            
            'Vaciamos el objeto Err
            Err.Clear
            
            'Devolvemos el control de errores a WScript
            On Error Goto 0
            
        End If
        
        'Escribimos en el documento de Internet Explorer
        'el tiempo restante de sesión. Primero creamos un
        'objeto documento de IE
        Set obj_DocumentoIE = obj_IE.Document
        
        'Escribimos los tags de inicio
        obj_DocumentoIE.WriteLn "<HTML>"
        obj_DocumentoIE.WriteLn "<HEAD>"
        
        'El título
        obj_DocumentoIE.WriteLn _
                     "<TITLE>Se acaba la sesión</TITLE>"
        obj_DocumentoIE.WriteLn "</HEAD>"
        
        'Cerramos cabecera y abrimos cuerpo
        obj_DocumentoIE.WriteLn "<BODY>"
        
        'Obtenemos los minutos que quedan
        int_Minutos = int_Segundos\60

        'Obetnemos si hablaremos en plurar o en singular
        'de los minutos
        If int_Minutos <> 1 Then
        
            str_Minutos = "s "
            
        Else
        
            str_Minutos = " "
            
        End If

        'Obtenemos los segundos que quedan ademas de los
        'minutos
        int_SegundosResto = int_Segundos Mod 60

        'Si no quedan minutos y sólo quedan menos de 31
        'segundos, reproducimos el sonido de una campanilla
        If (int_Minutos = 0 And int_SegundosResto <= 30) _
               Then Call s_ReproduceSonido(obj_Shell, _
                     "%SystemRoot%\media\ding.wav", 1)

        'Escribimos en el cuerpo del documento el tiempo que
        'queda y cerramos cuerpo y documento
        obj_DocumentoIE.WriteLn "<P><CENTER>" & str_Mensaje _
                        & int_Minutos & _
                       " minuto" & str_Minutos & _
                       int_SegundosResto & _
                       " segundos</CENTER></P>"
        obj_DocumentoIE.WriteLn "</BODY>"
        obj_DocumentoIE.WriteLn "</HTML>"

        'Vamos a hacer una cuenta de 10 segundos.
        'Iniciamos el contador
        byt_Segundos = 1
        
        'Este bucle hará 10 segundos
        Do While byt_Segundos <= 10
        
            'Paramos 1 segundo
            WScript.Sleep 1000
            
            'Si falta menos de un minuto y más de 30
            'segundos, sonará una campanilla cada 10
            'segundos
            if (int_Minutos = 0 _
            And int_SegundosResto > 30 _
            And byt_Segundos = 10) Then
                
                Call s_ReproduceSonido(obj_Shell, _
                     "%SystemRoot%\media\ding.wav", 1)
                     
            'Si faltan menos de 31 segundos, sonará la
            'campanilla cada segundo
            ElseIf (int_Minutos = 0 _
            And int_SegundosResto <= 30) Then
            
                Call s_ReproduceSonido(obj_Shell, _
                     "%SystemRoot%\media\ding.wav", 1)
            End If
            
            'Incrementamos el contador de segundos
            byt_Segundos = byt_Segundos + 1
        Loop

        'Restamos los segundos transcurridos
        int_Segundos = int_Segundos - 10
        
        'Si quedan segundos, incrementamos el contador
        'de decenas de segundos
        If int_Segundos > 0 Then _
              int_Contador = int_Contador + 1
              
        'Si el contador de decenas de segundos es igual a 6
        If int_Contador = 6 Then
            
            'Ponemos el contador a cero
            int_Contador = 0
            
            'Restamos un minuto al tiempo restante
            int_Aviso = int_Aviso - 1
            
            'Escribimos el nuevo valor en el registro
            obj_Shell.RegWrite _
               "HKCU\Software\Limitar-Sesion\Minutos", _
               int_Aviso, "REG_DWORD"
               
            'Reproducimos un sonido de notificación
            Call s_ReproduceSonido(obj_Shell, _
               "%SystemRoot%\media\notify.wav", int_Aviso)
       End If

    Loop

    'Se acabó el tiempo de sesión, vamos a comunicarlo
    'al usuario
    
    'Al igual que vimos antes, como tenemos que hacer
    'referencia a Internet Explorer, debemos tener en
    'cuenta que ha podido ser cerrado
    On Error Resume Next
    
    'Ponemos en blanco el navegador
    obj_IE.Navigate "about:blank"
    
    'Si se ha producido el error 462, significa que
    'el usuario cerró Internet Explorer; obraremos en
    'consecuencia
    If Err.Number = 462 Then
    
        'Volvemos a abrir un Internet Explorer
        Set obj_IE = f_IE
        
        'Ponemos un documento en blanco en
        'Internet Explorer
        obj_IE.Navigate = "about:blank"
        
    End If
    
    'Vaciamos el objeto Err
    Err.Clear
    
    'Devolvemos el control de errores a WScript
    On Error Goto 0
    
    'Creamos el documento en el que avisamos que se cierra
    'la sesión
    Set obj_DocumentoIE = obj_IE.Document
    obj_DocumentoIE.WriteLn "<HTML>"
    obj_DocumentoIE.WriteLn "<HEAD>"
    obj_DocumentoIE.WriteLn _
                 "<TITLE>Se acaba la sesión</TITLE>"
    obj_DocumentoIE.WriteLn "</HEAD>"
    obj_DocumentoIE.WriteLn "<BODY>"
    obj_DocumentoIE.WriteLn _
                  "<P><CENTER>Cerrando sesión...</CENTER></P>"
    obj_DocumentoIE.WriteLn "</BODY>"
    obj_DocumentoIE.WriteLn "</HTML>"

End Sub 's_Mensaje
'************************************************

'************************************************
Sub s_ReproduceSonido(obj_Shell, src_Sonido, int_Veces)

'Este procedimiento reproduce el sonido recibido como
'parámetro tantas veces como indica el parámetro recibido
    Dim int_Contador

    For int_Contador = 1 To int_Veces
        obj_Shell.Run _
           "sndrec32 /play /close %SystemRoot%\media\ding.wav", _
            0, True
    Next

End Sub 's_ReproduceSonido
'************************************************
'************************************************
Function f_IE() 'As InternetExplorer.Application

    Dim obj_IE 'As InternetExplorer.Application

    Set obj_IE = WScript.CreateObject( _
          "InternetExplorer.Application")

    'Ajustamos las propiedades iniciales del objeto
    'aplicación de Internet Explorer
    obj_IE.Navigate "about:blank"
    obj_IE.AddressBar = False
    obj_IE.StatusBar = False
    obj_IE.ToolBar = False
    obj_IE.MenuBar = False
    obj_IE.Width = 300
    obj_IE.Height = 150
    obj_IE.Resizable = False
    obj_IE.Visible = True
    
    'Devolvemos el objeto
    Set f_IE = obj_IE
    
    'Vaciamos el objeto
    Set obj_IE = Nothing

End Function 'f_IE
'************************************************

22 comentarios to “Script VBScript Para Limitar El Tiempo De Sesión Al Día”

  1. Andres said

    No me sirve, porfavor escribeme al correo

  2. Andres said

    no entiendo lo de guardar el documento, yo copie todo lo que esta en gris y lo guarde ya igual e hice todo bien pero no hace nada, porfavor espero respuesta

    Y muy bueno esto, en seio, demasiado pro!! gracias

  3. Andres said

    Ya me sirvio, lo unico es que hay que crear ‘Cadena Multiple Expandible’ porque la otra no sirve

    Eres un GENIO!!! Jajaja gracias

  4. Andres said

    Bueno, si se ejecuta el script pero simplemente cuando lanza el aviso de antelación le doy en la X (Cerrar) y se cancela todo.

    Entonces nose, Porfavor contactarme o escribir aqui

    Gracias!!!

  5. urpiano said

    Andrés,

    Respecto a lo del registro, eso te pasa porque has debido poner alguna variable de entorno (%windir%, %userprofile%, etc.) en el valor, en cuyo caso, efectivamente, es necesario que el valor sea Cadena Múltiple Expandible.

    Respecto a lo otro… ¡je! el infante al que le di este “regalito” no ha hecho esa perrería, tan obvia por otra parte, y por tanto ni caí en la cuenta de eso. Ya lo he arreglado, prueba ahora, a ver si ya no tiene fallos.

  6. Andrews said

    Muchas Graciass, ahora el problema que veo es que se cierra cuando va a avisar, osea lo pongo ‘… 10 5’ y se cierra a los 5 minutos en vez de a los 10 que deberia ser. Cuando abre el Aviso IE solo sale ‘Cerrando Sesion’ apenas lo abre.

    Disculpa las molestias y GRACIAS!

  7. Andrews said

    Y hay alguna manera de no permitir que un usuario abra el administrador de tareas (Y Cierre procesos) y q no pueda entrar a regedit???

    Ahh… y ya hay solucion al problema de script???

    Muchas Gracias!!

  8. Andres said

    Y hay alguna manera de no permitir que un usuario abra el administrador de tareas (Y Cierre procesos) y q no pueda entrar a regedit???

    Ahh… y ya hay solucion al problema de script???

    Muchas Gracias!!***

  9. Andres said

    alguna solucion?

  10. urpiano said

    Andrés,

    Perdona, pero últimamente ando muy liado y no he podido ponerme con esto hasta hoy. Mira si ahora ya funciona bien.

    Si el XP es un Professional, puedes habilitar la directiva “Configuración de usuario\Plantillas Administrativas\Opciones de Ctrl+Alt+Sup\Quitar Administrador de tareas”. Esto lo puedes hacer con una GPO, que afecte a los usuarios que a tí te interesen, si estás en un dominio de Active Directory; si se trata de un grupo de trabajo lo debes hacer con las políticas del sistema (gpedit.msc). Lo malo de esto último es que la directiva se aplica a todos los usuarios, incluido el administrador; para evitar esto último puedes intentar lo que se indica en el KB293655 de Microsoft.

  11. Andres said

    Mmmm ya ya, muchas gracias. Mañana lo pruebo y te aviso como va. Y disculpa por las molestias, más bien muchas gracias!!!

    Y lo del Administrador de Tareas no me sirve q lo restringa a todos, entonces queria preguntarte si con simplemente metiendome a C:\WINDOWS\system32 y cambiandole la ‘Seguridad’ a taskmgr.exe y a regedt32.exe (ese tambien lo quiero deshabilitar) haga que un usuario(con privilegios de administrador) no pueda accesar a esos recursos y que no cause ningun problema o fallo.

    Muchas Gracias por todo, y sinseramente algun dia espero ser como tu haha ;)

  12. Andres said

    El de regedit no es ese, era ‘regedit.exe’ en C:\WINDOWS

  13. Andres said

    Y si funciona perfectamente el script, en el primer intento al cerrar la ventana para probar si se abria de nuevo me dio un error en una linea, pero no me acuerdo cual. Y ya despues volvi a hacer todo y no me dio error y funciono perfectamente. Voy a seguir probando y si me sale te aviso y me fijo cual linea falla.

    Pero por el momento creo que quedo perfecto y quien sabe que causo el error.

    Muchas Graciass!!

  14. Andres said

    Ya no hay ningun fallo, no volvio a aparecer el error, esta listo para el mercado haha.

    Muchas Gracias!

    Y se puede hacer eso con el regedit.exe y taskmgr.exe?

  15. urpiano said

    Andrés,

    No lo sé, nunca lo hice; prueba y nos cuentas :-)

  16. Fernando said

    Hola..

    Muchas gracias por el scrip, pero no he podido hacerlo funcionar, nisiquiera me sale alguna ventana al iniciar la sesión como dices, creo la cadena de valor multiple y no sirve, creo la expandible y tampoco, incluso creo la alfanumérica y tampoco. al ejecutarlo directamente me sale un error en la linea 48. Me pueden ayudar por favor??.

    Gracias.

    Éxitos.

  17. urpiano said

    Fernando,

    Si te error esa línea, lo más probable es que no estés pasando los parámetros requeridos

  18. Bto said

    Alguna manera de ejecutarlo como SERVIDOR para que no lo puedan depurar ????

  19. urpiano said

    Bto,

    No, no puedes; ten en cuenta que se basa en el tiempo de sesión propio del usuario que lo lanza. Ya aviso que un usuario espabiladillo descubrirá como saltarselo, de ahí que esté pensado principalmente para usuarios de niños; si el niño descubre cómo hacerlo ¡ole sus narices! :-)

  20. Bto said

    Haha bueno, lo que habia hechos fue desabilitar regedit y taskmgr, pero prefiero no hacerlo :P

    De todos modos gracias ;)

  21. Raquel said

    Hola,

    Me pudieran ayudar a resolver mi problema con el error en la línea 48?. Pues creo la cadena expandible: wscript c:limar-sesion.vbs 60 5 y me marca ese error. Lo que hago tambien es sustuir el archivo .wav que se hace referencia puesto que no lo tengo en esa misma ruta e igual me muestra el error. Les agraderece si pudieran ayudarme.

    Saludos, y muchas felicidades al creador. Muy buen aporte

    • urpiano said

      Raquel,

      De verdad que me tiene hasta las narices la “textualización” (así la llaman) de WordPress. El asunto es que por más que encierro el código de los scripts entre tags de HTML que deberían respetarlo, hay determinados caracteres que se empeña cambiar. Además, cuando voy y lo corrijo, de repente la cambian y los que respetaba deja de respetarlos y otros que no respetaba pasa a hacerlo. En concreto el problema está con el backslash (“\”). Cuando saqué este script por primera vez no lo respetaba y lo que hice fue ponerle doble (“\\”) para que así mostrar 1; pasado el tiempo sí lo respetó, con lo que me estropeó el script, mostrando dos donde debería haber uno; vuelta a retocar el script; ahora vuelve a no respetarlos. Acabo de volver a retocarlo, a ver si ahora no te da problemas.

      Por si lo estás pensando, el poner el script como fichero TXT adjunto a la entrada en lugar de su es peor, pues aunque sea un fichero que te descarges, WordPress sigue “textualizandolo” y al ser un TXT no puedo hacer las operaciones HTML necesarias para evitar que estropee el código (sustituir caracteres que tengo identificados como conflictivos por su código HTML, como por ejemplo sustituir “>” por “>”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: