Ya he terminado mi experimento con php. En mi página ya se pueden añadir comentarios al final de cada artículo y funciona todo (creo).
Aunque me ha costado un poco, porque no tengo ni idea de php, he aprendido algunas cosas. Aquí un pequeño resumen
- El usuario y password de la base de datos se guardan como dos variables en un fichero .php en algún sitio que no esté accesible desde el navegador, protegido con un .htaccess o simplemente fuera del directorio del sitio. No sé si es muy necesario, pero supongo que nunca está de más ser algo paranoico con la seguridad.
- Cuando se deja libertad a los visitantes para escribir texto que luego se va a insertar en base de datos o mostrar en el navegador, conviene escapar las comillas. PHP lo tiene más o menos resuelto con funciones del estilo addslashes() que hacen eso precisamente, poner una \ delante de las comillas. Hay un detalle con esto. PHP se puede configurar para que automáticamente añada las \ delante de las comillas en todas los contenidos que lleguen con $_POST o $_GET. Si esto es así, no debemos añadir nosotros más \. Para verificar esto, está la función get_magin_cuotes_gpc(), que nos devuelve 1 si PHP va a añadir automáticamente las \.
- Pasa lo mismo con los caracteres que html interpretará luego, como <, >, o los que no son válidos, como letras con acentos, eñes y demás. PHP también tiene una función para esto: htmlspecialchars()
- Cuando recogemos una fecha/hora de base de datos, el formato obtenido no le gusta a PHP. Para que sea más compatible, en el select de base de datos podemos poner "select UNIX_TIMESTAMP(fecha) as fecha, otrocampo from…" De esta forma, el resultado que obtenemos para fecha lo entiende perfectamente PHP.
- Otra cosa que tuve que hacer es una página .php aparte que únicamente realiza la inserción en base de datos del comentario e inmediatamente después, con header(), redirige a la página original. Esta página de inserción es a la que llaman los submit de los formularios. Con esto evito el problema que comenté en otro post al pulsar el refrescar del navegador. El header() debe usarse antes de enviar nada al navegador.
y creo que no se me olvida nada. A ver si lo apunto todo con algo más de detalle en algún sitio.