Jump to content

Problema Invite


valascus

Recommended Posts

Bom dia, eu estava a tentar modificar um antigo php que convida automaticamente pessoas para o grupo steam.

Infelismente, tenho um erro, na linha 134.

O Codigo, a partir da linha 133 é este:

{
 $query_string = "?type=groupInvite^&inviter="$inviter"^&invitee=%1^&group="$plugin_groupid"^&sessionID="$steam_cookie"
 $steam_invite = curl_init();
 curl_setopt($steam_invite, CURLOPT_URL, "http://steamcommunity.com/actions/GroupInvite".$query_string);
 curl_setopt($steam_invite, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($steam_invite, CURLOPT_HEADER, 1);
 curl_setopt($steam_invite, CURLOPT_COOKIE, "steamLogin=".$steam_cookie);
 $result = curl_exec($steam_invite);
 curl_close($steam_invite);
 return $result;
}

Por um .bat que eu e funciona, o link de convidar é assim:

http://steamcommunity.com/actions/GroupInvite?type=groupInvite^&inviter=steamid64 da minha steam^&invitee=%1^&group=id do grupo que quero convidar^&sessionID=Session Id da steam.

Espero resolver o mais rapido possivel.

Obrigado

Link to comment
Share on other sites

Não podes ter aspas normais dentro de aspas: tens de as "escapar"

$string_com_aspas = "Em inglês, \"Nice\" quer dizer \"Boa\"
O Mc'Donalds está em promoção.";

Outra hipótese é usar plicas (mas se tiveres plicas dentro das plicas tens de as "escapar")

$string_com_aspas = 'Em inglês, "Nice" quer dizer "Boa"
O Mc\'Donalds está em promoção.';

Ainda outra hipótese é usar "heredoc"

$string_com_aspas = <<<STRING_COM_ASPAS
Em inglês, "Nice" quer dizer "Boa"
O Mc'Donalds está em promoção.
STRING_COM_ASPAS;

Podes ler mais sobre string no manual do php: http://php.net/manual/en/language.types.string.php

De acordo com o manual, ainda tens a opção da sintaxe "nowdoc" ... é nova demais para eu conhecer como usá-la: lê a descrição no manual

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

De acordo com o manual, ainda tens a opção da sintaxe "nowdoc" ... é nova demais para eu conhecer como usá-la: lê a descrição no manual

o manual indica que o nowdoc é a mesma coisa que o heredoc, só que a string é tratada como que se fosse escrita com apostrofes, isto é, não existe o parsing da string:

exemplo:

$var = 'XPTO';

$text1 = <<<TEXT1
1: isto é um texto com uma variavel com valor {$var}
TEXT1;

$text2 = <<<'TEXT2'
2: isto é um texto com uma variavel com valor {$var}
TEXT;

echo $text1;
echo "\n";
echo $text2;

isto resulta em :

1: isto é um texto com uma variavel com valor XPTO
2: isto é um texto com uma variavel com valor {$var}
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Isso cheira-me a aspas por fechar numa das linhas anteriores.

Liga o realce de sintaxe no teu editor para ele te mostrar onde começam e acabam as strings (um post aqui, no P@P, com as tags correctas, faz a mesma coisa)

$x = "jsd" . $fhfgs . "jkfdsjkghfds" . "hgsdsd;
something_else();
curlopt_setopt($xxx, BLABLABLA, "string");

Nota que a string que comecou na linha 1 acaba na linha 3

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

a mensagem de erro dita que ao interpretar o script encontrou um literal que não deveria ter encontrado nessa linha

no entanto, é preciso lembrar que um compilador (neste caso um interpretador) é um programa, e esta situação é uma das poucas vezes que a mensagem de erro não é 100% correta, é na realidade um best-effort para dizer algo com significado.

porquê:

a tua instrução está claramente correta, ponto. mas é normal, quando um literal (uma string), quando não é corretamente fechada, o erro só ser detectado à posteriori. este é o teu caso. o erro não se encontra na linha 136, mas numa linha anterior, que no teu caso deverá ser onde declaras a expressão regular.

deverás estar a usar um editor sem syntaxe highlight porque se o usasses, ele imediatamente te marcaria muito código com a cor de um literal.

para ser possível te dizer qual o problema, só mesmo com o código descrito acima.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Ele esta ali em cima:

{
 $query_string = "type=groupInvite^&inviter='$inviter'^&invitee=%1^&group='$plugin_groupid'^&sessionID='$steam_cookie'
 $steam_invite = curl_init();
 curl_setopt($steam_invite, CURLOPT_URL, "http://steamcommunity.com/actions/GroupInvite".$query_string);
 curl_setopt($steam_invite, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($steam_invite, CURLOPT_HEADER, 1);
 curl_setopt($steam_invite, CURLOPT_COOKIE, "steamLogin=".$steam_cookie);
 $result = curl_exec($steam_invite);
 curl_close($steam_invite);
 return $result;
}
Link to comment
Share on other sites

agora tenho o mesmo erro, mas na linha 135.

Aqui esta o codigo:

{
 $query_string = "type=groupInvite^&inviter='$inviter'^&invitee=%1^&group='$plugin_groupid'^&sessionID='$steam_cookie'"
 $steam_invite = curl_init();
 curl_setopt($steam_invite, CURLOPT_URL, "http://steamcommunity.com/actions/GroupInvite".$query_string);
 curl_setopt($steam_invite, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($steam_invite, CURLOPT_HEADER, 1);
 curl_setopt($steam_invite, CURLOPT_COOKIE, "steamLogin=".$steam_cookie);
 $result = curl_exec($steam_invite);
 curl_close($steam_invite);
 return $result;
}

A linha 135 é:

$steam_invite = curl_init();
Link to comment
Share on other sites

não deve ser exatamente a mesma mensagem de erro, porque se fosse, o interpretador estaria a se queixar de um literal na linha seguinte.

o que se deve estar a queixar é que existe uma variável que não esperava, isto porque não estás a terminar a instrução na linha 134.

$query_string = "type=groupInvite^&inviter='$inviter'^&invitee=%1^&group='$plugin_groupid'^&sessionID='$steam_cookie'";
                                                                                                                     A
                                                                                                                     |
                                                                                                              ponto e virgula
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

agora tenho o mesmo erro, mas na linha 135.

Aqui esta o codigo:

{
$query_string = "type=groupInvite^&inviter='$inviter'^&invitee=%1^&group='$plugin_groupid'^&sessionID='$steam_cookie'"
$steam_invite = curl_init();
curl_setopt($steam_invite, CURLOPT_URL, "http://steamcommunity.com/actions/GroupInvite".$query_string);
curl_setopt($steam_invite, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($steam_invite, CURLOPT_HEADER, 1);
curl_setopt($steam_invite, CURLOPT_COOKIE, "steamLogin=".$steam_cookie);
$result = curl_exec($steam_invite);
curl_close($steam_invite);
return $result;
}

A linha 135 é:

$steam_invite = curl_init();

Falta o ;

Link to comment
Share on other sites

Agora tenho erro linha 54 e 121.

Vou enviar

Linha 54:

$steam_communityid = strstr($steam_cookie, "%", true);

Nao tem mais nada, nao tem codigo antes associado

Linha 121:

$mysqli_conn->close();

Fecha a conexao a DB e tambem nao tem nenhum codigo antes associado

E ainda o clássico:

Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user 'o meu user' (using password: YES) on line 57

Onde a linha 57 é:

$mysqli_conn = new mysqli($db_hostname, $db_username, $db_password, $db_database, $db_port);
Edited by valascus
Link to comment
Share on other sites

Na linha 54 deu este :

Warning: Wrong parameter count for strstr()

o 3º parâmetro do strstr só foi adicionado após a versão 5.3, podes confirmar a tua versão do PHP ??

E na linha 121, este:

Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli on line 121

pois, isso porque com a informação que adicionaste ao post anterior

Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user 'o meu user' (using password: YES) on line 57

Onde a linha 57 é:

$mysqli_conn = new mysqli($db_hostname, $db_username, $db_password, $db_database, $db_port);

não tens ligação á base de dados, logo não a podes fechar 😄

agora, isso já entra na área de autenticação no servidor. ligação tens, porque tens resposta, no entanto

- ou o nome do utilizador ou a palavra chave estão erradas

- ou não tens o utilizador criado na base de dados

- ou o utilizador não tem permissões para a base de dados pedida (se bem que este caso acho que a mensagem diz isso)

Nota que é diferente ter permissões de acesso ao servidor de permissões de acesso à base de dados do servidor

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

  • 2 weeks later...

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.