Buenas :).
Si, si se que se parece al post de Cobac, pero quería postear los que yo he hecho, porque me han servido mucho ;D. Espero que os sirvan :P.
IMPORTANTE: Estos scripts van sin la "seguridad que necesitan" (vamos, que unos 3 la necesitan, los otros no xD). Si quieren seguridad, ustedes se la ponen :).
Primero que nada, conexion.php que es el que nos ayudará a conectarnos en todo:
<?php
$conexion = mysql_connect("localhost","usuario","clave");
mysql_select_db ("basedatos", $conexion) OR die ("Base de datos inexistente, o temporalmente inactiva");
?>
TagBoard, Con MySQL y Smileys
Primero creamos la tabla en el PhpMyAdmin:
CREATE TABLE tagboard (
id int(10) auto_increment,
autor varchar(255) NOT NULL,
comentario varchar(255) NOT NULL,
fecha varchar(255) NOT NULL,
email varchar(255) NOT NULL,
PRIMARY KEY (id)
)
Ahora tagboard.php
<?php
include ("conexion.php");
if ($comentario && $comentarios == "") {
echo "Porfavor, introduce un comentario";
}
elseif ($comentario && $autor == "") {
echo "Porfavor, Introduce tu nick";
}
elseif ($comentario) {
$fecha = date("d/m/Y g:i:s a");
function smileys($var) {
$a = str_replace("[","",$var) ;
$var = str_replace("]","",$var) ;
$var = str_replace(":D","[grin.gif]",$var) ;
$var = str_replace(":)","[smiley.gif]",$var);
$var = str_replace(";)","[wink.gif]",$var);
$var = str_replace(":S","[huh.gif]",$var);
$var = str_replace(":(","[sad.gif]",$var);
$var = str_replace(":@","[angry.gif]",$var);
$var = str_replace(":P","[tongue.gif]",$var);
//uno de estos por cada smiley
$var = str_replace("[","<img src=\"smileys/",$var) ;
$var = str_replace("]","\">",$var) ;
return $var;
}
$comentarios = htmlentities ($comentarios);
$comentarios = smileys($comentarios);
mysql_query ("INSERT INTO tagboard (autor,email,comentario,fecha) VALUES ('$autor','$email','$comentarios','$fecha')",$conexion);
?>
<html>
<head>
<script language="javascript">
function smileys () {
window.open ('smileys.php','smileys','width=100,height=100,resizable=no,toolbar=no,status=no');
}
</script>
</head>
<body>
<iframe src="comentarios.php"></iframe><br>
<form action="<?php echo $PHP_SELF ?>" method="post">
Introduce tu nick: <input type="text" name="autor"><br>
Introduce tu email: <input type="text" name="email"><br>
Introduce tu comentario: <textarea name="comentarios"></textarea><br><br>
<input type="submit" name="comentario" value="Enviar">
<br>
<a href="javascript:smileys()">Smileys</a>
</form>
</body>
</html>
<?
}
else {
?>
<html>
<head>
<script language="javascript">
function smileys () {
window.open ('smileys.php','smileys','width=300,height=400,resizable=no,toolbar=no,status=no');
}
</script>
</head>
<body>
<iframe src="comentarios.php"></iframe><br>
<form action="<?php echo $PHP_SELF ?>" method="post">
Introduce tu nick: <input type="text" name="autor"><br>
Introduce tu email/web: <input type="text" name="webemail"><br>
Introduce tu comentario: <textarea name="comentarios"></textarea><br><br>
<input type="submit" name="comentario" value="Enviar">
<br>
<a href="javascript:smileys()">Smileys</a>
</form>
</body>
</html>
<?php
}
?>
Luego comentarios.php
<?php
include ("conexion.php");
$sql = "SELECT * FROM tagboard ORDER BY 'id' DESC";
$resp = mysql_query ($sql);
while ($row = mysql_fetch_array ($resp)) {
echo "<font face=Verdana size=2><a href=mailto:".$row ["email"].">".$row ["autor"]."</a><br>";
echo "".$row ["comentario"]."<br>Fecha: ".$row ["fecha"]."<br><hr></font>";
}
?>
Y ahora, vamos por los Smileys. Creamos la tabla smileys,
CREATE TABLE smileys (
id int(10) auto_increment,
nombre varchar(25) NOT NULL,
url varchar(255) NOT NULL,
texto varchar(10) NOT NULL,
PRIMARY KEY (id)
)
Ahora insertamos los smileys que tengamos en el PhpMyAdmin (vamos a insertar, dentro de la tabla smileys).
Lo hacemos de la siguiente manera:
id: Dejamos en blanco
nombre: ejemplo, Grin.
url: nombre del archivo, ejemplo, grin.gif.
texto: como hacer el smiley, ejemplo, :D
Ahora creamos smileys.php
<table>
<tr><td>Nombre</td><td>Imágen</td><td>Forma de hacerlo</td></tr>
<?php
include ("conexion.php");
$sql = "SELECT * FROM smileys";
$resp = mysql_query ($sql);
while ($row = mysql_fetch_array ($resp)) {
echo "<tr><td>".$row ["nombre"]."</td><td><img src=smileys/".$row ["url"]."></td><td>".$row ["texto"]."</td></tr>";
}
?>
Recuerden que deben poner los smileys en el directorio smileys.
Eso es todo con el Tagboard ;D. Cualquier error avisarme con línea y todo.
Ahora crearemos un sistema de afiliados, que contara visitas entrantes, salientes, etc, tal como el GoldLink (ahora RivenLink xDD).
Creamos la tabla en el PhpMySql:
CREATE TABLE afiliados (
id int(10) auto_increment,
nom varchar (255) NOT NULL,
web text NOT NULL,
lec int(10) NOT NULL,
descripcion varchar(255) NOT NULL,
entrantes int(10) NOT NULL,
PRIMARY KEY (id)
)
Ahora creamos el archivo que mostraría a los afiliados, afiliados.php.
<?php
include ("conexion.php");
$sql = "SELECT * FROM afiliados";
$resp = mysql_query ($sql);
while ($row = mysql_fetch_array ($resp)) {
echo "<a onMouseOver=\"window.status='Descripción: ".$row ["descripcion"]." | Visitas Entrates: ".$row ["entrantes"]." | Visitas Salientes: ".$row ["lec"]."';return true\" href=afiliado.php?id=".$row ["id"]." target=_blank>".$row ["nom"]."</a><br>";
}
echo "<br><br> <a href=\"afiliate.php\">Afiliate Aqui</a>";
?>
Ahora creamos el archivo al que iría al apretar sobre un afiliado, afiliado.php
<?php
include("conexion.php");
$sql = "SELECT * FROM afiliados WHERE id LIKE '$id'";
$resp = mysql_query($sql);
$suma = mysql_query("select * from afiliados where id like $id",$conexion);
$upd=mysql_fetch_array($suma);
$lec=$upd["lec"]+1;
$update=mysql_query("Update afiliados Set lec=$lec Where id=$id",$conexion);
while ($row = mysql_fetch_array($resp)) {
$url = $row["web"];
$nombre = $row["nom"];
$salidas = $row["lec"];
$descripcion = $row ["descripcion"];
$entradas = $row ["entrantes"];
}
?>
<html>
<head>
<meta http-equiv="refresh" content="1;URL=<?php echo "$url" ;?>">
</head>
<body>
Nombre: <?php echo $nombre ?> (<?php echo $url ?>)</font><br>
Descripcion: <?php echo $descripcion ?><br>
Visitas salientes: <?php echo $salidas ?> Visitas entrantes: <?php echo $entradas ?>.</font><br>
</body>
</html>
Ahora el archivo para agregar afiliados, afiliate.php
<?php
include ("conexion.php");
if ($nuevo) {
$id = $_POST ['web'];
$id2 = mysql_query ("SELECT id FROM afiliados WHERE web LIKE '$id'",$conexion);
mysql_query ("SELECT * FROM afiliados");
mysql_query ("INSERT INTO afiliados (nom,web,descripcion) VALUES ('$nom','$web','$descripcion')",$conexion);
echo "Has sido agregado a la base de datos con exito <img src=\"http://www.elextremo.cl/smiley.gif\">. Debes linkearnos a http://www.aquituweb.com/in.php?id=TUID. Puedes ver tu id en la sección de afiliados.";
}
else {
?>
<form action=afiliate.php action="post">
Ingresa el nombre de tu web: <input type=text name=nom><br>
Ingresa la url de tu web: <input type=text name=web><br>
Ingresa la descripcion de tu web: <input type=text name=descripcion><br>
<input type=submit name=nuevo value=Registrar>
</form>
<?
}
?>
Y por último, el archivo que contará las visitas provenientes del afiliado, in.php
<?php
include ("conexion.php");
$sql = "SELECT * FROM afiliados WHERE id LIKE '$id'";
$resp = mysql_query ($sql);
$en = mysql_query ("SELECT * FROM afiliados WHERE id LIKE '$id'",$conexion);
$upd = mysql_fetch_array ($en);
$entrantes = $upd ["entrantes"]+1;
$update = mysql_query ("UPDATE afiliados SET entrantes = $entrantes WHERE id LIKE '$id'",$conexion);
while ($row = mysql_fetch_array ($resp)) {
$entrantes = $row ["entrantes"];
}
echo "Hola, la web ".$row ["nom"]." nos ha mandado $entrantes visitas :)";
?>
<html>
<head>
<meta http-equiv="refresh" content="1;URL=index.htm">
</head>
</html>
Esto es todo con el Sistema de Afiliados :).
Este es un script muy simple, pero que servira mucho cuando quieras que tus usuarios suban sus fotos a tu web :P.
upload.php
<?php
if ($enviar) {
move_uploaded_file($archivo,"archivos/$archivo_name");
$url = "archivos/".$archivo_name;
chmod($url,0777);
echo "Archivo subido exitosamente";
}
else {
?>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="archivo"><br>
<input name="enviar" type="submit">
<?php
}
?>
Debemos crear la carpeta archivos y darle permisos 777. Eso es todo.
Aqui os mostraré como crear un buscador interno en php, el cual buscará cualquier cosa dentro del nombre de un artículo, manual, o cuanta cosa tengas en tu base de datos...
Primero creas el archivo conexion.php (el que contendrá la conexión a la base de datos:
<?php
$conexion = mysql_connect("localhost","user","password");
mysql_select_db ("base_de_datos", $conexion) OR die ("La base de datos esta inaccesible, o no existe");
?>
Luego creas buscador.php, el buscador:
<?php
//Inicio Configuración
$tabla = "reportes";
//Fin Configuración
if (isset ($buscar)) {
$palabra = htmlentities ($palabra);
$palabra = htmlspecialchars ($palabra);
include ("conexion.php");
$sql = "SELECT * FROM ".$tabla." WHERE nombre LIKE '%".$palabra."%'";
$resp = mysql_query ($sql);
if (mysql_fetch_array ($resp) <= 0) {
echo "<basefont face=\"Verdana\" size=\"2\">No se encontraron resultados con el termino ".$palabra.".";
}
else {
while ($row = mysql_fetch_array ($resp)) {
echo "Aqui los echos xDDDD";
}
}
}
else {
?>
<form action="<? $PHP_SELF ?>" method="post">
<basefont face="Verdana" size="2">Introduce el termino a buscar: <input type="text" name="palabra">
<br><br>
<input type="submit" name="buscar">
</form>
<?php
}
?>
Bueno esa es una pequeña idea, recuerda cambiar $tabla por el nombre de tu tabla y "nombre" (está entremedio de la consulta SQL) por el campo de la tabla.
Salu2!
Con este código podrán hacer un sistema para enviar newsletters, el cuál consiste en hacer que el user se registre/ desregistre (en ese caso se borra de la base de datos) y en otra página tu puedas mandar los newsletter a todos los usuarios de una vez:
Creamos el archivo de conexión a base de datos, conexion.php:
<?php
$conexion = mysql_connect("localhost","user","password");
mysql_select_db ("base_de_datos", $conexion) OR die ("La base de datos esta inaccesible, o no existe");
?>
Luego creas la base de datos, usuarios, para que los users se registren:
CREATE TABLE usuarios (
id int(10) NOT NULL auto_increment,
nombre varchar (255) NOT NULL,
mail varchar(255) NOT NULL,
PRIMARY KEY (id)
)
Ahora newsletter.php , el que puedes incluir en tu index a través de un inlcude:
<?php
if ($new == "del") {
include ("conexion.php");
$sql = mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'",$conexion);
if (mysql_num_rows ($sql) != 0) {
mysql_query ("DELETE FROM usuarios WHERE email LIKE '$mail'",$conexion);
echo "Haz sido borrado con éxito, No recibiras mas mails con novedades.";
}
else {
echo "Ya haz borrado el mail, o no existe en la base de datos :).";
}
}
elseif ($new == "ins") {
include ("conexion.php");
$sql = mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'",$conexion);
if (mysql_num_rows ($sql) == 0) {
mysql_query ("INSERT INTO usuarios (nombre,mail) VALUES ('$nombre','$mail')",$conexion);
echo "Registrado con éxito :).";
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Suscribirse a Newsletter.<br><br>
Ingresa tu nombre (o nick): <input type="text" name="nombre"><br>
Ingresa tu Mail: <input type="text" name="mail"><br>
<select name="new">
<option value="ins">Suscribir</option>
<option value="del">DesSuscribir</option>
</select>
<input type="submit">
</form>
<?php
}
?>
Y por último, el archivo para enviar los newsletters, enviar.php:
<?php
if (isset ($enviar)) {
include ("conexion.php");
$resp = mysql_query ("SELECT * FROM usuarios",$conexion);
while ($row = mysql_fetch_array ($resp)) {
$nombre = $row ["nombre"];
$mail = $row ["mail"];
$mensaje = $_POST ["mensaje"];
$men = "Estimado ".$nombre.", \n ".$mensaje."";
mail ($mail,"Newsletter de Aqui el nombre de tu web!",$men,"FROM: newsletter@tuweb.com");
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Introduce el mensaje:<br><br>
<textarea name="mensaje"></textarea>
<br><br>
<input type="submit" name="enviar" value="Enviar Newsletter">
</form>
<?php
}
?>
Según yo, no tiene errores, ya que lo uso yo, pero en cualquier caso, si los tiene, favor de avisarme...
Salu2!
Este script es muy fácil, solo cuenta de unas líneas... Aquí les daré dos opciones:
1- Que se cuente cada vez que entre un user a una página
2- Que se cuente una vez por día, asi obtendrías visitas reales (en mi opinión, mejor).
Si lo quieres de la primera forma, crea el archivo lec.txt y dejalo en blanco, y luego dale permisos 666 al archivo. Y despúes crea contador.php y pega este código:
<?php
$contador = "lec.txt";
$fp = fopen($contador, "r");
$t = fread($fp, filesize($contador));
fclose($fp);
$fp = fopen($contador, "w");
$t = $t + 1;
$gc = fwrite($fp, $t);
fclose($fp);
echo "Hemos recibido ";
include ("lec.txt");
echo " visitas.<br>";
?>
Como ven, se usa fopen, fread, fwrite y fclose: podrán obtener mas información de estas funciones en el manual que publiqué con neohex, en esta dirección : http://foro.elhacker.net/index.php?topic=25674.0 .
Y si optan por la opción 2, hagan lo mismo que en el caso 1, pero peguen este código en el archivo contador.php :
<?php
if ($_COOKIE ["visitas"]) {
echo "Hemos recibido ";
include ("lec.txt");
echo " visitas.<br>";
}
else {
$contador = "lec.txt";
$fp = fopen($contador, "r");
$t = fread($fp, filesize($contador));
fclose($fp);
$fp = fopen($contador, "w");
$t = $t + 1;
$gc = fwrite($fp, $t);
fclose($fp);
setcookie ("visitas","visitas",time()+86400);
}
?>
En el que se usan las mismas funciones, pero ahora lo que hace es que si no hay cookie dada, cuenta una visita mas y crea una cookie de duración de un día (86400 segundos). Y ahora, si el user vuelve a entrar, ve que hay cookie y solo muestra cuantos usuarios han entrado a la web ;D.
Salu2!
Bueno este es un script que no se diferencia mucho del script simple, pero es mas completo.
Por ejemplo, si escribiesemos esto:
<?php
$fecha = date ("d/m/Y");
echo "Hoy es " . $fecha;
?>
Escribiría esto en pantalla:
CitarHoy es 15/06/04
Pero, si escribiesemos esto:
<?php
$dia = date ("d");
$mes = date ("m");
$ano = date ("Y");
if ($mes == 1) {
$mes = "Enero";
}
if ($mes == 2) {
$mes = "Febrero";
}
if ($mes == 3) {
$mes = "Marzo";
}
if ($mes == 4) {
$mes = "Abril";
}
if ($mes == 5) {
$mes = "Mayo";
}
if ($mes == 6) {
$mes = "Junio";
}
if ($mes == 7) {
$mes = "Julio";
}
if ($mes == 8) {
$mes = "Agosto";
}
if ($mes == 9) {
$mes = "Septiembre";
}
if ($mes == 10) {
$mes = "Octubre";
}
if ($mes == 11) {
$mes = "Noviembre";
}
if ($mes == 12) {
$mes = "Diciembre";
}
echo "Hoy es ".$dia." de ".$mes." de ".$ano;
?>
Nos escribiría:
Hoy es 16 de Junio de 2004
Como pueden ver, el primero es muy simple y muestra algo muy simple, pero el segundo es algo complejo y muestra casi lo mismo... Pero como decía es algo mas completo.
No falta decir que si quieren agregar la hora, solo agreguen esto al texto:
<?php
$fecha = date ("g:i:s a d/m/Y");
?>
hay ustedes varían el contenido...
Salu2!
Bueno, en esta parte pondré como paginar registros, totalmente configurable. Se puede poner el número de registros por página, y todo eso.
Aqui va:
pagina.php
<?php
include ("conexion.php");
######Configuración#######
#
$paginas = 7; #
$tabla = "aquitutabla"; #
#
##########################
$actual = (!isset ($pg))?1:$pg;
$sql = mysql_query ("SELECT * FROM ".$tabla."");
$total = mysql_num_rows ($sql);
if ($actual == 1) {
$desde = "0";
}
elseif ($actual != 1) {
$desde = $actual * $paginas - $paginas;
}
$tp = ($total / $paginas);
if (strstr($tp,'.')){
$tp = explode (".",$tp);
$tp = ($tp[0]+1);
}
$resp = mysql_query ("SELECT * FROM ".$tabla." ORDER BY id LIMIT ".$desde.",".$paginas."");
while ($row = mysql_fetch_array ($resp)) {
//Aqui parte la parte de modificación
echo "Registro: ".$row["campo"]."<br>";
//Aqui termina xD
}
$pag = ($tp == 1) ? página : páginas;
$reg = ($total == 1) ? registro : registros;
?>
<br>Encontrados <b><?=$total?></b> <?=$reg?> en <b><?=$tp?></b> <?=$pag?><br>
<?php
$anterior = true;
$siguiente = true;
if (($actual == 1) AND ($actual == $tp)) {
$anterior = false;
$siguiente = false;
}
elseif ($actual == $tp) {
$anterior = true;
$siguiente = false;
}
elseif ($actual == 1) {
$anterior = false;
$siguiente = true;
}
if ($anterior) {
echo "<a href=\"pagina.php?pg=".($actual-1)."\">< Página anterior</a> | ";
}
else {
echo "|";
}
for ($i = 1; $i <= $tp;$i++) {
if ($i == $actual) {
echo " <b>".$i."</b> | ";
}
else {
echo "<a href=\"pagina.php?pg=".$i."\"> ".$i."</a> |";
}
}
if ($siguiente) {
echo " <a href=\"pagina.php?pg=".($actual+1)."\"> Página siguiente ></a>";
}
?>
Solo debes cambiar el nombre de la tabla, el número de consultas por página, y las cosas que quieres mostrar (dentro del while).
Espero que sirva,
Salu2!
PD: Gracias a Azielito, con el arreglamos unos pequeños problemas que tenía :-*
Bueno, ustedes conocerán las Librerías GD.
Son unas librerías (... xDD) para trabajar con imágenes. Por ejemplo, poner la IP del visitante en una imágen.
NOTA: No todos los host's aceptan GD... Pregunten con el administrador. Si no tienen GD, no pueden usar esto.
Les dejo un ejemplo que hice yo aqui, que muestra la fecha actual y la IP del visitante, con un fondo hecho en Photoshop ;D
(http://www.elextremo.cl/gd.php)
Con ésta función que voy a poner, puedes elegir la fuente que quieras que tenga el texto que pondrás, la posición del texto, el ángulo (puedes ponerlo en distintos ángulos, p.e 90°) y el tamaño de fuente. Solo se pueden usar imágenes JPG y PNG. Bueno, no SOLO esas, pero son las mas usadas y las que mejor se ven. El Gif NO se puede usar a partir de la versión 1.6 del GD... Bueno, después de esta breve explicación, va el código:
<?php
header("Content-type: image/jpeg"); //El tipo de imágen
$im = "http://www.tuweb.com/imagen.jpg"; //Url COMPLETA de la imágen
$img = ImageCreateFromJpeg ($im);
$color = ImageColorAllocate ($img, 0, 0, 0);
/*
Color negro... El color está en formato RGB, puedes ver esto en el Paint, o el Photoshop.
El negro es el 0 0 0 y el blanco el 255 255 255
*/
$texto = "Hola, eres ".$REMOTE_ADDR;
ImageTTFText($img, 10, 0, 25, 95, $color, "/home/pagina/public_html/arial.ttf",$texto);
/*
Pequeña explicación de esta función:
Estructura: array imagettftext ( resource imagen, int tamanyo, int angulo, int x, int y, int color, string archivo_fuente, string texto)
-> Sacado de php.net <-
La fuente debe estar en tu servidor, no es necesario que le usuario la tenga. Además, la fuente debe estar en su RUTA COMPLETA, como la que se indica arriba.
Debes cambiar la posición del texto y todo eso. Recuerda que puedes ver en que posición poner el texto con Paint, abajo sale el lugar en el que está el mouse. Te saldrá, p.e., 12,42: Ponlos en ese orden.
*/
ImageJpeg ($img); //Se muestra la imágen
ImageDestroy ($img); //Se libera la memoria y FIN :D
?>
Debo agregar que si la imágen es PNG, deben cambiar las siguientes funciónes:
header("Content-type: image/jpeg"); -> header("Content-type: image/png");
ImageCreateFromJpeg -> ImageCreateFromPng
ImageJpeg -> ImagePng
Creo que eso es todo... Para mayor información, ver la documentación de PHP.
Salu2!
En este Script se obtiene información de cada visitante que entre, como:
-Fecha y hora
-Pc
-Lenguaje
-Web de donde viene
-IP
Y todo eso se guarda en un .txt, entrantes.txt al cual debes darle permisos 777 (sin esto no funcionará):
<?php
$archivo = "entradas.txt";
$web = (!$HTTP_REFERER)?"Ninguna web":$HTTP_REFERER;
//Se ve si el user viene de alguna web, si es así, pone de que web y si no viene de ninguna, pone Ninguna web
$fecha = date("d/m/Y g:i:s a"); //Se ve la fecha y hora
$entrada = "Nueva Entrada en ".$fecha.":
IP: ".$REMOTE_ADDR."
Pc: ".$HTTP_USER_AGENT."
Lenguaje: ".$HTTP_ACCEPT_LANGUAGE."
Viene de: ".$web."
\n"; //Se guardan los datos en una variable
$f = fopen($archivo,"a"); //Se abre el archivo .txt
fwrite($f,$entrada); //Se ponen los datos obtenidos en el archivo
fclose($f); //Se cierra el archivo
?>
Salu2!
Bueno, algunos de ustedes se podrán preguntar "Que #%!% son las EE.RR???", pues, son las "Expresiones Regulares", y sirven para encontrar tal cosa dentro de tal texto o variable, y ese tipo de cosas.
Esto se usa, por ejemplo, para el BBCode, tal sea cambiar [color=tal]Algo[/color]
por <font color=tal>Algo</font>
, etc...
En este caso, se hará para reemplazar -> [url=http://www.algo.com]Algo[/url]
por <a href=http://www.algo.com>Algo</a>
.
Para esta EE.RR se usará la función preg_replace, que reemplazará cualquier coincidencia con lo buscado.
Se haría asi:
<?php
function bbcode ($text) {
$text = preg_replace ("/\[url=(http://\/\/www\.([0-9a-z](.+))\.([a-z]{2,4}))\](.+)\[\/url\]/i","<a href=\\1>\\5</a>",$text);
return $text;
}
$algo = "Hola!! Mi web es [url=http://www.elextremo.cl]ESTA[/url]";
$algo = bbcode ($algo);
echo $algo;
?>
Bueno, pueden parecer hasta letras chinas, pero aquí les explico que son cada una:
El / del principio y el / del final indican el principio y el final de la expresion regular (valga la redundancia :P).
Ahora, para poner caracteres del tipo [ . / etc se debe poner una \ antes, para que reconozca que se está hablando de texto. Es por esto que hay un \[ url=http:// , que indica que al principio debe haber un [ url=http://.
Sigue esto (http://\/\/www\.([0-9a-z](.+))\.([a-z]{2,4})) que, traducido al español, sería: cualquier dirección que empieze por http://www. y que esté seguido por cualquier caracter del 0 al 9 y de la A a la Z o otro caracter y que se puede repetir 1 o mas veces, y luego un . (punto) que debe de estar seguido por una palabra de 2 a 4 letras, solo con letras de la A a la Z. Después se pone \] que indicaría fin de [ url=http://.
Luego se usa (.+) denuevo. El . (punto) es un comodín para todos los caracteres, y que se repita 1 o mas veces.
Ahora está el cierre, que es \[\/url\], que equivaldría a [/url].
La i después del / indica que en el texto pueden haber mayúsculas y minúsculas. También se puede usar s, que indica que se pueden poner saltos de línea en el texto.
Luego, se encontrarán con un \\1. Esto indica la primera coincidencia entre los paréntesis. Luego el \\5, que igual al que está arriba.
Espero que se entienda, porque realmente fue muy complicado para mí explicar todo esto :P
Salu2!
PD: Siesque definitivamente no se entiende, porfavor envíame un IM para que trate de explicarlo mejor.
Buenas ;D
La verdad no le veo mucho sentido a este script, pero bueh xDD
A través del siguiente script, se revisa cada letra o carácter de una cadena y se le compara con cada row de un array. Si se es igual al row, osea, hay un carácter inválido, se da por falso.
Esto lo hice hoy porque hoy mismo "descubrí" que se puede tratar a una cadena como un array...
Y como un script vale mas que mil palabras (esta me la inventé yo ;D), aquí va:
<?php
$inv = array (
0=>32,
1=>33
);
$str = "Hola amigo!";
$long = strlen ($str)-1;
for ($i = 0; $i <= $long; $i++) {
for ($x = 0; $x <= count($inv); $x++) {
if (ord ($str[$i]) == $inv[$x]) {
$malo = true;
}
}
}
if ($malo) {
echo "Cadena con carácteres inválidos!";
}
else {
echo "Cadena correcta";
}
?>
La función ord() es para obtener el ASCII de un carácter.
Como podrán darse cuenta, en el array están los ASCII del espacio ( ) y del signo de exclamación ( ! ). Aquí les dejo la lista de carácteres ASCII, que podrían ser considerados inválidos.
Citar32 -> (espacio)
33 -> !
34 -> "
38 -> &
39 -> '
40 -> (
41 -> )
42 -> *
45 -> -
46 -> .
47 -> /
58 -> :
59 -> ;
60 -> <
61 -> =
62 -> >
63 -> ?
91 -> [
92 ->
93 -> ]
94 -> ^
123 -> {
124 -> |
125 -> }
126 -> ~
Salu2!
Esta función sirve para que si tenemos un archivo de 1024 bytes, lo ponga así:
Citar1 kb
Sería así:
<?php
function tamano($arc) {
if (file_exists ($arc)) {
$tam = filesize ($arc);
$un = array ("b","kb","mb");
$ex = $un[0];
$i = 1;
while ($tam >= 1024 && $i < count($un)) {
$tam /= 1024;
$ex = $un[$i];
$i++;
}
return round ($tam,2)." ".$ex;
}
else {
echo "El archivo no existe!";
}
}
?>
Aproxima el peso del archivo y luego, según el peso, le asigna la unidad, que es vista en el Array y pueden agregarle mas.
Y lo llamas así:
<?php
echo tamano ("algo.noseque");
?>
Importante: El script y el archivo deben estar en la misma carpeta.
Es muy útil para sección de descargas y ese tipo de cosas :P
Salu2!
Este script sirve para "explorar" los archivos de tu PC, y ir a los que se pueden ver...
<?php
function explorar ($car) {
$tam = strlen ($car)-1;
if ($car[$tam] != "/") {
$car .= "/";
}
$dir = opendir($car);
echo "Haz click en el archivo al cual quieras ir<br>";
echo "<select multiple size=\"10\" onChange=\"window.location.href=this.options[this.selectedIndex].value\">";
while ($file = readdir($dir)) {
echo "<option value=\"".$car.$file."\">".$file."</option>";
}
closedir($dir);
echo "</select>";
}
if ($cual) {
if (!is_dir ($cual)) {
echo "El archivo no existe!";
}
else {
explorar ($cual);
}
}
else {
?>
<form action="<?=$PHP_SELF?>" method="post">
<input type="text" name="cual"> (Formato C:/)<br><br>
<input type="submit" name="enviar" value="Explorar!">
</form>
<?php
}
?>
OJO: Donde pones la Unidad o carpeta que quieres explorar, tienes que poner los slashes así: /, no así: \.
Salu2!
Con este script puedes hacer contraseñas de X largo (tu eliges, 6 por default) que incluye mayúsculas (A-Z), minúsculas (a-z) y números (0-9). La razón por la cual los otros carácteres (?, !, >, etc...) no fueron incluídos, es porque en algunas partes no aceptan esos carácteres.
Ejemplo de constraseña creada por este script: 4X0Tn1
<?php
$largo = "6"; //Este es el largo del password, puede variar
$invalidos = array (58,59,60,61,62,63,64,91,92,93,94,95,96);
$i = "0";
while ($i < $largo) {
mt_srand ((double) microtime()*1000000);
$num = mt_rand (48,122);
if (in_array ($num,$invalidos)){
continue;
}
else {
echo chr ($num);
}
$i++;
}
?>
Espero que les sirva.
Salu2!
Hace tiempo que no posteaba aquí ;D ;D ;D. Pero bueno, aquí les tengo la preciada función para colorear el código PHP, que viene en 'pack' con el código para que no te hagan XSS.
Lo acabo de terminar asique quizás tenga algunas fallas, pero ya iré viendo ;D.
<style>
body {font-family: Verdana; font-size: 10pt; background-color: #5791fb;}
.codigo { border: #000000 1px solid; font-size: 10pt; font-family: Verdana; color: #000000; background-color: #EAECED; }
</style>
<?php
function pintar ($cod) {
$cod = htmlentities (stripslashes ($cod));
if (strstr ($cod, "[php]")) {
$php = explode ("[php]", $cod);
for ($i = 0; $i < count ($php); $i++) {
$pos = strpos ($php[$i], "[/php]");
if (strstr ($php[$i], "[/php]")) {
$codigo = substr ($php[$i], 0, $pos);
$codigo = html_entity_decode($codigo) ;
$codigo = "<div class=\"codigo\">".highlight_string ($codigo, 1)."</div>";
$n = substr ($php[$i], $pos + 6);
$php[$i] = $codigo.$n;
}
}
$cod = implode ("", $php);
}
$cod = str_replace ("
", "<br>", $cod);
return $cod;
}
?>
El estilo del DIV lo saqué del SMF xDDDDDDD.
Bueno, para el modo de uso les pongo un ejemplo:
Hola, este es el primer post ;).
[php]<?php
echo "xDDDDDDDD";
$tx = str_replace ("xD", "xD2", $tx);
?>[/php]
<h1>Hola</h1>
Salu2!
Hagan un textarea para sacar de ahí el "post", y luego ponen eso. Se llama así:
<?php
echo pintar ($variable);
?>
Recuerden que se abre/cierra asi: .
Salu2!
Hola soy nuevo en esto del php y mysql, te pido un gran favor en que me enseyes y expliques como manejarlo, es muy importante para mi, he echo varias paginas web, pero lo que falta es usar bases de datos, y no se como empezar, por eso recurro a ti, espero tu respuesta.
Obtener puertos abiertos
Es algo que me acaba de servir, busqué en mi historial de navegación la fuente pero tengo "navegación privada" en FF así que el que la vea me manda un PM y edito.
<?php
$servicios = array('http', 'ftp', 'ssh', 'telnet', 'imap',
'smtp', 'nicname', 'gopher', 'finger', 'pop3', 'www');
foreach ($servicios as $servicio) {
$puerto = getservbyname($servicio, 'tcp');
echo $servicio . ": " . $puerto . "<br />\n";
}
?>
:wq!
Cita de: chispita68 en 11 Junio 2010, 17:53 PM
Hola soy nuevo en esto del php y mysql, te pido un gran favor en que me enseyes y expliques como manejarlo, es muy importante para mi, he echo varias paginas web, pero lo que falta es usar bases de datos, y no se como empezar, por eso recurro a ti, espero tu respuesta.
Hola chispita68! si quieres te hago un sistema de registro y reconocimiento de usuarios. ;) ;)
Una pregunta, cuando se crea una pagina .php, hay alguna forma de ver lo que hay en en el campo <?php ------ ?>
Me explico, tenemos un archivo que se llama pepe.php, y contiene lo siguiente:
<html>
blalblalbla
</html>
<?php
blalbvlalblad
?>
Cuando esta pagina se publica en un servidor, la parte de codigo que esta entre los campos <?php i ?> no se ve en el codigo fuente.
Ya se que es para que los hackers no puedan ver esta parte de codigo y no puedan desfacear la pagina web, pero, hay alguna forma de ver esta parte de codigo?
no se puede ver para que los hackers no puedan ver esta parte de codigo y no puedan desfacear la pagina web
Conexion a base de datos y funcion apra retornar un registro de una tabla con "x" condicion
<?php
//**************************************************************************************************************************************************************************************************************************
//CONEXION CON LA BASE DE DATOS
//**************************************************************************************************************************************************************************************************************************
function mysql_conectar(){
$link = @mysql_connect(dir_database,user_database,password_database);
if (!$link){die("<table width=100% height=100%><td valign=middle align=center><img src='images/connect.png' alt='Error' /><br /><h2 style='font-weight:bold;color:#009ee1'>Error al establecer conexion con la Base de Datos</h2></td></table>");exit;}
@mysql_select_db(database);
}
//**************************************************************************************************************************************************************************************************************************
function mysql_select_dataone($tabla,$campos,$filtro){
$data = @mysql_fetch_array(mysql_query("SELECT ".$campos." FROM ".$tabla." ".$filtro));
if(isset($data)){return $data;}else{return false;}
}
?>
Upload de archivos en PHP:
<?php
function upload($nombre_archivo,$tamano_archivo){
$aleatorio= rand(0,5000000);
$permitidos = array('xml');
$extension = explode('.', $nombre_archivo);$extension = $extension[count($extension) -1];
$contador = 0;
foreach($permitidos as $permitido){
if (strtolower($permitido) == strtolower($extension) && $tamano_archivo <= 524288000){
$contador++;
$nombre_archivo = strtolower("./temp".$aleatorio."." .$extension);
if (@move_uploaded_file($_FILES['userfile']['tmp_name'], "$nombre_archivo")){
$upload[0] = true;
$upload[1] = $nombre_archivo;
}else{
$upload[0] = false;
}
}
}
if($contador == 0){
$upload[0] = false;
}
return $upload;
}
?>
Extender el array de $permitidos por todas las extensiones que querais permitir
Con esta simple función se puede generar códigos aletorios.
Muy útil para crear contreseñas aleatorias o códigos de verificacón entre otras cosas.
<?php
function generarCodigo($longitud) {
$key = '';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
$max = strlen($pattern)-1;
for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
return $key;
}
//Ejemplo de uso
echo generarCodigo(6); // genera un código de 6 caracteres de longitud.
?>
Sacar auto_increment de una tabla.
==========================================
mysql_select_db($database, $conexion);
$select = "SHOW TABLE STATUS LIKE 'nombre_de_tabla'";
$s = mysql_query($select, $conexion)or die(mysql_error());
$row_select = mysql_fetch_assoc($s);
echo $row_select['Auto_increment'];
//Imprimiria algo asi: 1 (O el numero que corresponda).
Espero les sirva de algo.
Saludos