Advertisement:

Un Reto mas Ahora en PHP (Tibia+SMF)

Aloittaja arkamex, maaliskuu 07, 2011, 05:04:35 IP

« edellinen - seuraava »

arkamex

Recurro a esta Comunidad por que es la que mas me ha apoyado (ademas de ser la unica donde soy miembro activo  ;D)
Pues bien este es mi dilema.

directamente lo que quiero hacer es lo siguiente:
Quiero en mi foro Agregar mediante botones bbc un nombre de un char de tibia.com
ejemplo:

[tibia]Break Blade[/tibia]

y con el bbc me traducira a este enlace

Lainaa<a href="http://www.tibia.com/community/?subtopic=characters&name=Break+Blade">Break Blade</a>


Ahora bien eso es basico y lo puedo hacer.. lo que quiero apartir de ahi es extraer la informacion de la pagina en cuestion


http://www.tibia.com/community/?subtopic=characters&name=Break Blade



estraer los datos de este player
Lainaa
Name:    Break Blade
Sex:    male
Profession:    Paladin
Level:    7
Achievement Points:    0
World:    Dolera
Residence:    Rookgaard
Last login:    Mar 07 2011, 10:16:19 CET
Account Status:    Free Account
Y poder mostrar los en mi foro...
ademas de si esta online o no
lo cual se conseguiria tomando el nombre del char (Break Blade) y el servidor, para entrar a :

http://www.tibia.com/community/?subtopic=worlds&world=Dolera

y hacer una busqueda en ese listado del nombre : Break Blade

si lo encuentra dar como resultado un ONLINE y si no lo encuentra dar un OFFLINE

esto con el fin de crear una lista de targets para el tibia :D
algo muy util para los que jugamos este juego :D MMORPG :D Espero poder contar con su orientacion en este tema.

Ahora Bien Buscando en diferentes Sitios en internet he logrado conseguir algo de codigo para este Proyecto, pero no tengo las capacidades suficientes como para poderlo entender e implementar a su completo funcionamiento...

aqui los agrego tal como lo encontre.


<?
function getBeetween($from,$to,$string)
{
    $result = explode($from, $string);
    $res_arr = explode($to,$result[1]);
    return $res_arr[0];
}

function httpSocketConnection($host, $method, $path, $data)
    {
        $method = strtoupper($method);

        if ($method == "GET")
<?
function getBeetween($from,$to,$string)
{
    $result = explode($from, $string);
    $res_arr = explode($to,$result[1]);
    return $res_arr[0];
}

function httpSocketConnection($host, $method, $path, $data)
    {
        $method = strtoupper($method);

        if ($method == "GET")
        {
            $path.= '?'.$data;
        }

        $filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);

        if (!$filePointer)
        {
            logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
            return false;
        }

        $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
        $requestHeader.= "Host: ".$host."\r\n";
        $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
        $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";

        if ($method == "POST")
        {
            $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
        }

        $requestHeader.= "Connection: close\r\n\r\n";

        if ($method == "POST")
        {
            $requestHeader.= $data;
        }

        fwrite($filePointer, $requestHeader);

        $responseHeader = '';
        $responseContent = '';

        do
        {
            $responseHeader.= fread($filePointer, 1);
        }
        while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));


        if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
        {
            while (!feof($filePointer))
            {
                $responseContent.= fgets($filePointer, 128);
            }
        }
        else
        {

            while ($chunk_length = hexdec(fgets($filePointer)))
            {
                $responseContentChunk = '';

                $read_length = 0;

                while ($read_length < $chunk_length)
                {
                    $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
                    $read_length = strlen($responseContentChunk);
                }

                $responseContent.= $responseContentChunk;

                fgets($filePointer);

            }

        }


        return chop( $responseContent );
}

function getPlayerInfo($name)
{

$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
     $str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
     
     if (eregi('does not exist.',$str))
     {
        return "Character ".$name." does not exist.";
     }
     else
     {
      return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
      //(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
      getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
      getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
      getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
      getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
      //(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
      str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
      //getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
      getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).'  ';
      }
}

//echo getPlayerInfo('Wezyr Chaosu').'<br/>';



echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>
        {
            $path.= '?'.$data;
        }

        $filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);

        if (!$filePointer)
        {
            logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
            return false;
        }

        $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
        $requestHeader.= "Host: ".$host."\r\n";
        $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
        $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";

        if ($method == "POST")
        {
            $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
        }

        $requestHeader.= "Connection: close\r\n\r\n";

        if ($method == "POST")
        {
            $requestHeader.= $data;
        }

        fwrite($filePointer, $requestHeader);

        $responseHeader = '';
        $responseContent = '';

        do
        {
            $responseHeader.= fread($filePointer, 1);
        }
        while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));


        if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
        {
            while (!feof($filePointer))
            {
                $responseContent.= fgets($filePointer, 128);
            }
        }
        else
        {

            while ($chunk_length = hexdec(fgets($filePointer)))
            {
                $responseContentChunk = '';

                $read_length = 0;

                while ($read_length < $chunk_length)
<?
function getBeetween($from,$to,$string)
{
    $result = explode($from, $string);
    $res_arr = explode($to,$result[1]);
    return $res_arr[0];
}

function httpSocketConnection($host, $method, $path, $data)
    {
        $method = strtoupper($method);

        if ($method == "GET")
        {
            $path.= '?'.$data;
        }

        $filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);

        if (!$filePointer)
        {
            logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
            return false;
        }

        $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
        $requestHeader.= "Host: ".$host."\r\n";
        $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
        $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";

        if ($method == "POST")
        {
            $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
        }

        $requestHeader.= "Connection: close\r\n\r\n";

        if ($method == "POST")
        {
            $requestHeader.= $data;
        }

        fwrite($filePointer, $requestHeader);

        $responseHeader = '';
        $responseContent = '';

        do
        {
            $responseHeader.= fread($filePointer, 1);
        }
        while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));


        if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
        {
            while (!feof($filePointer))
            {
                $responseContent.= fgets($filePointer, 128);
            }
        }
        else
        {

            while ($chunk_length = hexdec(fgets($filePointer)))
            {
                $responseContentChunk = '';

                $read_length = 0;

                while ($read_length < $chunk_length)
                {
                    $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
                    $read_length = strlen($responseContentChunk);
                }

                $responseContent.= $responseContentChunk;

                fgets($filePointer);

            }

        }


        return chop( $responseContent );
}

function getPlayerInfo($name)
{

$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
     $str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
     
     if (eregi('does not exist.',$str))
     {
        return "Character ".$name." does not exist.";
     }
     else
     {
      return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
      //(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
      getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
      getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
      getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
      getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
      //(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
      str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
      //getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
      getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).'  ';
      }
}

//echo getPlayerInfo('Wezyr Chaosu').'<br/>';



echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>
                {
                    $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
                    $read_length = strlen($responseContentChunk);
                }

                $responseContent.= $responseContentChunk;

                fgets($filePointer);

            }

        }


        return chop( $responseContent );
}

function getPlayerInfo($name)
{

$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
     $str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
     
     if (eregi('does not exist.',$str))
     {
        return "Character ".$name." does not exist.";
     }
     else
     {
      return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
      //(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
      getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
      getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
      getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
      getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
      //(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
      //(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
      str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
      //getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
      getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).'  ';
      }
}

//echo getPlayerInfo('Wezyr Chaosu').'<br/>';



echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>



Fuente: hxxp://tpforums.org/forum/thread-5233.html


Codigo 2


<?php
$char 
str_replace("\'","'",$_GET['char']);


echo 
$_GET['test'];
$charSite file_get_contents('http://www.tibia.com/community/?subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$char));

$splitA explode('<TR><TD BGCOLOR="#505050" CLASS=white><B>'$charSite);
$splitB explode('</B></TD></TR>',$splitA[1]);
if(
$splitB[0] == "Could not find character"){
echo 
'The character '.$char.' does not exist.';
}else{
$splitA explode('Name:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>";//name, to fix the capitals
$name $splitB[0];
$splitA explode('Sex:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>";//sex
$splitA explode('Profession:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>";//profession
$splitA explode('Level:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//level
$splitA explode('World:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//world
$world $splitB[0];
$splitA explode('Residence:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//residence
$splitA explode('House:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//house
$splitA explode('membership:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//guild
$splitA explode('Last login:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//last login
$splitA explode('Comment:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//comment
$splitA explode('Status:</TD><TD>'$charSite);
$splitB explode('</TD></TR>',$splitA[1]);
echo 
$splitB[0]."<p>"//account status

$splitA explode('*'.str_replace(" ","*",$name).'</NOBR></TD><TD WIDTH=10%><NOBR>'.$world.'</NOBR></TD><TD WIDTH=70%><B CLASS=green>'$charSite);
$splitB explode('</B></TD><TD>',$splitA[1]);
echo 
$splitB[0]."<p>";
}
?>


Fuente: hxxp://tpforums.org/forum/thread-6279.html

MUCHAS GRACIAS POR SU ATENCION  ;D y espero su respuesta...!!!
(disculpen las mayusculas :laugh:)
Aun tengo mucho por aprender...

DoctorMalboro

Ponerle reto a un tema para que lo hagan gratis y rápido no funciona.Digamos que el código ese que das no es muy simple de poner el bbcodes, tendrías que crear una validación muy cumpleja y sólo sería un código por bbcode (a duras penas). Intentaste ver cómo funciona SMF y crear el bbcode por tu cuenta?

arkamex

#2
De hecho sigo en el proceso de adaptación y conocimiento...
ya he creado el principio de la modificación.


[tibia]Nombre del Character[/tibia]


Modificando el subs.php

pero sigo masticando todo el lenguaje.. (pues el php es algo que tengo que aprender y la mejor manera de aprender es mediante los problemas y dándole su solución)

estoy desmembrado todas las partes del código que usan en este script para entender su funcionamiento y asi saber como adaptarlo..

la razon de ponerlo en este foro es por que me he dado cuenta de que el conocimiento del php que ustedes manejan es mas avanzado del que yo pueda llegar a interpretar y no considere inapropiado solicitar un poco de orientación.


mi pagina es http://www.mismanias.net
y aun esta en desarroyo...
Cuenta test
user: tester
pass: tester123

P.D. y la razon de llamarlo reto es por cuestion personal, pues con el conosimiento actual de php que manejo basicamente toda adaptacion o modificacion de codigo para mi en estos momentos es un reto, el cual poco a poco estoy asimilando.
Aun tengo mucho por aprender...

DoctorMalboro

Sería fácil con un código un poco más simple, ambos que diste estan bastante confusos y muy mal escritos. Cuando esté en mi PC con un poco más de tiempo lo reviso a fondo...

arkamex

mientras mas aprendo mas descubro que es poco lo que se.
(como dijo socrates: Yo solo se que nose nada.)
y es que lo que en mi mente parecia tan simple y facil, ahora me estoy dando cuenta de que no es tan simple, y mas si las funciones que se utlizan de php no estan activas en mi servidor  ???

encontre esta pagina que hace basicamente lo que quiero (la funcion de ONLINE y OFFLINE) pero desconosco el codigo que utiliza para funcionar o de que manera tiene acceso a los datos que presenta   :-\

http://www.pskonejott.com
Aun tengo mucho por aprender...

Advertisement: