Evitar el SPAM en los foros phpBB [ go ]
Despues de ser atacado innumerable veces por estos benditos bots, he decidido ponerme manos a la obra en el foro de VkManga, las cuales he instalado diversos mods para evitar estos mensajes, pero resulta que hasta la fecha no se puede evitar, y en una de esas, me aconsejaron unos codigos las cuales me resultaron hasta la fecha ningun mensaje de SPAM, la cual, le recomiendo que lo pongan en practica.
Solo deberá editar dos archivos del foro phpBB, las cuales son: usercp_register.php, y el template profile_add_body.tpl.
Abrir un directorio en PHP y que se vea [ go ]
Aca hay, unos paso de como abrir un directorio y que se vea su contenido en una pagina web, la cual se utilizará la función opendir( )
- $path="temp";
- //ABRIMOS LAS CARPETAS
- $dir=opendir($path);
- //HACEMOS LISTADO DE ARCHIVOS
- while(($archivos=readdir($dir))!== false){
- //Imprimos los contenidos del dirrctorio
- echo $archivo;
- }
- //Cerramos el Directorio
- closedir($dir);
- ?>
Si el $path, es un directorio válido o el directorio no puede ser abierto debido a restricciones de permisos o errores del sistema de archivos, opendir() devuelve FALSE y genera un error de PHP de nivel E_WARNING. Es posible suprimir la salida del error de opendir() anteponiendo ‘@’ al nombre de la función.
Read the rest of this entry »
Mayúsculas y minúsculas en PHP [ go ]
Se puede pasar la cadena a todo mayusculas con strtoupper, o toda a minúsculas con strtolower. No convertirá aquellas letras que no se correspondan al actual conjunto de caracteres locales, los caracteres como la ñ no serán convertidos.
Ejemplo de strtoupper( )
- $cadena = "El vEloZ mUrciÉlAgo Hindú ComÍA feliZ CardillO y KiWi";
- $cadena = strtoupper ($cadena);
- echo $cadena; # Salida: EL VELOZ MURCIÉLAGO HINDÚ COMÍA FELIZ CARDILLO Y KIWI
- ?>
Vuelva a escribir urls separado por _ y reemplazalo por - para SEO [ go ]
Si su sitio esta usando los url de esta manera:
- http://domain.com/apache_htaccess/apache_htaccess_article_howto.html
- http://domain.com/the_best_apache_htaccess_article.html
Integracion del Foro phpbb con tu Web [ go ]
Bueno, este voy a publicar como integro la pagina con el foro phpbb y se vea en su web el tablero de login para los usuarios.
Primero se colocara este codigo:
- <?php
- $phpbb_root_path = 'foro/'; //PATH DEL FORO RESPECTO DEL SCRIPT
- if (!function_exists("init_userprefs"))
- {
- include($phpbb_root_path . 'extension.inc');
- include($phpbb_root_path . 'common.'.$phpEx);
- $userdata = session_pagestart($user_ip, PAGE_INDEX);
- init_userprefs($userdata);
- }
- // determinamos si cookie activada sino propagamos sid por url
Proteger imagenes con RewriteEngine [ go ]
Configurando el archivo .htaccess
Los archivos .htaccess permiten configurar las propiedades de acceso específicas de directorios de nuestro sitio web sin tener que andar modificando la configuración general del Apache. Cada vez que alguien solicita un recurso al servidor, Apache mira si hay un archivo .htaccess en el directorio del recurso y actua según las opciones que le pongamos. En nuestro caso comprobará si la petición de la imagen que tiene que servir procede de nuestro sitio o de alguien que nos enlaza desde fuera. Creamos un archivo .htaccess en la raíz de nuestra web con el siguiente contenido:
- #Evita el robo de imagenes
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^http://quarkblog.blogdns.org [NC]
- RewriteRule .*.(gif|jpg)$ http://quarkblog.blogdns.org/images/bad-image.png [R,NC]
La primera linea activa el módulo mod_rewrite de Apache, si ya esta activo se queda igual Las lineas RewriteCond son expresiones regulares con las que filtramos los casos que nos interesan. El código de arriba comprueba la cadena HTTP_REFERER del servidor: si esta linea es distinta de la cadena http://quarkblog.blogdns.org quiere decir que la petición que acaba de entrar no procede desde nuestro servidor. Cuando alguna de las expresiones regulares hace match se ejecuta la orden de la linea RewriteRule.La linea RewriteRule también es una expresión regular, que en nuestro caso comprueba si la petición que nos han hecho es una imagen (gif o jpg). Si es una imagen, cambiamos la respuesta por la url http://quarkblog.blogdns.org/images/bad-image.png donde hemos puesto una imagen como esta: Recapitulando, el proceso es el siguiente:
- Un malvado usuario copia nuestras imágenes en su web/foro/blog enlazándolas directamente de nuestro servidor.
- De repente nuestro sitio se ve inundado de peticiones de imágenes que realiza la otra web.
- Apache procesa todas esas peticiones comprobando primero la procedencia de las mismas.
- Si la petición procede de nuestra web todo OK, en otro caso cambia la imagen por otra a nuestra elección.
- Los usuarios de la “web pirata” ven un bonito banner donde ponemos verde al webmaster por robarnos las imágenes y no tardarán en quitarlas.
Ajustando el comportamiento
Esto está muy bien pero hay algunas webs a las que nos interesa permitirles que nos enlacen directamente, como por ejemplo los lectores de feeds on-line (bloglines, feedster), el buscador de imágenes de Google, etc. Mirando los logs del Apache descubrireis las webs que os enlazan directamente. Esto se soluciona añadiendo más expresiones regulares, una por cada sitio:
- #Evita el robo de imagenes
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^http://quarkblog.blogdns.org [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.feedness.com [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.bloglines.com [NC]
- RewriteCond %{HTTP_REFERER} !^http://64.233.167.104/ [NC]
- RewriteCond %{HTTP_REFERER} !^http://images.google. [NC]
- RewriteCond %{HTTP_REFERER} !^http://66.102.7.104/ [NC]
- RewriteRule .*.(gif|jpg)$ http://quarkblog.blogdns.org/images/bad-image.png [R,NC]
Por descontado este mecanismo no nos limita a las imágenes, podemos filtrar el uso de cada uno de los ficheros de nuestro servidor ajustando las expresiones regulares. Para sacarle el máximo provecho a mod_rewrite os recomiendo que le echeis un vistazo a la documentación del Apache.
Creando tu sitio dinámico de forma modular [ go ]
Este sistema de include es para hacer las pagina dinamica,este include puedes editarlo para que llame archivos que estan en formato .php ó .htm, igual cuando no encuentre el archivo llamado, incluira el archivo error.php que puedens diseñar a su estilo o incluir su pagina inicial como news.htm o news.php
- <?php
- if(eregi("://",$_GET['sec'])){
- include("error.php");
- }else{
- $pagina=$_GET['sec'].".php";
- if(!file_exists($pagina)){
- include("error.php");
- }else{
- include($pagina);
- }
- }
- ?>
Lo cual lo tienes que ponerlo en donde quieres que se vea el contenido y ya colocado el sistema lo tendrias que llamarlo de esta forma:
pagina.php?sec=seccion
Supongamos que quieres llamarle id.
Entonces reemplazas ’sec’ por ‘id’ y la url para usar te queda: ?id=loquesea
phpBB :: MOSTRAR ULTIMOS TOPICS [ go ]
Este es el scripts que uso en mi pagina web de VkManga, que muestra los ultimos topics de lo usuarios que postean en diferentes temas de los foros, con sus respuestas del post, espero que les sirva, ya que aun lo sigo utilizando y no he tenido ningun problema con ello. solo pegalo donde desean que se vea y listo:
- //limite de sacadas de la base de datos
- $limit = 12;
- $result = mysql_query("SELECT t.topic_title, topic_replies, t.forum_id, t.topic_id, t.forum_id, p.post_id FROM phpbb_posts p INNER JOIN phpbb_topics t ON (p.topic_id = t.topic_id) ORDER BY p.post_time desc LIMIT $limit") or die(mysql_error());
- //url de tu foro
- $phpbb_root_path = 'foro';
- $topic_number = 1;
- while($foro = mysql_fetch_array($result)){
- $termino_frase = '...'; //Al termino de la frase que se mostrara, diría: …
- $n_letras = '39';
- $id = $foro[’post_id’];
- $foroid = $foro[’forum_id’];
- $titulo = $foro[’topic_title’];
- $url = $url_path . $phpbb_root_path.’viewtopic.php?p=’.$id.’&sid=’.$foroid.’#’.$id;
- $titulo = substr($titulo,0,39);
- if (strlen($foro[’topic_title’])>$n_letras)
- {$titulo = $titulo.$termino_frase;}
- echo '<a href="'.$url.'" title="'.$foro['topic_title'].'" target="_blank"/>'.ucwords(strtolower($titulo)).'</a>';
- echo '[Resp: '.$foro['topic_replies'].']';
- $topic_number++;
- }




