Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: kekoman en 09 de Marzo de 2008, 18:08:09 pm
-
He pensado hacer un tuto para que la gente introduzca bbcodes en su web O0 Aqui lo teneis:!
PARTE 1! Utilizacion
Primero, vamos a crear un codigo sql con la estructura de la tabla donde vamos guardar nuestros bbcodes 8)
CREATE TABLE `bbcodes` (
`id` int(11) NOT NULL auto_increment,
`bb1` varchar(250) collate latin1_general_ci NOT NULL,
`bb2` varchar(250) collate latin1_general_ci NOT NULL,
`html1` varchar(250) collate latin1_general_ci NOT NULL,
`html2` varchar(250) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
Os he creado un ejemplo:
Id introduciendo este codigo tambien ::)
INSERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES
(1, '[b]', '[/b]', '<b>', '</b>');
Ahora vomos con la function que filtrara el texto y lo pasara a html :P
function bb ($t) {
$sql = mysql_query("SELECT * FROM `bbcodes`"); //Hacemos la consulta mysql
while($bb=mysql_fetch_array($sql)) { //cremos un bucle
$t = str_ireplace("$bb[bb1]", "$bb[html1]", $t); // reemplazamos el bbcode por codigo html
$t = str_ireplace("$bb[bb2]", "$bb[html2]", $t); // reemplazamos el bbcode por codigo html
}
return $t; //devolvemos el codigo html
}
Ahora vamos a usarlo :P
<?
$texto = "[b]Hello world[/b]";
$mensaje = bb($texto); //ejecutamos la function
echo $mensaje; //mostramos el resultado
?>
Ahora nos debolvera el texto en negrita!
Saludos! ;)
PARTE 2! Administracion
Conexion con la base de datos:
config.php
$host = "localhost";
$user = "root";
$pass = "pass";
$db = "basededatos";
$conecta = mysql_connect("$host", "$user", "$pass") or die ("Datos de Conexion Incorrectos.");
mysql_select_db("$db", $conecta) or die ("No existe la base de datos.");
Añadir un nuevo bbcode:
add.php
<?
include ("config.php");
if ($_POST) { //comprobamos si hay alguna variable $_POST
if ($_POST['bb1'] && $_POST['bb2'] && $_POST['html1'] && $_POST['html2']) {
if (!mysql_query("INSERT INTO `bbcodes` (`bb1`, `bb2`, `html1`, `html2`) VALUES ('$_POST[bb1]', '$_POST[bb2]', '$_POST[html1]', '$_POST[html2]');")) { // comprobamos que el codigo sql se ejecute con exito, si no:
$error .= "<p>Ha havido un problema al registrar los datos en la base de datos";
}
} else {
$error .= "<p>No has completado todos los campos";
}
if (isset($error)) {
echo $error;
} else {
echo "EL BBCODE fue añadido con exito";
}
}
?>
<form method="POST" action="add.php">
<p><input type="text" name="bb1" size="6" value="bb1">
<input type="text" name="bb2" size="6" value="bb2">
<input type="text" name="html1" size="6" value="html1">
<input type="text" name="html2" size="6" value="html2"></p>
<p><input type="submit" value="Enviar" name="send"></p>
</form>
Borrar un BBCODE:
delete.php
<?
include ("config.php");
if ($_GET['id']) {
if (is_numeric($_GET['id'])) {
if (mysql_query("DELETE FROM `bbcodes` WHERE id='$_GET[id]'")) {
echo "Se ha borrado con exito";
} else {
echo "No se ha borrado por problemas mysql";
}
}
}
$sql = mysql_query("SELECT * FROM `bbcodes`"); //Hacemos la consulta mysql
while($bb=mysql_fetch_array($sql)) { //creamos un bucle
echo "<p>$bb[bb1] - <a href='delete.php?id=$bb[id]'>Borrar BBCODE</a>";
}
?>
Saludos!
-
Completo e interesante.
KARMA +!
-
Muchas gracias por el karma, m0rk :P Voy a añadir una cosa mas a mi tutorial! 8)
Saludos! ;D
-
Bueno, el codigo de administración seria facil hackearlo mediante XSS :).
Pero buen aporte.
-
OFFTOPIC: kekoman, eres lordoftheeyes= ???
-
OFFTOPIC: kekoman, eres lordoftheeyes= ???
no saves utilizar los mensajes privados?
-
Bueno, el codigo de administración seria facil hackearlo mediante XSS :).
Pero buen aporte.
Me podrias decir como y donde? --'
-
Me parece que se refiere a usar SQL inyection, en lugar de XSS.
Pero vamos, a partir del lanzamiento de PHP 5, esta la cosa muy chunga...
Esta muy bien el tuto, aunque no lo he leido a fondo ni he testeado los codes, te doy un karma+.
Saludos
-
buena idea poner str_ireplace pa usarlo como "bbcode" pero no se me ocurre como poner para ke cuando aprete enter ( un espacio hacia abajo, una linea mas ) kede automaticamente como <br />
a alguien se le ocurre?
-
no me deja editar el otro post asi ke pongo otro xD
bueno keria poner unos bbcodes
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[b]', '[/b]', '<b>', '</b>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[u]', '[/u]', '<u>', '</u>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[i]', '[/i]', '<i>', '</i>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[url]', '[/url]', '<a href="', '"></a>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[img]', '[/img]', '<img href="', '" />');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[center]', '[/center]', '<center>', '</center>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[right]', '[/right]', '<div align="right">', '</div>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[left]', '[/left]', '<div align="left">', '</left>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="1"]', '[/size]', '<h6>', '</h6>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="2"]', '[/size]', '<h5>', '</h5>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="3"]', '[/size]', '<h4>', '</h4>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="4"]', '[/size]', '<h3>', '</h3>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="5"]', '[/size]', '<h2>', '</h2>');
INTERT INTO `bbcodes` (`id`, `bb1`, `bb2`, `html1`, `html2`) VALUES('', '[size="6"]', '[/size]', '<h1>', '</h1>');
-
como puedo aplicar esto a mis noticias? estube viendo muchas formas ke cranie yo xD pero no me sale -.-
<?php
include("config.php");
echo'<p><b><span class="head"><u>Noticias:</u></b></p>';
$sql = mysql_query("SELECT * FROM `noticias` WHERE seccion = 'noticias' ORDER BY `id` DESC LIMIT 4");
while($row = mysql_fetch_array($sql)) {
echo "<br /><b>".$row['titulo']."</b><br /><i>".$row['subt']."</i><br /><br />".$row['contenido']."<br /><hr />";
}
?>
lo ke kiero es ke se apliken a los "echo" ke puse...
-
como puedo aplicar esto a mis noticias? estube viendo muchas formas ke cranie yo xD pero no me sale -.-
<?php
include("config.php");
echo'<p><b><span class="head"><u>Noticias:</u></b></p>';
$sql = mysql_query("SELECT * FROM `noticias` WHERE seccion = 'noticias' ORDER BY `id` DESC LIMIT 4");
while($row = mysql_fetch_array($sql)) {
echo "<br /><b>".$row['titulo']."</b><br /><i>".$row['subt']."</i><br /><br />".$row['contenido']."<br /><hr />";
}
?>
lo ke kiero es ke se apliken a los "echo" ke puse...
<?php
include("config.php");
echo'<p><b><span class="head"><u>Noticias:</u></b></p>';
$sql = mysql_query("SELECT * FROM `noticias` WHERE seccion = 'noticias' ORDER BY `id` DESC LIMIT 4");
while($row = mysql_fetch_array($sql)) {
echo "<br /><b>".bb($row['titulo'])."</b><br /><i>".bb($row['subt'])."</i><br /><br />".bb($row['contenido'])."<br /><hr />";
}
?>
Simplemente aplicamos la funcion a la variable k muestra el contenido
claro k primero deberias incluir un archivo donde esta el codigo de la funcion...
-
gracias west, hice eso pero no lo habia ordenado bien :)
-
y si quiero colocarle parámetros?
ya sea: [youtube]ID DEL VIDEO[/youtube]
Como sería el código?
-
y si quiero colocarle parámetros?
ya sea: [youtube]ID DEL VIDEO[/youtube]
Como sería el código?
Antes de publicar un mensaje primero ve la fecha del ultimo.
Gracias por revivir un tema de 3 años de inactividad.
-
Y tu y yo xD pero bueno crea un nuevo tema.
Saludos