12/05/2023 16:07
(09/05/2023 11:20)Dr Editor Escreveu: Perdão pela demora.
Estou fora do SA:MP, mas como é algo relativamente simples e não preciso jogar para testar vou te fazer o meio de campo e se tiver alguma dúvida pode ir perguntando que eu ou outro membro vai ajudar.
Vou anexar os arquivos do PHPMailer para fazer funcionar este sistema e abaixo vou colocar o script pawn e o PHP.
O sistema funciona, PORÉM, não está pronto para uso. Deve adicionar onde salvar o token e onde carregar para fazer a verificação ingame, bem como como o jogador deve fazer para digitar o token.
Este código é apenas o pontapé inicial para fazer esse sistema, mas a parte que você possui dificuldade está pronta.
Pawn:
(feito em forma de gamemode, mas você vai precisar apenas da função EnviarTokenRecuperacao e a definição PHP_URL)
Código:#include <a_samp>
#include <zcmd>
#define PHP_URL "localhost/sendmail/send-mail.php?Email=%s&Token=%i"
main()
{
}
CMD:recuperarconta(playerid, params[])
{
EnviarTokenRecuperacao(playerid, "seuemail@dominio.com.br", random(999999) + 100000);
return 1;
}
stock EnviarTokenRecuperacao(playerid, email[], token)
{
if(!IsPlayerConnected(playerid))
return 0;
static url[200];
format(url, sizeof url, PHP_URL, email, token);
HTTP(playerid, HTTP_GET, url, "", "OnPlayerRequestToken");
return 1;
}
forward OnPlayerRequestToken(index, response_code, data[]);
public OnPlayerRequestToken(index, response_code, data[])
{
if (response_code == 200)
{
SendClientMessage(index, -1, "Em breve você receberá um e-mail contendo um token de recuperação da conta.");
// restante do código
}
else
SendClientMessage(index, -1, "Houve uma instabilidade em nosso servidor e não foi possível enviar o token. Fale com a administração.");
return true;
}
PHP:
(Altere o e-mail e senha do outlook ou outro serviço de e-mail)
Código PHP:<?php
if(empty($_GET["Email"]) || empty($_GET["Token"]))
die(0);
$Email = $_GET["Email"];
$Token = $_GET["Token"];
require "PHPMailer/PHPMailer.php";
require "PHPMailer/SMTP.php";
require "PHPMailer/Exception.php";
$mail = new \PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.office365.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$mail->setLanguage("pt");
$mail->CharSet = PHPMailer\PHPMailer\PHPMailer::CHARSET_UTF8;
$mail->Username = "email@hotmail.com.br"; // E-mail outlook <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$mail->Password = "pdw123"; // Senha da conta <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$mail->Port = 587;
$mail->setFrom("email@hotmail.com.br"); // E-mail outlook <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$mail->addAddress($Email);
$mail->isHTML(true);
$mail->Subject = "E-mail de recuperação de conta - SA:MP";
$mail->Body = "Você solicitou um token de recuperação!<br>Token: <b>{$Token}</b>";
if(!$mail->send())
echo 0;
else
echo 1;
PHPMailer: em anexo
Como fazer:
Novamente, se tiver alguma dúvida só questionar que alguém irá ajudar.
- Descompacte a pasta PHPMailer e jogue a pasta dentro do servidor PHP.
- Copie o conteúdo do arquivo PHP acima e cole em um arquivo de texto e salve como "send-mail.php".
- Para testar se não há erro por parte do servidor, basta jogar o link do arquivo "send-mail.php" no navegador: www.servidor.com/send-mail.php?Email=email_destino@dominio.com.br&Token=12345
- Se funcionar, basta ajustar o link da definição PHP_URL no script pawn.
Espero ter ajudado!
Mano, eu só tenho a te agradecer pela sua ajuda! Você sinceramente salvou o meu projeto, era o único sistema que faltava para o meu projeto ficar completo, mas como não manjo nada de PHP e essas outras coisas, encontrei muita dificuldade em desenvolver algo! Assisti muitos videos, até russos e americanos e nada, mas com o seu breve tutorial e a disponibilização do seu script para estudo eu FINALMENTE consegui! Muito obrigado mesmo!
Eu só tenho mais algumas duvidas bobas agora. Que não atrapalha em nada no projeto, mas com toda certeza deixaria mais profissional, bom vamos lá:
1° - Perg.: Como eu faço para colocar acentos na mensagem que será enviada pelo URL, não consegui resolver esse pequeno problema, vou dar um exemplo.
format(MsgEmail,sizeof(MsgEmail),"Olá+<b>%s</b>,<br>Seja+muito+Bem+Vindo(a)+ao+servidor<br><br>", NomeInserido[playerid]);
format(url, sizeof url, PHP_URL, EmailInserido[playerid], AssuntoE, MsgEmail);
NO EMAIL A MENSAGEM CHEGARÁ ASSIM:
"Ol[font=Graphik, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, Helvetica, sans-serif]� [Fulano], Seja muito Bem Vindo(a) ao servidor..."
Com esse simbolo ( [font=Graphik, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, Helvetica, sans-serif]� )[/font] que não reconheceu o acento ( á ). Se eu enviar o URL direto pela internet, ele reconhece normal os acentos e simbolos, agora se for enviado pelo sistema do servidor, ai acontece isso! Teria como resolver isso direto pelo código ou algo do tipo? Se for enviado pelo sistema do servidor, não reconhece simbolos também.
2° - Perg.: Os emails que serão enviados diariamente por esse sistema PHPMailer são ilimitados, né? Ou existe algum limite diário?
- Mais uma vez, meus sinceros agradecimentos! Desde já obrigado pela atenção![/font]