Jump to content
Ruivo

Preg_match com Login

Recommended Posts

Ruivo

Bom dia pessoal estou com um problema usando o preg_match.

Dantes eu usava o preg_match e estava tudo a funcionar. Mas agora o site onde eu obtinha os valores alterou ali um promenor. Que para se ver a pagina que contem os valores que eu quero é precisso de fazer Login. Então gostaria de saber como obter o valores?

Cumprimentos

Share this post


Link to post
Share on other sites
pedrosorio

O que é que o preg_match tem a ver com o resto?

Estavas a ir buscar valores a um site (CURL?) e usavas preg_match para identificar esses valores. Agora é preciso fazer login. Portanto a tua dúvida é como fazer login, o preg_match não é para aqui chamado. Sem saber qual é o site ou o tipo de login, parece-me difícil ajudar-te.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
laeknishendr

Olá camarada Ruivo, pelo que entendi deseja usar cURL para fazer login, seria ótimo se você postasse os valores que você deseja pegar com os prefixos e sufixos, caso já tenha conseguido fazer login no sistema.

Share this post


Link to post
Share on other sites
Ruivo

Olá camarada Ruivo, pelo que entendi deseja usar cURL para fazer login, seria ótimo se você postasse os valores que você deseja pegar com os prefixos e sufixos, caso já tenha conseguido fazer login no sistema.

Os dados estão por exemplo nesta pagina: http://en.warrock.nexoneu.com/Ranking/Profile#/xhawkeye08 são as Kills, Deaths, Nick, Nivel e por ai...

Quanto a cURL eu nunca usei nem faço a minima ideia.

Eu não consigo pegar os dados declarando os cookies antes da script? Se não então que devo usar?

Share this post


Link to post
Share on other sites
HappyHippyHippo

O que estás a tentar fazer é legal?

se for só verificar o ranking deverá ser ... não vejo problemas em saber a informação estatística de um jogador

no entanto os links dão informação que o site encontrasse em manutenção, por isso, daqui nada


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruivo

se for só verificar o ranking deverá ser ... não vejo problemas em saber a informação estatística de um jogador

no entanto os links dão informação que o site encontrasse em manutenção, por isso, daqui nada

Sim é legal.

Agora o site já deve estar disponivel.

Share this post


Link to post
Share on other sites
Ruivo

Estive a tentar

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://passport.nexoneu.com/Login.aspx?nexoneuTheme=Warrock");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_xec($ch);
echo "$output";

$url = file_get_contents("http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08", false, $context);
preg_match('%<h1 class="catorzered">(.*?)<\/h1>%', $url, $nomeproduto);
print 'Nome Produto: '.$nomeproduto[1].'<br>'; // Nome produto $nomeproduto
preg_match('%<div class="profileInfo">(.*?)<\/div>%', $url, $precoproduto);
print 'Preþo Produto: '.$precoproduto[1].'<br>'; //Preþo Produto $precoproduto
curl_close($ch);  
?>

e dá-me o seguinte erro:

Fatal error: Call to undefined function curl_init() in C:\Users\Rei120\Desktop\wos\www\warrock.php on line 2

Que está errado?

Share this post


Link to post
Share on other sites
HappyHippyHippo

não tens instalado o módulo cURL do apache.

faz este script

<?php phpinfo(); ?>

e verifica se realmente tens isso instalado

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruivo

Pois eu procurei e nao encontrei nada relacionado com cURL na pagina phpinfo.

Como posso instalar?

Share this post


Link to post
Share on other sites
Ruivo

Muito obrigado pessoal já consegui instalar o cURL.

Agora deparei-me com outro problema as expressões regulares que eu pensava estarem certas afinal devem ter qualquer coisa mal porque o valor não é apanhado

Eu tenho assim:

$url = file_get_contents("http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08", false, $context);
preg_match('%<td>KILLS<\/td>\n<td class="rTxt">[0-9.-]<\/td>%', $url, $kills);
print 'Kills: '.$kills[1].'<br>';

e quero apanhar isto

<tr>
<td>KILLS</td>
<td class="rTxt">318,717</td>
</tr>	 

Sendo o valor 318,717 o valor que eu quero que apanhe.

Alguem me dá uma ajudinha?

Share this post


Link to post
Share on other sites
HappyHippyHippo

estou a ver pelo menos alguns erros na expressão regular

1º - tens a seguinte combinação "[0-9.-]" para detectar um número, como vês, não tens o caracter virgula, caracter que aparece no número no HTML a ser interpretado "318,717"

2º - não estás a dizer que o grupo de elementos que determina o número pode aparecer 1 ou mais vezes, que na realidade deveria ser algo do genero:

(-|)\d+(\,\d+|)

isto indica :

(-|) : sinal menos ou não

\d+ : um dígito ou mais

(\,\d+|) : uma virgula com um dígito ou mais ou nada

3º - lembra-te que o resultado será toda a entrada expressão regular, isto é, será todo o

<td>KILLS</td>
<td class="rTxt">318,717</td>

podes usar o lookahead e o lookbehind para selecionar somente o que pretendes

podes sempre usar sites online para testar a tua expressão regular como por exemplo : http://www.regextester.com/

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruivo

Desculpa mas nao estou a perceber. Será que me podes fazer a expressão regular em php?

Share this post


Link to post
Share on other sites
laeknishendr

Olá ruivo, é simples para pegar o conteúdo dentro dessas tags:

preg_match_all("/class=\"rTxt\">(.*?)<\/td>/", $var, $matches);

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
Ruivo

Olá ruivo, é simples para pegar o conteúdo dentro dessas tags:

preg_match_all("/class=\"rTxt\">(.*?)<\/td>/", $var, $matches);

Coloquei isso no codigo e continua a nao dar

Imprime

Kills: Array

Portanto penso que é algo que está errado com o codigo.

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://passport.nexoneu.com/Login.aspx?nexoneuTheme=Warrock");
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'txtLogin0=USERNAME&txtpassword0=PASSWORD');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
curl_setopt($ch, CURLOPT_URL, 'http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08');
$content = curl_exec ($ch);
$var = file_get_contents('http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08');
preg_match_all("/class=\"rTxt\">(.*?)<\/td>/", $var, $matches);
print 'Kills: '.$matches.'<br>';
curl_close($ch);
?>

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
laeknishendr

Olá Ruivo, isso acontece porque você está tentando imprimir $matches como se fosse texto(string), porém $matches é uma matriz(array), isso significa que tem que especificar o valor que deseja exibir, no caso de um print_r($matches) para ver quais são suas opções.

Share this post


Link to post
Share on other sites
Ruivo

Olá Ruivo, isso acontece porque você está tentando imprimir $matches como se fosse texto(string), porém $matches é uma matriz(array), isso significa que tem que especificar o valor que deseja exibir, no caso de um print_r($matches) para ver quais são suas opções.

Fiz isso e ele imprime

Array ( [0] => Array ( ) [1] => Array ( ) )

Share this post


Link to post
Share on other sites
laeknishendr

Mas a função file_get_contents está pegando o conteúdo do perfil do usuário corretamente?

Share this post


Link to post
Share on other sites
Ruivo

Mas a função file_get_contents está pegando o conteúdo do perfil do usuário corretamente?

Não sei... Desculpa a ignorancia

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.