Iniciar sesión

Ver la versión completa : ¿Algún programa WYSIWYG para insertar en base de datos?



Puck2099
30/07/2008, 16:06
Hola,
Busco algún programa (da igual binario o web tipo php) que sirva para insertar texto html en una base de datos MySQL.

No sé si me explico, algo como este formulario para escribir posts que lo que realmente hace es insertar todo lo escrito (con su formato) en una base de datos de la que se pueda extraer posteriormente para mostrarlo.

La cosa es que no encuentro un CMS o similar que se adecue a lo que busco y había pensado en hacerme la web yo mismo en PHP + MySQL, pero necesitaría alguna forma de insertar los contenidos que no fuera a pelo en HTML, pues para eso la hago en HTML y me supone menos esfuerzo...

¿Alguna idea?

Gracias

ZeNiTRaM
30/07/2008, 16:52
Umm.. creo que te entiendo, mas o menos. Si lo quieres para editar páginas de manera "interna", puedes usar esto:

http://www.phpmyedit.org/

Tiene un plugin que edita HTML con un formulario WSIWYG. Yo lo tengo en funcionamiento para cierto mashup de Google Maps que hice para un trabajo de religión el año pasado: http://zen.itram.es/religion

AOJ
30/07/2008, 17:11
Tinifck (http://p4a2.crealabsfoundation.org/tinyfck)

Lo que te devuelva, lo enchufas a saco en la BD y listo. Luego lo vuelcas en un php y listo. No me he explicado muy bien, no tengo tiempo!

kraff2
30/07/2008, 17:31
Para completar la estupenda recomendación de ZeNiTRaM, tienes varias opciones para elegir editores html, personalmente he usado tinymce junto con phpmyedit sin ningún tipo de problema, y creo que FCKeditor también se puede integrar con relativa facilidad:

http://tinymce.moxiecode.com/
http://www.phpmyedit.org/

Puck2099
30/07/2008, 21:23
Joe, estoy probando el phpMyEdit que dice Martinez y está genial, es justo lo que buscaba :)

Ahora a ver si consigo conectarle un editor "gráfico" como los que dice kraff2 para completar la cosa.

Muchas gracias :brindis:

< - >
Ya tengo el TinyMCE integrado, ahora está casi perfecto :)

Solo una cosilla, ¿cómo hacéis para que no pueda usarlo cualquiera? Me refiero a si se puede poner un login y password o similar para que no se meta un hacker y me lie la marimorena...

kraff2
30/07/2008, 21:54
Lo m&#225;s c&#243;modo y seguro es usar la protecci&#243;n de directorios del servidor apache (supongo que usar&#225;s ese), te defines un directorio de administraci&#243;n y dentro de ese colocas todos los archivos del phpmyedit.

Generalmente los hostings suelen llevar una utilidad en el panel de control para configurar la protecci&#243;n de directorios pero si no tienes o te has montado un hosting tu mismo el sistema es bastante sencillo editando un par de archivos. Encontrar&#225;s muchos tutoriales que seguro que lo explican mejor que yo, por ejemplo:

http://bulma.net/body.phtml?nIdNoticia=656
http://www.batiburrillo.net/adivina/adivina_sw19.php
http://www.allcusco.com/blog/proteger-directorios-con-htaccess-y-htpasswd/

La alternativa ser&#237;a usar un sistema de seguridad basado en cookies, sesiones y base de datos, pero para un acceso simple de administraci&#243;n de la web es matar moscas a ca&#241;onazos ;)

Puck2099
30/07/2008, 22:06
Lo más cómodo y seguro es usar la protección de directorios del servidor apache (supongo que usarás ese), te defines un directorio de administración y dentro de ese colocas todos los archivos del phpmyedit.

Ah, y que sea el propio apache el que me pida un login mediante un popup o similar, ¿no?

kraff2
30/07/2008, 22:30
En efecto te saldr&#225; una ventanita gestionada por el navegador pidiendo el nombre de usuario y contrase&#241;a.

< - >
En el siguiente enlace puedes ver una demostraci&#243;n del funcionamiento, para que puedas comprobar los mensajes que da el navegador y el apache seg&#250;n sea v&#225;lido o no el login:

http://www.he.net/faq/tutorials/htaccess/demo.html

< - >
Por cierto si quieres personalizar la p&#225;gina de error 401 del apache es tan sencillo como a&#241;adir al .htaccess la l&#237;nea:

ErrorDocument 401 http://www.mipagina.com/mi_error401.html

Puck2099
31/07/2008, 00:05
En efecto te saldrá una ventanita gestionada por el navegador pidiendo el nombre de usuario y contraseña.

< - >
En el siguiente enlace puedes ver una demostración del funcionamiento, para que puedas comprobar los mensajes que da el navegador y el apache según sea válido o no el login:

http://www.he.net/faq/tutorials/htaccess/demo.html

< - >
Por cierto si quieres personalizar la página de error 401 del apache es tan sencillo como añadir al .htaccess la línea:

ErrorDocument 401 http://www.mipagina.com/mi_error401.html

Gracias, lo he probado en mi servidor y, tanto usando el .htaccess de esa web como el que se me genera mediante las herramientas del servidor, no consigo que se muestre el mensaje de petición de usuario y contraseña, directamente sale el mensaje de página no encontrada...

¿Sabes a qué se puede deber?

kraff2
31/07/2008, 08:55
Cuando dices "herramientas del servidor" te refieres a un panel de control tipo "cpanel":

http://images.google.com/images?q=cpanel

Si se trata de un servidor de pago y con cpanel, las herramientas del servidor de protección de directorios deberían funcionar sin problemas, si quieres puedo detallarte paso a paso como se hace que más de una vez los sistemas cpanel son un tanto liosos :(

Si el servidor lo has montado tú es posible que en la configuración del apache no tengas activada la opción de comprobar el .htaccess de cada directorio, ahora mismo no recuerdo exactamente dónde está pero si me dices que versión del apache tienes instalada puedo mirarlo a ver ;)

Puck2099
31/07/2008, 09:06
Cuando dices "herramientas del servidor" te refieres a un panel de control tipo "cpanel":

http://images.google.com/images?q=cpanel

Si se trata de un servidor de pago y con cpanel, las herramientas del servidor de protección de directorios deberían funcionar sin problemas, si quieres puedo detallarte paso a paso como se hace que más de una vez los sistemas cpanel son un tanto liosos :(

Si el servidor lo has montado tú es posible que en la configuración del apache no tengas activada la opción de comprobar el .htaccess de cada directorio, ahora mismo no recuerdo exactamente dónde está pero si me dices que versión del apache tienes instalada puedo mirarlo a ver ;)

Sí, exacto, es un CPanel. Me metí en lo de protección de directorios, marqué el directorio en cuestión, creé un usuario y password para él y al activar la protección no me deja a la web dentro de ese directorio diciéndome que no está encontrada. Les mandé anoche un ticket a los de soporte, pero no me fio nada...

El apache no lo puedo tocar yo puesto que es un server compartido de estos, la versión es la 1.3.41.

kraff2
31/07/2008, 09:38
En ese caso debería funcionar sin problemas, lo que me extraña es el error que te da, ¿tienes un archivo index.html|index.htm|index.php en la raíz del directorio protegido? ¿si no proteges el directorio funciona correctamente?

Puck2099
31/07/2008, 09:42
En ese caso debería funcionar sin problemas, lo que me extraña es el error que te da, ¿tienes un archivo index.html|index.htm|index.php en la raíz del directorio protegido? ¿si no proteges el directorio funciona correctamente?

No, no tengo un index, intento acceder directamente al archivo en cuestión (http://www.gp32wip.com/prueba2/restricted.html).

Si quito la protección sí funciona perfectamente...

En el CPanel hay un apartado que pone editar .htaccess y viene lo siguiente que parece ser que metió el Joomla:


##
# @version $Id: htaccess.txt 423 2005-10-09 18:23:50Z stingrey $
# @package Joomla
# @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##

#
# mod_rewrite in use
#

RewriteEngine On

# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update YourJoomlaDirectory (just / for root)

# RewriteBase /YourJoomlaDirectory

#
# Rules
#

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php



No sé si ayudará algo, pero por si acaso...

Gracias por la ayuda :brindis:

kraff2
31/07/2008, 10:03
Pues es raro ya que probando http://www.gp32wip.com/prueba2/restricted.html si miro en el navegador la informaci&#243;n de la p&#225;gina me aparece:
http://img183.imageshack.us/img183/3100/p1rl1.png

Parece que s&#237; deber&#237;a ser una p&#225;gina protegida por lo de WWW-Authentication &#191;?
Es posible que el .htaccess ese que ha instalado el joomla (supongo que en la ra&#237;z) y que se encarga de redirigir p&#225;ginas a index.php sea el responsable, &#161;vaya! acabo de probar a entrar en http://www.gp32wip.com/prueba2/index.php y me pide password, as&#237; que creo que s&#237; es un problema con esa redirecci&#243;n. Supongo que el joomla la necesita para funcionar pero debe haber una forma de compatibilizar ambas cosas, lo primero que se me ocurre es quiz&#225;s desactivar el RewriteEngine en el .htaccess del directorio protegido con:

RewriteEngine Off

Prueba a ver si suena la flauta :D

Puck2099
31/07/2008, 10:13
Pues es raro ya que probando http://www.gp32wip.com/prueba2/restricted.html si miro en el navegador la información de la página me aparece:
http://img183.imageshack.us/img183/3100/p1rl1.png

Parece que sí debería ser una página protegida por lo de WWW-Authentication ¿?
Es posible que el .htaccess ese que ha instalado el joomla (supongo que en la raíz) y que se encarga de redirigir páginas a index.php sea el responsable, ¡vaya! acabo de probar a entrar en http://www.gp32wip.com/prueba2/index.php y me pide password, así que creo que sí es un problema con esa redirección. Supongo que el joomla la necesita para funcionar pero debe haber una forma de compatibilizar ambas cosas, lo primero que se me ocurre es quizás desactivar el RewriteEngine en el .htaccess del directorio protegido con:

RewriteEngine Off

Prueba a ver si suena la flauta :D

¿O podría renombrar el archivo protegido a un index.html o index.php, verdad? La verdad es que si es cosa del Joomla me da un poco igual, pues en cuanto tenga la web hecha va a ir fuera. Voy a probar lo del index a ver si tira... :)

< - >
Vale, solo me tira si nombro a la página index.php (ni como index.html funciona), pero da igual, supongo que desde él sí podré poner enlaces a otros archivos protegidos :)

Ahora a ver cómo me las apaño para crear algo multilenguaje.

Muchas gracias por la ayuda :brindis:

kraff2
31/07/2008, 10:26
Vale, solo me tira si nombro a la p&#225;gina index.php (ni como index.html funciona), pero da igual, supongo que desde &#233;l s&#237; podr&#233; poner enlaces a otros archivos protegidos :)
No te lo puedo asegurar ya que no he utilizado mucho el RewriteEngine y desde luego no de forma tan "dictatorial" como el del joomla :D, pero si no te funciona prueba lo de desactivarlo en el .htaccess del directorio protegido.


Ahora a ver c&#243;mo me las apa&#241;o para crear algo multilenguaje.

Muchas gracias por la ayuda :brindis:
Lo m&#225;s c&#243;modo en mi opini&#243;n es duplicar los campos que sean multilenguaje en la base de datos tal que:

CREATE TABLE `noticia` (
`id` int(11) NOT NULL auto_increment,
`titulo_es` varchar(100) default NULL,
`titulo_en` varchar(100) default NULL,
`texto_es` text,
`texto_en` text,
`fecha` datetime default NULL,
`firma` varchar(150) default NULL,
PRIMARY KEY (`id`)
)

Luego a la hora de hacer las consultas con SELECT utilizas titulo_$lang, texto_$lang pillando la variable $lang desde la url por ejemplo ;)

Puck2099
31/07/2008, 10:31
No te lo puedo asegurar ya que no he utilizado mucho el RewriteEngine y desde luego no de forma tan "dictatorial" como el del joomla :D, pero si no te funciona prueba lo de desactivarlo en el .htaccess del directorio protegido.

Bueno, hasta no tener la nueva web prefiero no tocar nada, no sea que la joda :angel1:


Lo más cómodo en mi opinión es duplicar los campos que sean multilenguaje en la base de datos tal que:

CREATE TABLE `noticia` (
`id` int(11) NOT NULL auto_increment,
`titulo_es` varchar(100) default NULL,
`titulo_en` varchar(100) default NULL,
`texto_es` text,
`texto_en` text,
`fecha` datetime default NULL,
`firma` varchar(150) default NULL,
PRIMARY KEY (`id`)
)

Sí, había pensado en algo similar a eso o hacer una tabla para cada lenguaje, aunque supongo que la solución que dices facilitará la tarea de traducción.


Luego a la hora de hacer las consultas con SELECT utilizas titulo_$lang, texto_$lang pillando la variable $lang desde la url por ejemplo ;)

Eso es lo que estaba investigando ahora mismo, cómo pillar el idioma de la url o al pinchar un botón con la banderita. ¿No es difícil, no?

kraff2
31/07/2008, 10:52
Bueno, hasta no tener la nueva web prefiero no tocar nada, no sea que la joda :angel1:
Tocando el .htaccess de prueba2 para desactivar el Rewrite en ese direcotio no debería afectar al joomla para nada ;)




Sí, había pensado en algo similar a eso o hacer una tabla para cada lenguaje, aunque supongo que la solución que dices facilitará la tarea de traducción.
El "problema" de duplicar tablas es que también duplicas información y trabajo con lo que no se traduce como la fecha o el id en el ejemplo anterior, además como bien dices al usar el phpmyedit y tener los campos de texto de ambos idiomas uno encima del otro facilita la traducción :brindis:



Eso es lo que estaba investigando ahora mismo, cómo pillar el idioma de la url o al pinchar un botón con la banderita. ¿No es difícil, no?
En php tan sencillo como poner $_REQUEST['lang'], aunque para evitar problemas de seguridad con Sql injection (http://en.wikipedia.org/wiki/SQL_injection) deberías filtrar todas las variables no controladas como las que provienen de la url antes de usarlas en una consulta a la base de datos. En en enlace de la wikipedia veras ejemplos para ello y en internet encontraras cienes o miles de funciones para prevenir el sql injection :D

< - >
Lo olvidaba, otra buena pr&#225;ctica para aumentar la seguridad es definir al menos dos usuarios para la base de datos, el administrador con todos los permisos que usar&#225;s en el phpmyedit y un usuario para la parte p&#250;blica limitado a consultas SELECT ;)

Malenko
31/07/2008, 11:09
Para hacerla multi-idioma lo har&#237;a de una forma diferente, ya que la soluci&#243;n de kraff2 es poco "escalable". Que har&#225;s cuando pongas otro idioma? Lo mejor es hacerla as&#237;:

CREATE TABLE `noticia` (
`id` int(11) NOT NULL auto_increment,
`idioma` varchar(2),
`titulo` varchar(100) default NULL,
`texto` text,
`fecha` datetime default NULL,
`firma` varchar(150) default NULL,
PRIMARY KEY (`id`, `idioma`)
)

kraff2
31/07/2008, 11:48
Tienes raz&#243;n Malenko en que mi soluci&#243;n es poco escalable pero creo que es la que mejor se adapta a la forma de trabajar con phpmyedit ;) y se puede a&#241;adir un idioma m&#225;s con relativa facilidad a&#241;adiendo m&#225;s campos "_lang" a la base de datos y con copiar y pegar en los archivos de administraci&#243;n de phpmyedit, es trabajo pero muy poco comparado con todo lo que conlleva a&#241;adir un nuevo idioma a una web que ya tenga bastantes datos introducidos :D

Puck2099
04/08/2008, 00:57
Hola,

Ya estoy liado con la web siguiendo vuestros consejos, pero ahora tengo una dudilla respecto al PHP (a ver si me acerco por la universidad a por un buen libro...). ¿Hay alguna variable global que te devuelva el nombre del fichero actualmente cargado?

No sé si me explico, tengo una serie de páginas con un header común con la banderita de los idiomas, pues bien, me gustaría que al pinchar en la bandera se llame a la misma página pero pasándole el lang=x (por ejemplo pagina2.php?lang=es). Por eso quisiera saber el nombre de la página para meter eso en el header común y no tener que cambiarlo en cada página.

Gracias

BUHOnero
04/08/2008, 08:34
$_SERVER["REQUEST_URI"] te da toda la URL actual, yo hago un explode con el ? para saber si paso alguna variable actualmente, si paso variables la a&#241;ado a la URL &lang='idioma', si no hay variables le a&#241;ado a la URL ?lang='idioma'

^MiSaTo^
04/08/2008, 11:43
Hola,

Ya estoy liado con la web siguiendo vuestros consejos, pero ahora tengo una dudilla respecto al PHP (a ver si me acerco por la universidad a por un buen libro...). ¿Hay alguna variable global que te devuelva el nombre del fichero actualmente cargado?

No sé si me explico, tengo una serie de páginas con un header común con la banderita de los idiomas, pues bien, me gustaría que al pinchar en la bandera se llame a la misma página pero pasándole el lang=x (por ejemplo pagina2.php?lang=es). Por eso quisiera saber el nombre de la página para meter eso en el header común y no tener que cambiarlo en cada página.

Gracias

Te recomiendo que no pilles ningún libro de la escuela de PHP.
Mira la web oficial de php y w3schools y así te ahorras el paseo.
Sino habla con Yago (Santiago Alonso, OEI) que es el que te puede decir un buen libro, aunque a mi en su día me dijo php.net y w3schools xD
De todos modos yo tengo bastantes cosas impresas sobre este tema (web, bbdd, etc) porque precisamente es con lo que trabajo, recuerdamelo si quieres la próxima vez que nos veamos y te llevas lo que quieras