Tutorial Instalar Seo4smf Url Legibles en Foro SMF

Started by H@free, November 01, 2007, 06:05:59 PM

Previous topic - Next topic

H@free

Quote from: MakiaResc on May 18, 2008, 09:52:41 PM
Pues ya le movi a todo y sigue sin funcionar ....

Ahora que has movido todo has notado algún cambio es decir algún error te ha sucedido...

Me daba un error de que él "el grupo no se podría escribir" o parecido CLARO en ingles (traducción Chapina) xD...

Que raro, tenemos la misma versión... y que pasa con él htaccess, intentaste con el que deje, revisa esto:
http://www.simplemachines.org/community/index.php?topic=203647.msg1501026#msg1501026

Revisa también el querystring.php :
http://www.simplemachines.org/community/index.php?topic=203647.msg1501138#msg1501138




Quote from: aristides_03 on May 19, 2008, 04:40:28 AM
bueno yo tengo instalado el mod pero no al 100% y bueno quiero volver a intentar lo pero el tuto los links estan muertos podrian verlos H@free

Sí me dijeras que link todo lo que se necesita esta en este Post-it...




Quote from: kKrunchiso on May 19, 2008, 04:57:09 AM
Quote from: H@free on November 01, 2007, 06:05:59 PM

Aquí el pequeño tuto que nunca encontre jajaja...

http://www.hispa-digital.com/seo-4-smf-simple-machines-forum-url-legibles-en-foro-tutorial-instalar-seo4smf.html
Es valido para la 1.1.5 ?

Claro todo lo que necesitas está aquí en este Post-it como lo recordamos en estos pequeños dos link...

http://www.simplemachines.org/community/index.php?topic=203647.msg1501026#msg1501026
http://www.simplemachines.org/community/index.php?topic=203647.msg1501138#msg1501138




Buen día a T2...
Att. H@free  ;D

aristides_03

al principio del tuto esta unos links pero estan muertos ejemplo

> seo4smf-0.2.9.9
> Lo podemos descargar de aquí...
http://www.webmasterstalks.com/tpmod.html;dl=item48

Teniendo esto... Listo:
> Procedemos a subir el htaccess ( /foro ) si es que el directorio esta así... DESCARGAR nos abrira un txt lo guardamos en un bloc de notas (txt) lo subimos a nuestro directorio y estando allí lo renombramos a .htaccess...
links
http://hafre.quae.net/DOWNLOAD/htaccess.txt

> También subimos este archivito que se llama php.ini DESCARGAR (Este archivo tenemos que subirlo al la carpeta donde se encuentra el paquete del SMF ( /foro ). También lo guardamos en un bloc de notas (txt) lo subimos a la carpeta donde se encuentra instalado el smf (/foro) al tenerlo allí como txt simplemente lo renombramos a php.ini nada más...
links
http://hafre.quae.net/DOWNLOAD/php.ini

esos links
-------------------------------------
intente desintalar el mod pero meda errores
Executar Modificación      ./Sources/BoardIndex.php         Prueba fallida
Executar Modificación     ./Sources/MessageIndex.php     Prueba fallida
Executar Modificación     ./Sources/QueryString.php       Prueba fallida

-----------------------
Otra consulta tengo instalado Pretty URLs - Base, GoogleTagged, Seo 4 SMF no hay conflictos con esos mods o solo debo de tener seo ?

Hay mucho que compartir

H@free

#83
QuoteClaro todo lo que necesitas está aquí en este Post-it como lo recordamos en estos pequeños dos link...

http://www.simplemachines.org/community/index.php?topic=203647.msg1501026#msg1501026
http://www.simplemachines.org/community/index.php?topic=203647.msg1501138#msg1501138

Checa estos...
Quote
esos links
-------------------------------------
intente desintalar el mod pero meda errores
Executar Modificación      ./Sources/BoardIndex.php         Prueba fallida
Executar Modificación     ./Sources/MessageIndex.php     Prueba fallida
Executar Modificación     ./Sources/QueryString.php       Prueba fallida

Eso es porque el Mod fue instalado y esos archivos puedan que sean otros y no encuentre el código del Mod para desinstalarse...  ;D puedes borrar el mod y sustituir todos los archivos que el mismo Modifica...

Pero si realizas y tienes otros mod que hacen uso de estos archivos .php se desinstalaran también...

Puedes realizarlo manualmente también...  :o

Quote
Otra consulta tengo instalado Pretty URLs - Base, GoogleTagged, Seo 4 SMF no hay conflictos con esos mods o solo debo de tener seo ?

Sobre esto: (Tienes muchas url en google, claro no todas son de utilidad, pero si estas recibiendo visitas frecuentes de algunos link... a la hora de instalar el Mod SEO4SMF, perderás estas visitas de dichos link...)

No se si decirlo o como tomarlo, pero ahora que veo que ya ni la web del Autor del Mod Funciona es mejor que lo dejes como lo tienes tú solo es de aprovecharse de ello  ;D si te das cuenta en comentarios anteriores, se dice que el Mod ya esta siendo obsoleto para la versión beta, además el Autor ya ni la Web tiene Online... y bueno dependiendo como siga esto... en un futuro no muy lejano creo que todos los que hacemos uso de ello perderemos más de lo que tenemos ahorita...

NO se si recomendarte instalarlo...
Sería mejor que te quedases con tú Mod, ese siempre será actualizado  ;D

Cada caveza es un Mundo  ;D

ST2...
Att. H@free

aristides_03

gracias amigo por la respuesta mejor lo dejo asi como esta en el mod enque a un no funciona el 100% 

Hay mucho que compartir

nurg

Quote from: TraX22 on May 15, 2008, 11:14:29 AM
Quote from: cambiarcromos on May 15, 2008, 10:24:02 AM
Hola

Perdonad mi ignorancia después de haber instalado el Seo4smf donde esta el sitemap.xml yo solo veo el sitemaps.php que archivo se a de subir al sitemap de gogle
¿ cuantas veces se a de subir el sitemap.....
¿ con una sola vez es suficiente

Gracias

Solo pon el enlace al sitemap ...

Y de ahí en mas se actualiza automaticamente

parece ser que funciona el sitemap, pero en el indice del foro no se ven las url nombre.html

gracias
VISITA MI FORO SMF
Si quieres que te instale un foro SMF no dudes en contactarme.

fran_bcn

Ei!!!

La configuracion del archivo QueryString.php en el smf 1.1.5 juraria que no es la misma que la del tutorial que hicistes...

Puedes mirar como configurarlo bien para el smf 1.1.5???

Porque si lo dejo asi no puedo acceder a la 2º pagina de cualquier tema

Gracias

Intop

uff.. cada vez tengo mas dudas si conviene instalarlo o no para un foro nuevo, que empieza de 0.

Por lo que veo, aparte de que la web oficial del mod ya no funciona lo han quitado tambien para descargar de simplemachines.
Esta era la direccion de descarga:http://custom.simplemachines.org/mods/downloads/518/seo4smf-0.2.9.9.zip

nurg

Pues a mi me pasa lo mismo , no me pasa de la segunda pagina

Quote from: fran_bcn on June 01, 2008, 05:40:48 AM
Ei!!!

La configuracion del archivo QueryString.php en el smf 1.1.5 juraria que no es la misma que la del tutorial que hicistes...

Puedes mirar como configurarlo bien para el smf 1.1.5???

Porque si lo dejo asi no puedo acceder a la 2º pagina de cualquier tema

Gracias
VISITA MI FORO SMF
Si quieres que te instale un foro SMF no dudes en contactarme.

astrokuma

gracias por el tuto, despues de una semana batallando por fin quedo

1000000000000 gracias

chau!
Foro: www.bloganime.org/smf
Version SMF: 2.0 RC5
Theme: Soft Cartoon 2.0

Ignacio Gonzalez del Solar

#90
AHHHHHHHHHH!!!!!!!!!!!!!! necesito ayuda  :'(


- Se instala correctamente.
- Descargo el htaccess.txt (y luego lo paso a .htaccess) (creo que me salte un paso)
- Puse el php.ini
- No logro encontrar en donde modificar el archivo querystring.php

Ahora no puedo acceder a ningun post ni a la administracion.

Ayuda por favor que alguien me indique como hacer los pasos que me faltaron !!!

por favor

QuoteEi!!!

La configuracion del archivo QueryString.php en el smf 1.1.5 juraria que no es la misma que la del tutorial que hicistes...

Puedes mirar como configurarlo bien para el smf 1.1.5???

Porque si lo dejo asi no puedo acceder a la 2º pagina de cualquier tema

Gracias

Me pasa lo mismo

WwW_®

QuoteEi!!!

La configuracion del archivo QueryString.php en el smf 1.1.5 juraria que no es la misma que la del tutorial que hicistes...

Puedes mirar como configurarlo bien para el smf 1.1.5???

Porque si lo dejo asi no puedo acceder a la 2º pagina de cualquier tema

Gracias


Quote from: ignaciogdelsolar on June 03, 2008, 03:09:10 PM
AHHHHHHHHHH!!!!!!!!!!!!!! necesito ayuda  :'(


- Se instala correctamente.
- Descargo el htaccess.txt (y luego lo paso a .htaccess) (creo que me salte un paso)
- Puse el php.ini
- No logro encontrar en donde modificar el archivo querystring.php

Ahora no puedo acceder a ningun post ni a la administracion.

Ayuda por favor que alguien me indique como hacer los pasos que me faltaron !!!

por favor



el que está en el tutorial no es la misma modificación para el archivo QueryString.php, yo lo quise hacer asi y donde dice buscar las primeras lineas no aparece, aparece diferente.  :-\


pasame tu correo, trataré de ayudarte  :)


H@free

No es la misma, pero en la tercer hoja ya esta claro... cual es la modificación a realizarce...
En cuanto tenga tiempito lo tendre con las opciones que se ajustan a la instalación...
A mas tardar hoy en la noche...

astrokuma

utiliza los ke h@free usa en su web, los ke dejo para descargar, a mi se me solucionaron los problemas con eso

suerte
Foro: www.bloganime.org/smf
Version SMF: 2.0 RC5
Theme: Soft Cartoon 2.0

Ignacio Gonzalez del Solar

Gracias ya lo solucione con ayuda de sAmMyTo .. me guie por el tuto de aqui pero no me funcionaba ...

nurg

Hola

Alguien me puede ayudar con mi QueryString.php  para que ne corran las paginas, por mas que lo miro no veo los codigos iguales que los que a qui salen

Muchas gracias
<?php
/**********************************************************************************
* QueryString.php                                                                 *
***********************************************************************************
* SMF: Simple Machines Forum                                                      *
* Open-Source Project Inspired by Zef Hemel ([email protected])                    *
* =============================================================================== *
* Software Version:           SMF 1.1.4                                           *
* Software by:                Simple Machines (http://www.simplemachines.org)     *
* Copyright 2006 by:          Simple Machines LLC (http://www.simplemachines.org) *
*           2001-2006 by:     Lewis Media (http://www.lewismedia.com)             *
* Support, News, Updates at:  http://www.simplemachines.org                       *
***********************************************************************************
* This program is free software; you may redistribute it and/or modify it under   *
* the terms of the provided license as published by Simple Machines LLC.          *
*                                                                                 *
* This program is distributed in the hope that it is and will be useful, but      *
* WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY    *
* or FITNESS FOR A PARTICULAR PURPOSE.                                            *
*                                                                                 *
* See the "license.txt" file for details of the Simple Machines license.          *
* The latest version can always be found at http://www.simplemachines.org.        *
**********************************************************************************/
if (!defined('SMF'))
die('Hacking attempt...');

/* This file does a lot of important stuff.  Mainly, this means it handles
the query string, request variables, and session management.  It contains
the following functions:

void cleanRequest()
- cleans the request variables (ENV, GET, POST, COOKIE, SERVER) and
  makes sure the query string was parsed correctly.
- handles the URLs passed by the queryless URLs option.
- makes sure, regardless of php.ini, everything has slashes.
- sets up $board, $topic, and $scripturl and $_REQUEST['start'].
- determines, or rather tries to determine, the client's IP.

array addslashes__recursive(array var)
- returns the var, as an array or string, with slashes.
- importantly adds slashes to keys and values!
- calls itself recursively if necessary.

array htmlspecialchars__recursive(array var)
- adds entities (&quot;, &lt;, &gt;) to the array or string var.
- importantly, does not effect keys, only values.
- calls itself recursively if necessary.

array urldecode__recursive(array var)
- takes off url encoding (%20, etc.) from the array or string var.
- importantly, does it to keys too!
- calls itself recursively if there are any sub arrays.

array stripslashes__recursive(array var)
- removes slashes, recursively, from the array or string var.
- effects both keys and values of arrays.
- calls itself recursively to handle arrays of arrays.

array htmltrim__recursive(array var)
- trims a string or an the var array using html characters as well.
- does not effect keys, only values.
- may call itself recursively if needed.

array validate_unicode__recursive(array var)
- makes sure a string only contains character which are allowed in
  XML/XHTML (not 0-8, 11, 12, and 14-31.)
- tries to handle UTF-8 properly, and shouldn't negatively affect
  character sets like ISO-8859-1.
- does not effect keys, only changes values.
- may call itself recursively if necessary.

string ob_sessrewrite(string buffer)
- rewrites the URLs outputted to have the session ID, if the user
  is not accepting cookies and is using a standard web browser.
- handles rewriting URLs for the queryless URLs option.
- can be turned off entirely by setting $scripturl to an empty
  string, ''. (it wouldn't work well like that anyway.)
- because of bugs in certain builds of PHP, does not function in
  versions lower than 4.3.0 - please upgrade if this hurts you.
*/

// Clean the request variables - add html entities to GET and slashes if magic_quotes_gpc is Off.
function cleanRequest()
{
global $board$topic$boardurl$scripturl$modSettings;

// Makes it easier to refer to things this way.
$scripturl $boardurl '/index.php';

// Save some memory.. (since we don't use these anyway.)
unset($GLOBALS['HTTP_POST_VARS'], $GLOBALS['HTTP_POST_VARS']);
unset($GLOBALS['HTTP_POST_FILES'], $GLOBALS['HTTP_POST_FILES']);

// These keys shouldn't be set...ever.
if (isset($_REQUEST['GLOBALS']) || isset($_COOKIE['GLOBALS']))
die('Invalid request variable.');

// Same goes for numeric keys.
foreach (array_merge(array_keys($_POST), array_keys($_GET), array_keys($_FILES)) as $key)
if (is_numeric($key))
die('Invalid request variable.');

// Numeric keys in cookies are less of a problem. Just unset those.
foreach ($_COOKIE as $key => $value)
if (is_numeric($key))
unset($_COOKIE[$key]);

// Get the correct query string.  It may be in an environment variable...
if (!isset($_SERVER['QUERY_STRING']))
$_SERVER['QUERY_STRING'] = getenv('QUERY_STRING');

// Are we going to need to parse the ; out?
if ((strpos(@ini_get('arg_separator.input'), ';') === false || @version_compare(PHP_VERSION'4.2.0') == -1) && !empty($_SERVER['QUERY_STRING']))
{
// Get rid of the old one!  You don't know where it's been!
$_GET = array();

// Was this redirected?  If so, get the REDIRECT_QUERY_STRING.
$_SERVER['QUERY_STRING'] = urldecode(substr($_SERVER['QUERY_STRING'], 05) == 'url=/' $_SERVER['REDIRECT_QUERY_STRING'] : $_SERVER['QUERY_STRING']);

// Replace ';' with '&' and '&something&' with '&something=&'.  (this is done for compatibility...)
// !!! smflib
parse_str(preg_replace('/&(\w+)(?=&|$)/''&$1='strtr($_SERVER['QUERY_STRING'], array(';?' => '&'';' => '&'))), $_GET);
}
elseif (strpos(@ini_get('arg_separator.input'), ';') !== false)
{
$_GET urldecode__recursive($_GET);

if (get_magic_quotes_gpc() != && empty($modSettings['integrate_magic_quotes']))
$_GET stripslashes__recursive($_GET);

// Search engines will send action=profile%3Bu=1, which confuses PHP.
// !!! smflib
foreach ($_GET as $k => $v)
{
if (is_string($v) && strpos($k';') !== false)
{
$temp explode(';'$v);
$_GET[$k] = $temp[0];

for ($i 1$n count($temp); $i $n$i++)
{
@list ($key$val) = @explode('='$temp[$i], 2);
if (!isset($_GET[$key]))
$_GET[$key] = $val;
}
}

// This helps a lot with integration!
if (strpos($k'?') === 0)
{
$_GET[substr($k1)] = $v;
unset($_GET[$k]);
}
}
}

// There's no query string, but there is a URL... try to get the data from there.
if (!empty($_SERVER['REQUEST_URI']))
{
// Remove the .html, assuming there is one.
if (substr($_SERVER['REQUEST_URI'], strrpos($_SERVER['REQUEST_URI'], '.'), 4) == '.htm')
$request substr($_SERVER['REQUEST_URI'], 0strrpos($_SERVER['REQUEST_URI'], '.'));
else
$request $_SERVER['REQUEST_URI'];

// Replace 'index.php/a,b,c/d/e,f' with 'a=b,c&d=&e=f' and parse it into $_GET.
parse_str(substr(preg_replace('/&(\w+)(?=&|$)/''&$1='strtr(preg_replace('~/([^,/]+),~''/$1='substr($requeststrpos($requestbasename($scripturl)) + strlen(basename($scripturl)))), '/''&')), 1), $temp);
$_GET += $temp;
}

// Add entities to GET.  This is kinda like the slashes on everything else.
$_GET addslashes__recursive(htmlspecialchars__recursive($_GET));

// Clean up after annoying ini settings.  (magic_quotes_gpc might be off...)
if (get_magic_quotes_gpc() == && empty($modSettings['integrate_magic_quotes']))
{
// E(G)PCS: ENV, (GET was already done), POST, COOKIE.
$_ENV addslashes__recursive($_ENV);
$_POST addslashes__recursive($_POST);
$_COOKIE addslashes__recursive($_COOKIE);

// FILES work like this: k -> name -> array.  So be careful.
foreach ($_FILES as $k => $dummy)
$_FILES[$k]['name'] = addslashes__recursive($_FILES[$k]['name']);
}

// Take care of the server variables.
$_SERVER addslashes__recursive($_SERVER);

// Let's not depend on the ini settings... why even have COOKIE in there, anyway?
$_REQUEST $_POST $_GET;

// Make sure $board and $topic are numbers.
if (isset($_REQUEST['board']))
{
// Make sure that its a string and not something else like an array
$_REQUEST['board'] = (string) $_REQUEST['board'];

// If there's a slash in it, we've got a start value! (old, compatible links.)
if (strpos($_REQUEST['board'], '/') !== false)
list ($_REQUEST['board'], $_REQUEST['start']) = explode('/'$_REQUEST['board']);
// Same idea, but dots.  This is the currently used format - ?board=1.0...
elseif (strpos($_REQUEST['board'], '.') !== false)
list ($_REQUEST['board'], $_REQUEST['start']) = explode('.'$_REQUEST['board']);
// Now make absolutely sure it's a number.
$board = (int) $_REQUEST['board'];

// This is for "Who's Online" because it might come via POST - and it should be an int here.
$_GET['board'] = $board;
}
// Well, $board is going to be a number no matter what.
else
$board 0;

// If there's a threadid, it's probably an old YaBB SE link.  Flow with it.
if (isset($_REQUEST['threadid']) && !isset($_REQUEST['topic']))
$_REQUEST['topic'] = $_REQUEST['threadid'];

// We've got topic!
if (isset($_REQUEST['topic']))
{
// Make sure that its a string and not something else like an array
$_REQUEST['topic'] = (string)$_REQUEST['topic'];

// Slash means old, beta style, formatting.  That's okay though, the link should still work.
if (strpos($_REQUEST['topic'], '/') !== false)
list ($_REQUEST['topic'], $_REQUEST['start']) = explode('/'$_REQUEST['topic']);
// Dots are useful and fun ;).  This is ?topic=1.15.
elseif (strpos($_REQUEST['topic'], '.') !== false)
list ($_REQUEST['topic'], $_REQUEST['start']) = explode('.'$_REQUEST['topic']);

$topic = (int) $_REQUEST['topic'];

// Now make sure the online log gets the right number.
$_GET['topic'] = $topic;
}

// There should be a $_REQUEST['start'], some at least.  If you need to default to other than 0, use $_GET['start'].
if (empty($_REQUEST['start']) || $_REQUEST['start'] < 0)
$_REQUEST['start'] = 0;

// The action needs to be a string and not an array or anything else
if (isset($_REQUEST['action']))
$_REQUEST['action'] = (string) $_REQUEST['action'];
if (isset($_GET['action']))
$_GET['action'] = (string) $_GET['action'];

// Store the REMOTE_ADDR for later - even though we HOPE to never use it...
$_SERVER['BAN_CHECK_IP'] = isset($_SERVER['REMOTE_ADDR']) && preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~'$_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] : 'unknown';

// Find the user's IP address. (but don't let it give you 'unknown'!)
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_CLIENT_IP']) && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_CLIENT_IP']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
{
// We have both forwarded for AND client IP... check the first forwarded for as the block - only switch if it's better that way.
if (strtok($_SERVER['HTTP_X_FORWARDED_FOR'], '.') != strtok($_SERVER['HTTP_CLIENT_IP'], '.') && '.' strtok($_SERVER['HTTP_X_FORWARDED_FOR'], '.') == strrchr($_SERVER['HTTP_CLIENT_IP'], '.') && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_X_FORWARDED_FOR']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
$_SERVER['REMOTE_ADDR'] = implode('.'array_reverse(explode('.'$_SERVER['HTTP_CLIENT_IP'])));
else
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}
if (!empty($_SERVER['HTTP_CLIENT_IP']) && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_CLIENT_IP']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
{
// Since they are in different blocks, it's probably reversed.
if (strtok($_SERVER['REMOTE_ADDR'], '.') != strtok($_SERVER['HTTP_CLIENT_IP'], '.'))
$_SERVER['REMOTE_ADDR'] = implode('.'array_reverse(explode('.'$_SERVER['HTTP_CLIENT_IP'])));
else
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
// If there are commas, get the last one.. probably.
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false)
{
$ips array_reverse(explode(', '$_SERVER['HTTP_X_FORWARDED_FOR']));

// Go through each IP...
foreach ($ips as $i => $ip)
{
// Make sure it's in a valid range...
if (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$ip) != && preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) == 0)
continue;

// Otherwise, we've got an IP!
$_SERVER['REMOTE_ADDR'] = trim($ip);
break;
}
}
// Otherwise just use the only one.
elseif (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_X_FORWARDED_FOR']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0)
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif (!isset($_SERVER['REMOTE_ADDR']))
{
$_SERVER['REMOTE_ADDR'] = '';
// A new magic variable to indicate we think this is command line.
$_SERVER['is_cli'] = true;
}

// Make sure we know the URL of the current request.
if (empty($_SERVER['REQUEST_URI']))
$_SERVER['REQUEST_URL'] = $scripturl . (!empty($_SERVER['QUERY_STRING']) ? '?' $_SERVER['QUERY_STRING'] : '');
elseif (preg_match('~^([^/]+//[^/]+)~'$scripturl$match) == 1)
$_SERVER['REQUEST_URL'] = $match[1] . $_SERVER['REQUEST_URI'];
else
$_SERVER['REQUEST_URL'] = $_SERVER['REQUEST_URI'];

// And make sure HTTP_USER_AGENT is set.
$_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) ? htmlspecialchars(stripslashes($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES) : '';

// Some final checking.
if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~'$_SERVER['REMOTE_ADDR']) === 0)
$_SERVER['REMOTE_ADDR'] = '';
}

// Adds slashes to the array/variable.  Uses two underscores to guard against overloading.
function addslashes__recursive($var$level 0)
{
if (!is_array($var))
return addslashes($var);

// Reindex the array with slashes.
$new_var = array();

// Add slashes to every element, even the indexes!
foreach ($var as $k => $v)
$new_var[addslashes($k)] = $level 25 null addslashes__recursive($v$level 1);

return $new_var;
}

// Adds html entities to the array/variable.  Uses two underscores to guard against overloading.
function htmlspecialchars__recursive($var$level 0)
{
global $func;

if (!is_array($var))
return isset($func) ? $func['htmlspecialchars']($varENT_QUOTES) : htmlspecialchars($varENT_QUOTES);

// Add the htmlspecialchars to every element.
foreach ($var as $k => $v)
$var[$k] = $level 25 null htmlspecialchars__recursive($v$level 1);

return $var;
}

// Removes url stuff from the array/variable.  Uses two underscores to guard against overloading.
function urldecode__recursive($var$level 0)
{
if (!is_array($var))
return urldecode($var);

// Reindex the array...
$new_var = array();

// Add the htmlspecialchars to every element.
foreach ($var as $k => $v)
$new_var[urldecode($k)] = $level 25 null urldecode__recursive($v$level 1);

return $new_var;
}
// Strips the slashes off any array or variable.  Two underscores for the normal reason.
function stripslashes__recursive($var$level 0)
{
if (!is_array($var))
return stripslashes($var);

// Reindex the array without slashes, this time.
$new_var = array();

// Strip the slashes from every element.
foreach ($var as $k => $v)
$var[stripslashes($k)] = $level 25 null stripslashes__recursive($v$level 1);

return $var;
}

// Trim a string including the HTML space, character 160.
function htmltrim__recursive($var$level 0)
{
global $func;

// Remove spaces (32), tabs (9), returns (13, 10, and 11), nulls (0), and hard spaces. (160)
if (!is_array($var))
return isset($func) ? $func['htmltrim']($var) : trim($var" \t\n\r\x0B\0\xA0");

// Go through all the elements and remove the whitespace.
foreach ($var as $k => $v)
$new_var[$k] = $level 25 null htmltrim__recursive($v$level 1);

return $new_var;
}

// !!!
function validate_unicode__recursive($var)
{
if (is_array($var))
return array_map('validate_unicode__recursive'$var);

$cleanup array_merge(range(08), range(1112), range(1431));

// Assuming unicode for now - won't really hurt if we're wrong.
for ($i 0$i strlen($var); $i++)
{
$c ord($var{$i});
if (in_array($c$cleanup))
{
$var substr($var0$i) . substr($var$i 1);
$i--;
continue;
}

if ($c 192)
continue;
elseif ($c 224)
$i++;
elseif ($c 240)
$i += 2;
elseif ($c 248)
$i += 3;
elseif ($c 252)
$i += 4;
elseif ($c 254)
$i += 5;
}

return $var;
}

// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl$modSettings$user_info$context;

// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;

$scripturl1=str_replace("/index.php","",$scripturl);


// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit().  This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
// !!! smflib
if (empty($_COOKIE) && SID != '' && empty($context['browser']['possibly_robot']) && @version_compare(PHP_VERSION'4.3.0') != -&& ($modSettings['seo4smf_enable']!="on"))
$buffer preg_replace('/"' preg_quote($scripturl'/') . '(?!\?' preg_quote(SID'/') . ')(\?)?/''"' $scripturl '?' SID '&amp;'$buffer);
// Debugging templates, are we?
elseif (isset($_GET['debug']))
$buffer preg_replace('/"' preg_quote($scripturl'/') . '(\?)?/''"' $scripturl '?debug;'$buffer);

// This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo.
if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
{
// Let's do something special for session ids!
if (defined('SID') && SID != '')
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?(?:' SID ';)((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . '\$2\"'"$buffer);
                    if (
$modSettings['seo4smf_sb_enable'] == "on")
                    {
                        
$buffer preg_replace('/<!-- Seo4SMF Social Bookmark -->/'create_sb() , $buffer);
                    }

                    if (
$modSettings['seo4smf_enable'] == "on")
                    {


                        
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?((?:board|topic|page)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_urls(strtr('\$1', '&;=', '//,')) . '\$2\"'"$buffer);

                        if (
$modSettings['seo4smf_beautify_profiles'] == "on")
                        {
                            
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?action=profile;u=([^#"]+?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_url_profiles(strtr('\$1', '&;=', '//,')) . '\$2\"'"$buffer);
                        }

                        if (
$modSettings['seo4smf_beautify_actions'] == "on")
                        {

    $buffer preg_replace('/"' preg_quote($scripturl'/') . '\?action=([^#"]+?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_url_action('\$1'). '\$2\"'"$buffer);
}

if ($modSettings['seo4smf_keywords'] == "on")
{
                    
    $buffer preg_replace('<meta name="keywords" content=(.*) />'create_keywords() , $buffer);
}
if ($modSettings['seo4smf_description'] == "on")
{
                    
    $buffer preg_replace('<meta name="description" content=(.*) />'create_description() , $buffer);
}

                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006-2007, Simple Machines LLC<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006-2007, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006, Simple Machines LLC<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF © 2001-2006, Lewis Media<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2001-2006, Simple Machines, Lewis Media</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                    }
                    else
                    {
                        
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'"$buffer);
                    }
}

// Return the changed buffer.
return $buffer;
}

?>
VISITA MI FORO SMF
Si quieres que te instale un foro SMF no dudes en contactarme.

bierzo

Hola foreros, yo lo tengo instalado en smf 1.1.5 y va todo ok, salvo un pequeño-gran problema que no le encuentro solución.
Al asociar algun evento al calendario la url del evento en el calendario no sale correctamente, sale con el formato:

http://localhost/foro/empty-t755.0.html [nofollow]

No tengo activado el mod porque probablemente google no me las indexe por duplicacion de url para la misma pagina, ¿alguien sabria decirme como solucionar el problema o el archivo que tengo que modificar ?
:-\ :-\

bierzo

Agrego, acabo de darme cuenta que las urls de los post mas visitados y vistos de las sección de estadisticas del foro tambien las genera en el mismo formato con el empty...

He intentado preguntar en el foro oficial pero no hay manera de registrarse, no me llega el correo ni en bandeja de entrada ni en spam ni nada.

Os agradezco cualquier ayuda !

v_dmon

hola teng un problema, hice todo lo k dice aki al principio no funcionaba,pero luego consegui tener las url amigables, ahora el problema k teng es ke no puedo entrar a login, registrer, foro, admin, perfil, etc etc. ejemplo login.html pero al pulsar me sale un error 404 ... uso el SMF 1.1.4 con el Tinyportal 0.98, desearia me ayuden. mi pagina esta en el directorio principal. aqui dejo los archivos k estoy usando a ver si le encuentran algun error.

htaccess
RewriteEngine on

#Some apache servers need Rewritebase.
#delete # from start of Rewrite base to enable it.
#If your forum is something like http://www.forum-example.com/forum then modify your
#RewriteBase in this way: RewriteBase /forum

RewriteBase /

#Archive/Sitemaps
RewriteRule ^sitemaps-([a-zA-Z0-9-]*)\.html index.php?dummy=1&action=seo4smfsitemaps&sa=$1 [L]

#uncomment if you use beautifying url actions
#RewriteCond %{REQUEST_METHOD} =GET
#RewriteCond %{QUERY_STRING} ^action=(.*)$
#RewriteRule  ^(.*)$ seo4smf-redirect.php?a=%1 [R=301,L]

RewriteCond %{QUERY_STRING} ^topic=([0-9]*)$
RewriteRule  ^(.*)$ seo4smf-redirect.php?t=%1 [R=301,L]

RewriteCond %{QUERY_STRING} ^topic=([0-9]*).([0-9]*)
RewriteRule  ^(.*)$ seo4smf-redirect.php?t=%1 [R=301,L]

RewriteCond %{QUERY_STRING} ^board=([0-9]*).([0-9]*)

RewriteRule  ^(.*)$ seo4smf-redirect.php?b=%1 [R=301,L]



RewriteCond %{QUERY_STRING} ^action=profile;u=([0-9]*);(.*)$

RewriteRule  ^(.*)$ seo4smf-redirect.php?u=%1;param=%2 [R=301,L]



RewriteCond %{QUERY_STRING} ^action=profile;u=([0-9]*)

RewriteRule  ^(.*)$ seo4smf-redirect.php?u=%1 [R=301,L]



#Tiny Portal Old Url's

RewriteCond %{QUERY_STRING} ^page=([0-9]*)

RewriteRule  ^(.*)$ seo4smf-redirect.php?p=%1 [R=301,L]



#Rewrite Old urls

RewriteRule  ^index.php/board,(.*).html seo4smf-redirect.php?b=$1 [R=301,L]

RewriteRule  ^index.php/board,(.*).html;(.*) seo4smf-redirect.php?b=$1&o=$2 [R=301,L]



RewriteRule  ^index.php/topic,(.*).html seo4smf-redirect.php?t=$1 [R=301,L]

RewriteRule  ^index.php/topic,(.*).html;(.*) seo4smf-redirect.php?t=$1&o=$2 [R=301,L]


#Bad Url's
#RewriteCond %{REQUEST_URI} ^(.*)\.html$

#RewriteCond %{REQUEST_URI} !^(.+)/(.*)-t([0-9]*)\.([0-9]*).html$

#RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html seo4smf-redirect.php?t=$2 [R=301,L]


RewriteRule  ^(.*)/-t(.*).html seo4smf-redirect.php?t=$2 [R=301,L]

RewriteRule  ^-b(.*)/$ seo4smf-redirect.php?b=$1 [R=301,L]

RewriteRule  ^-b(.*)/(.*)$ seo4smf-redirect.php?b=$1 [R=301,L]

RewriteRule  ^(.*)/-b(.*)/$ seo4smf-redirect.php?b=$2 [R=301,L]


#New board URL's

RewriteRule ^(.*)-b([0-9]*)\.([0-9]*)/;(.*) index.php?dummy=1&board=$2.$3&$4 [L]

RewriteRule ^(.*)-b([0-9]*)\.([0-9]*)/$ index.php?dummy=2&board=$2.$3 [L]

RewriteRule ^(.*)-b([0-9]*)\.([0-9])$ index.php?dummy=2&board=$2.$3 [L]



#New topic URL's

RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;((\?:from|msg|new)[0-9]*);(.*)$ index.php?dummy=1&topic=$2.$4&$6 [L]

RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;((\?:from|msg|new)[0-9]*) index.php?dummy=1&topic=$2.$4 [L]

RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;(.*)$ index.php?dummy=1&topic=$2.$3&$4 [L]

RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html$ index.php?dummy=1&topic=$2.$3 [L]



#New profiles URL's

RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*);start,([0-9]*);delete,([0-9]*);sesc,([a-z0-9]*)$ index.php?dummy=1&action=profile;u=$2;sa=$3;start=$4;delete=$5;sesc=$6 [L]

RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*);start,([0-9]*)$ index.php?dummy=1&action=profile;u=$2;sa=$3;start=$4 [L]

RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*)$ index.php?dummy=1&action=profile;u=$2;sa=$3 [L]

RewriteRule ^(.*)-u([0-9]*)\.html index.php?dummy=1&action=profile;u=$2 [L]


#New Tinyportal Articles URL's
RewriteRule ^(.*)-p([0-9]*)\.html index.php?dummy=1&page=$2 [L]

#New action Url's - uncomment if you use beautifying url actions
#RewriteRule ^(.*)\.html(.*)$ index.php?dummy=1;action=$1;$2 [L]
#RewriteRule ^(.*)\.html$ index.php?dummy=1;action=$1 [L]

#Sitemaps
RewriteRule sitemap.xml sitemaps.php [L]
RewriteRule urllist.txt urllist.php [L]


QueryString
<?php
/**********************************************************************************
* QueryString.php                                                                 *
***********************************************************************************
* SMF: Simple Machines Forum                                                      *
* Open-Source Project Inspired by Zef Hemel ([email protected])                    *
* =============================================================================== *
* Software Version:           SMF 1.1.4                                           *
* Software by:                Simple Machines (http://www.simplemachines.org)     *
* Copyright 2006 by:          Simple Machines LLC (http://www.simplemachines.org) *
*           2001-2006 by:     Lewis Media (http://www.lewismedia.com)             *
* Support, News, Updates at:  http://www.simplemachines.org                       *
***********************************************************************************
* This program is free software; you may redistribute it and/or modify it under   *
* the terms of the provided license as published by Simple Machines LLC.          *
*                                                                                 *
* This program is distributed in the hope that it is and will be useful, but      *
* WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY    *
* or FITNESS FOR A PARTICULAR PURPOSE.                                            *
*                                                                                 *
* See the "license.txt" file for details of the Simple Machines license.          *
* The latest version can always be found at http://www.simplemachines.org.        *
**********************************************************************************/
if (!defined('SMF'))
die('Hacking attempt...');

/* This file does a lot of important stuff.  Mainly, this means it handles
the query string, request variables, and session management.  It contains
the following functions:

void cleanRequest()
- cleans the request variables (ENV, GET, POST, COOKIE, SERVER) and
  makes sure the query string was parsed correctly.
- handles the URLs passed by the queryless URLs option.
- makes sure, regardless of php.ini, everything has slashes.
- sets up $board, $topic, and $scripturl and $_REQUEST['start'].
- determines, or rather tries to determine, the client's IP.

array addslashes__recursive(array var)
- returns the var, as an array or string, with slashes.
- importantly adds slashes to keys and values!
- calls itself recursively if necessary.

array htmlspecialchars__recursive(array var)
- adds entities (&quot;, &lt;, &gt;) to the array or string var.
- importantly, does not effect keys, only values.
- calls itself recursively if necessary.

array urldecode__recursive(array var)
- takes off url encoding (%20, etc.) from the array or string var.
- importantly, does it to keys too!
- calls itself recursively if there are any sub arrays.

array stripslashes__recursive(array var)
- removes slashes, recursively, from the array or string var.
- effects both keys and values of arrays.
- calls itself recursively to handle arrays of arrays.

array htmltrim__recursive(array var)
- trims a string or an the var array using html characters as well.
- does not effect keys, only values.
- may call itself recursively if needed.

array validate_unicode__recursive(array var)
- makes sure a string only contains character which are allowed in
  XML/XHTML (not 0-8, 11, 12, and 14-31.)
- tries to handle UTF-8 properly, and shouldn't negatively affect
  character sets like ISO-8859-1.
- does not effect keys, only changes values.
- may call itself recursively if necessary.

string ob_sessrewrite(string buffer)
- rewrites the URLs outputted to have the session ID, if the user
  is not accepting cookies and is using a standard web browser.
- handles rewriting URLs for the queryless URLs option.
- can be turned off entirely by setting $scripturl to an empty
  string, ''. (it wouldn't work well like that anyway.)
- because of bugs in certain builds of PHP, does not function in
  versions lower than 4.3.0 - please upgrade if this hurts you.
*/

// Clean the request variables - add html entities to GET and slashes if magic_quotes_gpc is Off.
function cleanRequest()
{
global $board$topic$boardurl$scripturl$modSettings;

// Makes it easier to refer to things this way.
$scripturl $boardurl '/index.php';

// Save some memory.. (since we don't use these anyway.)
unset($GLOBALS['HTTP_POST_VARS'], $GLOBALS['HTTP_POST_VARS']);
unset($GLOBALS['HTTP_POST_FILES'], $GLOBALS['HTTP_POST_FILES']);

// These keys shouldn't be set...ever.
if (isset($_REQUEST['GLOBALS']) || isset($_COOKIE['GLOBALS']))
die('Invalid request variable.');

// Same goes for numeric keys.
foreach (array_merge(array_keys($_POST), array_keys($_GET), array_keys($_FILES)) as $key)
if (is_numeric($key))
die('Invalid request variable.');

// Numeric keys in cookies are less of a problem. Just unset those.
foreach ($_COOKIE as $key => $value)
if (is_numeric($key))
unset($_COOKIE[$key]);

// Get the correct query string.  It may be in an environment variable...
if (!isset($_SERVER['QUERY_STRING']))
$_SERVER['QUERY_STRING'] = getenv('QUERY_STRING');

// Are we going to need to parse the ; out?
if ((strpos(@ini_get('arg_separator.input'), ';') === false || @version_compare(PHP_VERSION'4.2.0') == -1) && !empty($_SERVER['QUERY_STRING']))
{
// Get rid of the old one!  You don't know where it's been!
$_GET = array();

// Was this redirected?  If so, get the REDIRECT_QUERY_STRING.
$_SERVER['QUERY_STRING'] = urldecode(substr($_SERVER['QUERY_STRING'], 05) == 'url=/' $_SERVER['REDIRECT_QUERY_STRING'] : $_SERVER['QUERY_STRING']);

// Replace ';' with '&' and '&something&' with '&something=&'.  (this is done for compatibility...)
// !!! smflib
parse_str(preg_replace('/&(\w+)(?=&|$)/''&$1='strtr($_SERVER['QUERY_STRING'], array(';?' => '&'';' => '&'))), $_GET);
}
elseif (strpos(@ini_get('arg_separator.input'), ';') !== false)
{
$_GET urldecode__recursive($_GET);

if (get_magic_quotes_gpc() != && empty($modSettings['integrate_magic_quotes']))
$_GET stripslashes__recursive($_GET);

// Search engines will send action=profile%3Bu=1, which confuses PHP.
// !!! smflib
foreach ($_GET as $k => $v)
{
if (is_string($v) && strpos($k';') !== false)
{
$temp explode(';'$v);
$_GET[$k] = $temp[0];

for ($i 1$n count($temp); $i $n$i++)
{
@list ($key$val) = @explode('='$temp[$i], 2);
if (!isset($_GET[$key]))
$_GET[$key] = $val;
}
}

// This helps a lot with integration!
if (strpos($k'?') === 0)
{
$_GET[substr($k1)] = $v;
unset($_GET[$k]);
}
}
}

// There's no query string, but there is a URL... try to get the data from there.
if (!empty($_SERVER['REQUEST_URI']))
{
// Remove the .html, assuming there is one.
if (substr($_SERVER['REQUEST_URI'], strrpos($_SERVER['REQUEST_URI'], '.'), 4) == '.htm')
$request substr($_SERVER['REQUEST_URI'], 0strrpos($_SERVER['REQUEST_URI'], '.'));
else
$request $_SERVER['REQUEST_URI'];

// Replace 'index.php/a,b,c/d/e,f' with 'a=b,c&d=&e=f' and parse it into $_GET.
parse_str(substr(preg_replace('/&(\w+)(?=&|$)/''&$1='strtr(preg_replace('~/([^,/]+),~''/$1='substr($requeststrpos($requestbasename($scripturl)) + strlen(basename($scripturl)))), '/''&')), 1), $temp);
$_GET += $temp;
}

// Add entities to GET.  This is kinda like the slashes on everything else.
$_GET addslashes__recursive(htmlspecialchars__recursive($_GET));

// Clean up after annoying ini settings.  (magic_quotes_gpc might be off...)
if (get_magic_quotes_gpc() == && empty($modSettings['integrate_magic_quotes']))
{
// E(G)PCS: ENV, (GET was already done), POST, COOKIE.
$_ENV addslashes__recursive($_ENV);
$_POST addslashes__recursive($_POST);
$_COOKIE addslashes__recursive($_COOKIE);

// FILES work like this: k -> name -> array.  So be careful.
foreach ($_FILES as $k => $dummy)
$_FILES[$k]['name'] = addslashes__recursive($_FILES[$k]['name']);
}

// Take care of the server variables.
$_SERVER addslashes__recursive($_SERVER);

// Let's not depend on the ini settings... why even have COOKIE in there, anyway?
$_REQUEST $_POST $_GET;

// Make sure $board and $topic are numbers.
if (isset($_REQUEST['board']))
{
// Make sure that its a string and not something else like an array
$_REQUEST['board'] = (string) $_REQUEST['board'];

// If there's a slash in it, we've got a start value! (old, compatible links.)
if (strpos($_REQUEST['board'], '/') !== false)
list ($_REQUEST['board'], $_REQUEST['start']) = explode('/'$_REQUEST['board']);
// Same idea, but dots.  This is the currently used format - ?board=1.0...
elseif (strpos($_REQUEST['board'], '.') !== false)
list ($_REQUEST['board'], $_REQUEST['start']) = explode('.'$_REQUEST['board']);
// Now make absolutely sure it's a number.
$board = (int) $_REQUEST['board'];

// This is for "Who's Online" because it might come via POST - and it should be an int here.
$_GET['board'] = $board;
}
// Well, $board is going to be a number no matter what.
else
$board 0;

// If there's a threadid, it's probably an old YaBB SE link.  Flow with it.
if (isset($_REQUEST['threadid']) && !isset($_REQUEST['topic']))
$_REQUEST['topic'] = $_REQUEST['threadid'];

// We've got topic!
if (isset($_REQUEST['topic']))
{
// Make sure that its a string and not something else like an array
$_REQUEST['topic'] = (string)$_REQUEST['topic'];

// Slash means old, beta style, formatting.  That's okay though, the link should still work.
if (strpos($_REQUEST['topic'], '/') !== false)
list ($_REQUEST['topic'], $_REQUEST['start']) = explode('/'$_REQUEST['topic']);
// Dots are useful and fun ;).  This is ?topic=1.15.
elseif (strpos($_REQUEST['topic'], '.') !== false)
list ($_REQUEST['topic'], $_REQUEST['start']) = explode('.'$_REQUEST['topic']);

$topic = (int) $_REQUEST['topic'];

// Now make sure the online log gets the right number.
$_GET['topic'] = $topic;
}

// There should be a $_REQUEST['start'], some at least.  If you need to default to other than 0, use $_GET['start'].
if (empty($_REQUEST['start']) || $_REQUEST['start'] < 0)
$_REQUEST['start'] = 0;

// The action needs to be a string and not an array or anything else
if (isset($_REQUEST['action']))
$_REQUEST['action'] = (string) $_REQUEST['action'];
if (isset($_GET['action']))
$_GET['action'] = (string) $_GET['action'];

// Store the REMOTE_ADDR for later - even though we HOPE to never use it...
$_SERVER['BAN_CHECK_IP'] = isset($_SERVER['REMOTE_ADDR']) && preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~'$_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] : 'unknown';

// Find the user's IP address. (but don't let it give you 'unknown'!)
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_CLIENT_IP']) && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_CLIENT_IP']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
{
// We have both forwarded for AND client IP... check the first forwarded for as the block - only switch if it's better that way.
if (strtok($_SERVER['HTTP_X_FORWARDED_FOR'], '.') != strtok($_SERVER['HTTP_CLIENT_IP'], '.') && '.' strtok($_SERVER['HTTP_X_FORWARDED_FOR'], '.') == strrchr($_SERVER['HTTP_CLIENT_IP'], '.') && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_X_FORWARDED_FOR']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
$_SERVER['REMOTE_ADDR'] = implode('.'array_reverse(explode('.'$_SERVER['HTTP_CLIENT_IP'])));
else
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}
if (!empty($_SERVER['HTTP_CLIENT_IP']) && (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_CLIENT_IP']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0))
{
// Since they are in different blocks, it's probably reversed.
if (strtok($_SERVER['REMOTE_ADDR'], '.') != strtok($_SERVER['HTTP_CLIENT_IP'], '.'))
$_SERVER['REMOTE_ADDR'] = implode('.'array_reverse(explode('.'$_SERVER['HTTP_CLIENT_IP'])));
else
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
// If there are commas, get the last one.. probably.
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false)
{
$ips array_reverse(explode(', '$_SERVER['HTTP_X_FORWARDED_FOR']));

// Go through each IP...
foreach ($ips as $i => $ip)
{
// Make sure it's in a valid range...
if (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$ip) != && preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) == 0)
continue;

// Otherwise, we've got an IP!
$_SERVER['REMOTE_ADDR'] = trim($ip);
break;
}
}
// Otherwise just use the only one.
elseif (preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['HTTP_X_FORWARDED_FOR']) == || preg_match('~^((0|10|172\.16|192\.168|255|127\.0)\.|unknown)~'$_SERVER['REMOTE_ADDR']) != 0)
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif (!isset($_SERVER['REMOTE_ADDR']))
{
$_SERVER['REMOTE_ADDR'] = '';
// A new magic variable to indicate we think this is command line.
$_SERVER['is_cli'] = true;
}

// Make sure we know the URL of the current request.
if (empty($_SERVER['REQUEST_URI']))
$_SERVER['REQUEST_URL'] = $scripturl . (!empty($_SERVER['QUERY_STRING']) ? '?' $_SERVER['QUERY_STRING'] : '');
elseif (preg_match('~^([^/]+//[^/]+)~'$scripturl$match) == 1)
$_SERVER['REQUEST_URL'] = $match[1] . $_SERVER['REQUEST_URI'];
else
$_SERVER['REQUEST_URL'] = $_SERVER['REQUEST_URI'];

// And make sure HTTP_USER_AGENT is set.
$_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) ? htmlspecialchars(stripslashes($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES) : '';

// Some final checking.
if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~'$_SERVER['REMOTE_ADDR']) === 0)
$_SERVER['REMOTE_ADDR'] = '';
}

// Adds slashes to the array/variable.  Uses two underscores to guard against overloading.
function addslashes__recursive($var$level 0)
{
if (!is_array($var))
return addslashes($var);

// Reindex the array with slashes.
$new_var = array();

// Add slashes to every element, even the indexes!
foreach ($var as $k => $v)
$new_var[addslashes($k)] = $level 25 null addslashes__recursive($v$level 1);

return $new_var;
}

// Adds html entities to the array/variable.  Uses two underscores to guard against overloading.
function htmlspecialchars__recursive($var$level 0)
{
global $func;

if (!is_array($var))
return isset($func) ? $func['htmlspecialchars']($varENT_QUOTES) : htmlspecialchars($varENT_QUOTES);

// Add the htmlspecialchars to every element.
foreach ($var as $k => $v)
$var[$k] = $level 25 null htmlspecialchars__recursive($v$level 1);

return $var;
}

// Removes url stuff from the array/variable.  Uses two underscores to guard against overloading.
function urldecode__recursive($var$level 0)
{
if (!is_array($var))
return urldecode($var);

// Reindex the array...
$new_var = array();

// Add the htmlspecialchars to every element.
foreach ($var as $k => $v)
$new_var[urldecode($k)] = $level 25 null urldecode__recursive($v$level 1);

return $new_var;
}
// Strips the slashes off any array or variable.  Two underscores for the normal reason.
function stripslashes__recursive($var$level 0)
{
if (!is_array($var))
return stripslashes($var);

// Reindex the array without slashes, this time.
$new_var = array();

// Strip the slashes from every element.
foreach ($var as $k => $v)
$var[stripslashes($k)] = $level 25 null stripslashes__recursive($v$level 1);

return $var;
}

// Trim a string including the HTML space, character 160.
function htmltrim__recursive($var$level 0)
{
global $func;

// Remove spaces (32), tabs (9), returns (13, 10, and 11), nulls (0), and hard spaces. (160)
if (!is_array($var))
return isset($func) ? $func['htmltrim']($var) : trim($var" \t\n\r\x0B\0\xA0");

// Go through all the elements and remove the whitespace.
foreach ($var as $k => $v)
$new_var[$k] = $level 25 null htmltrim__recursive($v$level 1);

return $new_var;
}

// !!!
function validate_unicode__recursive($var)
{
if (is_array($var))
return array_map('validate_unicode__recursive'$var);

$cleanup array_merge(range(08), range(1112), range(1431));

// Assuming unicode for now - won't really hurt if we're wrong.
for ($i 0$i strlen($var); $i++)
{
$c ord($var{$i});
if (in_array($c$cleanup))
{
$var substr($var0$i) . substr($var$i 1);
$i--;
continue;
}

if ($c 192)
continue;
elseif ($c 224)
$i++;
elseif ($c 240)
$i += 2;
elseif ($c 248)
$i += 3;
elseif ($c 252)
$i += 4;
elseif ($c 254)
$i += 5;
}

return $var;
}

// Rewrite URLs to include the session ID.
function ob_sessrewrite($buffer)
{
global $scripturl$modSettings$user_info$context;

// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
if ($scripturl == '' || !defined('SID'))
return $buffer;

$scripturl1=str_replace("/index.php","",$scripturl);


// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit().  This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
// !!! smflib
if (empty($_COOKIE) && SID != '' && empty($context['browser']['possibly_robot']) && @version_compare(PHP_VERSION'4.3.0') != -&& ($modSettings['seo4smf_enable']!="on"))
$buffer preg_replace('/"' preg_quote($scripturl'/') . '(?!\?' preg_quote(SID'/') . ')(\?)?/''"' $scripturl '?' SID '&amp;'$buffer);
// Debugging templates, are we?
elseif (isset($_GET['debug']))
$buffer preg_replace('/"' preg_quote($scripturl'/') . '(\?)?/''"' $scripturl '?debug;'$buffer);

// This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo.
//   if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
//   {
// Let's do something special for session ids!
if (defined('SID') && SID != '')
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?(?:' SID ';)((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . '\$2\"'"$buffer);
                    if (
$modSettings['seo4smf_sb_enable'] == "on")
                    {
                        
$buffer preg_replace('/<!-- Seo4SMF Social Bookmark -->/'create_sb() , $buffer);
                    }

                    if (
$modSettings['seo4smf_enable'] == "on")
                    {


                        
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?((?:board|topic|page)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_urls(strtr('\$1', '&;=', '//,')) . '\$2\"'"$buffer);

                        if (
$modSettings['seo4smf_beautify_profiles'] == "on")
                        {
                            
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?action=profile;u=([^#"]+?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_url_profiles(strtr('\$1', '&;=', '//,')) . '\$2\"'"$buffer);
                        }

                        if (
$modSettings['seo4smf_beautify_actions'] == "on")
                        {

    $buffer preg_replace('/"' preg_quote($scripturl'/') . '\?action=([^#"]+?)?"/e'"'\"' . \$scripturl1 . '/' . beautify_url_action('\$1'). '\$2\"'"$buffer);
}

if ($modSettings['seo4smf_keywords'] == "of")
{
                    
    $buffer preg_replace('<meta name="keywords" content=(.*) />'create_keywords() , $buffer);
}
if ($modSettings['seo4smf_description'] == "of")
{
                    
    $buffer preg_replace('<meta name="description" content=(.*) />'create_description() , $buffer);
}

                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006-2007, Simple Machines LLC<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006-2007, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006, Simple Machines LLC<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                        
$buffer preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF Â© 2001-2006, Lewis Media<\/a>/''<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2001-2006, Simple Machines, Lewis Media</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' $buffer);
                    }
                    else
                    {
                      
$buffer preg_replace('/"' preg_quote($scripturl'/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e'"'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'"$buffer);
                    
//   }
}

// Return the changed buffer.
return $buffer;
}

?>


php.ini
cgi.fix_pathinfo = on
safe_mode = off
register_globals = on
allow_url_fopen = off
allow_url_fopen = on
expose_php = Off
max_input_time = 60
variables_order = "EGPCS"
extension_dir = ./
upload_tmp_dir = /tmp
precision = 12
SMTP = relay-hosting.secureserver.net
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

[Zend]
zend_extension=/usr/local/zo/ZendExtensionManager.so
zend_extension=/usr/local/zo/4_3/ZendOptimizer.so


espero su ayuda profavor. Aqui dejo mi URL de mi web para que la revisen mejor. gracias de ante mano.

hxxp:www.dvicios.com [nonactive]

Advertisement: