Estimados,
Estoy configurando un sitio web en Drupal 6.12, y tengo toda la base funcionando bien.
Después, por supuesto, quiero poder editar HTML en línea y subir imagenes para ilustrar mis posts.
Bueno, la idea es que después de probar el módulo TinyMCE (sin llegar a hacerlo funcionar), me di cuenta de que recomiendan el módulo WYSIWYG para hacer este tipo de cosas.
Entonces voy, instalo WYSIWYG y descargo TinyMCE pero no me sale tampoco. Como lamentablement tengo mucha prisa, lo dejo para instalar a FCKEditor (que me gusta menos porque es bien cargado). Suele mencionar que este maldito TinyMCE no se descomprima en su propia carpeta, lo que implica mover los ficheros si fueron descomprimidos dentro del módulo wysiwyg.
Esto sí me funciona directo (descargo el FCKeditor dentro de sites/all/modules/wysiwig y se descomprima dentro de una subcarpeta directamente.
Bueno, esta parte funciona, pasamos a lo siguiente.
Quiero poder subir imágenes directamente al servidor (no tener que subirlos en otro servidor o por FTP para poder usarlos).
Instalo al módulo IMCE (aprovecho para hacerlo a través del modulo drush que es bien bacán para este tipo de instalación rápida).
Lo configuro rápido (nada muy complicado, ni me acuerdo de los detalles) y después prueba de subir un imagen pero FCKEditor me dice que no ha sido habilitado el conector para subir ficheros.
Sigo la recomendación y edito a mano el fichero sites/all/modules/wysiwyg/fckeditor/editor/filemanager/connectors/php/config.php y le pongo "true" en su variable "algo_enabled". También configuro los dos paths siguientes para asegurarme que los imagenes se suben en el buen lugar.
Pruebo subir un imagen y... todo bien. Excelente, todo me funciona.
Ahora, porque estoy escribiendo este post? Pues es simple: esto no es seguro. El fichero config.php debería (según recomendaciones en el fichero mismo) implementar algún tipo de verificación de permisos antes de seguir adelante. Sino el fichero de upload puede ser llamado directamente y alguien puede subir un fichero no deseado por el servidor sin tener ningún permiso ahí.
Entonces, estaba probando de jalar desde ahí alguna información sobre la sesión activa, pero no me sale nada.
Mi pregunta es: como puedo verificar que un usuario este conectado a Drupal, usando la sesión o algún otro mecanismo bastante seguro del servidor?

Comments
IMCE
No tengo la menor idea de cómo hacer la verificación que quieres, pero sí puedo decirte que, en Drupal 6, TinyTiny MCE funciona perfectamente y te permite usar IMCE como en cualquier instalación de TinyMCE regular. No he probado WYSWYG en Drupal 6, pero en Drupal 5 me funciona bien, con TinyMCE, FCKEditor y Yui. Pero de los tres, sigo prefiriendo TinyMCE.
El único problema con TinyTinyMCE es que crear distintos perfiles de usuario es un poco más complicado que con la instalación original.
Datos de usuario
Yannick,
Cuando se llama a ese archivo config.php que mencionas ¿cómo se hace ese llamado? ¿se hace a través de Drupal o FCKEditor lo hace directamente o haciendo una llamada AJAX?.
Bueno, no he visto hasta ahora ese tema porque no he usado FCKEditor (aunque lo he instalado nunca lo he usado en producción).
Suponiendo que el llamado se hace a través de Drupal. Es decir que se tiene a la mano los objetos y funciones de Drupal. Hay una función con la cual se verifican los permisos: user_access
http://api.drupal.org/api/function/user_access/6
la cual recibe el nombre del permiso que quieres verificar (cada módulo tiene sus permisos).
Por ejemplo, podrías indicar que tenga acceso solo los que pueden acceder contenidos
if(user_access("access content"))
Ahora si solo quieres verificar si es que el usuario está logueado o no, lo que puedes hacer es referenciar la variable $user
global $user;
que es un objeto, que tiene varias propiedades y métodos.
Aunque la verdad no se si (fuera de salir del tema inmediato) sea una buena idea hacer una codificacion directa de quienes tiene acceso sobre ese archivo. Digo, no seria mejor que esto se pueda configurar a través de la interfaz de drupal.
Gracias rcechang, El
Gracias rcechang,
El problema es que no está llamado desde Drupal, es aparte (desde FCKeditor como lo sugerías, la llamada inicial siendo lanzada por un JavaScript según lo que entiendo sin analizarlo demasiado).
El problema es que, aun lanzando un session_start() al inicio de mi config.php, no llego a tener nada en mi sesión. Se supone que, si estoy en el mismo nombre de dominio, bajo la misma carpeta raís, debería permitirme de recojer mi sesión (simplemente porque mi ID de sesión esta pasado en el Cookie para todas las pedidas al mismo dominio). Pero no... mi sesión (error_log(print_r($_SESSION,1)); por si a caso ) esta vacía.
Yannick Warnier
Manager y Consultor e-learning - http://www.beeznest.com
Presidente - Asociación Chamilo - http://www.chamilo.org
Otra opción
Otra opcion que se me ocurre, si es que ese archivo no es llamado directamente por AJAX, es que limites el acceso a esa carpeta con un .htaccess, por ejemplo para que solo pueda ser leído desde el localhost.
algunas ideas
A ver si esto te ayuda un poco.
Yo tengo algunos drupals 6.x instalados y funcionando, en todo uso Wysiwyg API, porque así puedo usar el editor que mas acomode al cliente, FCKeditor, TinyMCE, jWYSIWYG y otros soportados por el API, no es tan difícil, solo debes descomprimirlos en la ruta correcta y luego ir a configuracion del sitio y configurar el Wysiwyg API para que use uno de los editores instados según el tipo de entrada que tengasen tu nodo.
hasta allí nada de imágenes.
Para las imágenes tienes dos alternativas, puede usar el IMCE, pero como ya estas usando el Wysiwyg API necesitaras la "IMCE Wysiwyg API bridge" este modulo permite usar IMCE con TinyMCE y FCKeditor a través del Wysiwyg API (ojo solo funciona con estos dos).
La segunda opción es el modulo Inline, que te permite insertar las imágenes dentro del cuerpo del nodo usando un tag especifico (ver en la documentación), este modulo no depende del editor, así que puedes usar lo que quieras para editar el texto, el problema es que no es visual, veras el resultado cuando des enviar al contenido.
Ventajas y desventajas:
en la primera opción "imce" es incompatible con el modulo de Google Analytics, además de otros módulos. Si no los usas entonces ya esta.
En la segunda opción, bueno a muchos les gusta ver lo que están haciendo, por mi parte no hay problema.
Particularmente uso Inline, porque se acopla muy bien con el imagecache y Lightbox2, aun esta en beta el soporte para imageField del CCK.
por otro lado, hay una tercera opción.
usar CCK crear un campo imageField, para lo que necesitaras del filefield, imageAPI y imagecache, luego instalar el Content Templates (Contemplate) y distribuir tus imagenes dentro de tu contenido usando una platilla. Esta opción la puedes combinar con el Lightbox2 y asi finalmente al dar clic en cualquiera de tus imagenes tendrías una galería única.
:) todo es cuestión de acomodarce un poco y jugar con las alternativas.
Para la primera opción:
http://drupal.org/project/wysiwyg
http://drupal.org/project/imce_wysiwyg
http://drupal.org/project/imce
http://tinymce.moxiecode.com/ o http://tinymce.moxiecode.com/ o los dos a la vez.
Para la opción 2:
http://drupal.org/project/inline
Tercera opción:
http://drupal.org/project/cck
http://drupal.org/project/contemplate
http://drupal.org/project/imagefield
http://drupal.org/project/filefield
http://drupal.org/project/imageapi
es posible que otros tenga otras opciones mas :)
de paso te recomiendo algunos módulos que ayudan mucho para el tema de SEO y para guardar correctamente los nombres de los archivos con caracteres tildados y etcéteras...
Custom breadcrumbs (permite mejorar la ruta que sigue el user desde el home de la pagina)
pathauto (genera alias a los nodos de forma automática)
Global Redirect (previene que se repitan los alias cuando el modulo pathauto genera automaticamente el alias)
token (este modulo es muy importate para la integración de otros módulos entre si)
Transliteration (estandariza el chart set de los archivos)
Buena suerte, si descubres algo interesante postealo, le servirá a alguien mas...
Gracias por la información,
Gracias por la información, pero quiero indicar bien que mi preocupación es del lado de la seguridad. Si bien es cierto que es simple de instalar FCKeditor (y que tal vez me equivoqué en algún lugar con TinyMCE), el archivo config.php mencionado de FCKeditor indica claramente que hay un riesgo de seguridad al activarlo, y que permite a cualquier persona de subir archivos a mi sistema. Si bien hay métodos de filtro del tipo de archivo, espero que nadie de ustedes ha tenido que hacer frente a un ataque usando este método para subir archivos ejecutables (scripts PHP o programas compilados) y destruír todos los datos en su servidor.
Repito que el problema está en la seguridad, que ustedes parecen estar ignorando ahí cuando activan el subir imagenes.
Lo único que quiero hacer es recuperar la sesión de Drupal dentro del script config.php del connector PHP de FCKEditor para poder subir ficheros (plugin filemanager).
Yannick Warnier
Manager y Consultor e-learning - http://www.beeznest.com
Presidente - Asociación Chamilo - http://www.chamilo.org
En base a lo que dice
En base a lo que dice @cesars aquí y viendo el index.php de D6, porque ABSOLUTAMENTE TODAS las rutas de Drupal DEBEN pasar por index.php, las primeras lineas deben ser:
require_once './includes/bootstrap.inc';drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Luego se debería poder verificar la sesión con
global $userPero en realidad este es un GRAVE error. Porque Drupal "sabe donde esta parado" y luego del bootstrap y por estar en otra ruta, lo más probable es que no cargue la sesión, y si lo hace, al recibir el archivo, hará sus validaciones anti-hack, Y NO VA HA SUBIR NADA (o al menos no dentro de Drupal).
Lo que se tiene que hacer en este caso es "lamentablemente" crear un módulo en drupal, generar un formulario usando FORM API, meterlo de alguna forma dentro del upload form de IMCE(iframe? agg!) y que retorne la ruta dentro de carpeta sites/*/files donde Drupal amablemente y de forma segura se encargo de guardar el archivo.
Si alguien conoce avances a este respecto (porque he visto poco - odio FCKEditor), sería bueno avanzar y porque no, asignarnos esta nueva tarea para las reuniones, ya me picó la curiosidad :)
Bendiciones!
--
more stuff...
(3 John 1:2) Dear friend, I pray that you may enjoy good health and that all may go well with you, even as your soul is getting along well.
--
[develCuy](http://steemit.com/@develcuy) on steemit
Esto se pone interesante
Quiza la pregunta sea ¿y por qué no puedo simplemente recuperar los datos de sesión? sin tanto lío ni vueltas.
Bueno, la explicación va por dos aspectos.
La tabla {sessions} tiene la siguiente estructura:
Muy bien, cuando un usuario hace login, se graba su id en el campo uid, para identificarlo, pero no se graba ninguna variable de sesión que esté sincronizada con $_SESSION. Si yo creo una variable de sesión con algo como $_SESSION['mivariable'] = 'Esta es mi variable', entonces esta información se graba en el campo session, de la tabla. Y es acá donde están todas las variables que yo podría acceder haciendo algo como print_r($_SESSION). Si es que no se ha grabado nada más aparte del usuario, la variable $_SESSION está vacía.
Espero que esta explicación ayude en algo a resolver el problema o por lo menos a entenderlo.
Un saludo
sobre FCK Editor
Los escucho y me parece mentira, Yo instalé el módulo y coincido con todos en algunos puntos, algo pesado, compleja configuración, superior en algunas cosas a TinyMCE y más pero lo ciertoque no he lograo poner una imagen en una página y no tengo idea de que otra cosa hacer, espero encontrar con uds una solución. Veo los archivos subidos al servidor, los bajo e incrusto en la página puedo redimensionar las imágenes y moverlas. Al guardar la página no parece la imagen en la página no tengo idea de lo que necesito hacer para resolver el problemita.
Formato de Entrada
Verificaste el formato de entrada. Si tiene Filter HTML y no tienes el tag img en la configuración para no filtrar, entonces debes agregarlo o colocar Full HTML.
Danilo Domínguez P.
System and Computing Engineer
Blog: http://danilo04.accionasolutions.net
Danilo Domínguez P.
System and Computing Engineer
Blog: http://danilo04.accionasolutions.net
Ayuda con el IMCE
Tiene una opción que es mi problema
Total user quota:
You can force total user quota to be a value independent of directory quota. This quota is calculated using the files table in the database, so that it will not include the files uploaded via FTP or by previous versions of IMCE(4.7.x and 5.x). You can either use both quotations together or safely ignore this by setting the value to 0.
(calcula el espacio total de los archivos subidos por IMCE ademas los subidos por otros modulos como por ejem image y photo)
Ese es el problema ya que si le coloco 3 megas afecta a todos los archivos subidos por otros modulos como image, photos,etc
No se que hacer para que esta cuota solo afecte a IMCE y no a otros modulos ya que cuando he subido archivos en otros modulos y sobrepase el espacio colocado en IMCE ya no me deja subir archivos en IMCE
Creo que es un error de IMCE ya que el limite de espacio subido por el usuario se determina en el modulo upload