[Tool/Web/Other] Sistema de Registro pela WEB (Mysql + PHP + Pawn)
#1


Sistema de registro pela WEB
Olб pessoal, hoje vim trazer para vocкs um tutorial de como fazer um sistema de registro pelo site do seu servidor,
que й muito interessante, e ainda possibilitando fazer um painel de controle de usuбrio posteriormente.

Requisitos:


• PHP4+ Server.
• Mysql Server.
• Conhecimento bбsico em SQL e Databases.
• Conhecimento bбsico em Pawn.
• Nнvel: Intermediбrio - Avanзado.

Introduзгo:
Neste tutorial veremos como fazer um sistema de registro pelo site ou pбgina na internet usando PHP para processar os dados e Mysql como banco de dados,
veremos tambйm como usar essas informaзoes no servidor SA-MP.

Primeiro vocк deve possuir um servidor PHP e Mysql:
WampServer, AppServ entre outros, usaremos as informaзoes padrхes do WampServer para fazer a conexгo com o BD(Banco de dados).

Crie um banco de dados no servidor Mysql com o nome de 'bancodedados'
logo apуs crie a tabela com o cуdigo SQL a seguir:
Код:

CREATE TABLE IF NOT EXISTS `tabelausuarios` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Nome` varchar(40) NOT NULL,
  `Senha` varchar(100) NOT NULL,
  `Nivel` int(11) NOT NULL DEFAULT '1',
  `Skin` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`)
)
Registro pela WEB:
Vamos preparar nossa pбgina da internet para fazer o registro de novos usuбrios.
*Todas as pбginas devem estar no mesmo diretуrio e no servidor PHP.

Vamos comeзar com a pбgina que contem o formulбrio de registro.
Vocк pode copiar este cуdigo e salvar com o nome registro.php usando o bloco de notas.
PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Registro</title>
</
head>
<
body>
Preencha os campos para se registrar.
<
form action="confregistro.php" method="post">
<
input name="usuario" id="usuario" type="text" required="required" value="Usuбrio" maxlength="24" /><br/>
<
input name="senha" id="senha" type="password" required="required" value="Senha" maxlength="40" /><br/>
<
input type="submit" value="Registrar" /><br/>
</
form>
</
body>
</
html
Esta pбgina possui um simples formulбrio em HTML que quando clicado no botгo Registrar envia o nome de usuбrio e a senha digitados para o arquivo 'confregistro.php' para validar os campos e registrar o jogador no BD.

Vamos Criar a nova pбgina para validar o formulбrio, salve um novo arquivo com o nome de 'confregistro.php' junto com o cуdigo abaixo.
PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registro</title>
</head>
<body>
<?php
$usuario 
mysql_real_escape_string($_POST['usuario']);//cria a variбvel chamda $usuario no php e pega o usuario digitado na pбgina registro.php
$senha mysql_real_escape_string($_POST['senha']);//mesma coisa que acima porйm com a senha.
if(strlen($usuario) > && strlen($usuario) < 24)//checa se o nome de usuбrio digitado possui mais que 5 dнgitos
{
    if(
strlen($senha) > && strlen($senha) < 50)//checa se a senha digitada possui mais que 5 dнgitos
    
{
        
//caso tudo ocorrem normalmente vamos fazer a inserзгo no BD
        
$conexao mysql_connect("localhost","root","");
        
mysql_select_db($conexao,"bancodedados");//mude o 'bancodedados' para o Banco que vocк criou anteriormente
        
$consulta mysql_query("SELECT * FROM tabelausuarios WHERE Nome = '$usuario'");//fas uma consulta no BD para saber se existe algum registro com o nome digitao
        
if(mysql_num_rows($consulta) > 0)echo 'Este nome de usuбrio jб estб em uso.';//caso jб contenha um registro com o nome digitado retorna esta mensagem
        
else{
            
//caso esteja tudo correto irб fazer a inserзгo
            
mysql_query("INSERT INTO tabelausuarios (Nome,Senha) VALUES('$usuario',md5('$senha')");//insere no BD
            
echo 'Parabйns $usuario, vocк foi registrado com sucesso.';//manda uma mensagem de кxito
            //poderiam colocar mais funзoes ao se registrar como enviar um email, redirecionar a outra pбgina e etc...
        
}
    }
    else echo
'Sua senha deve conter no mнnimo 6 dнgitos';//caso a senha nгo tenha 5 dнgitos manda uma mensagem de erro
}
else echo
'Seu nome de usuбrio deve conter no mнnimo 6 dнgitos';//caso o usuario nгo tenha 5 dнgitos manda uma mensagem de erro
?>
</body>
</html>
Esta pбgina й a responsбvel pela validaзгo, exitem muito mйtodos para a proteзгo de dados indesejбveis, porйm este tutorial estб explicando o bбsico.
O sistema de registro estб pronto agora vamos ver como o servidor faz para interagir com o BDe pegar os usuбrios registrados.
Lembrando, para poder acessar estas pбginas elas devem estar rodando em um servidor PHP.

Gamemode/Filtercript:
Vamos comeзar a prepara o servidor sa-mp para receber o registro dos usuбrios:
Precisaremos de algum plugin que faзa a comunicaзгo com o Mysql, usaremos hoje o plugin do GStylezzz.
Clique aqui para visitar o tуpico oficial do plugin para download
Com o Plugin e includes devidamente instaladas, vamos a obra.

pawn Код:
#include <a_mysql>
//adicionamos a include no inнcio do gamemode
pawn Код:
public OnGameModeInit()//iremos realizar a conexгo com o mysql quando o gamemode iniciar
{
    mysql_conect("localhost","root","");//vamos fazer a conexгo
    mysql_select_db("bancodedados");//selecionamos o banco de dados que vamos trabalhar
    return 1;
}
pawn Код:
#define DIALOG_LOGIN 3854
public OnPlayerConnect(playerid)
{
    //vamos checar se o usuбrio possui uma conta no servidor
    new query[300],nome[30];
    GetPlayerName(playerid,nome,30);
    format(query,sizeof(query),"SELECT * FROM tabelausuarios WHERE Nome = '%s' LIMIT 1",nome);//formatamos a string
    mysql_query(query);//fizemos a consulta
    mysql_store_result();//guardamos o resultado para poder manipularmos.
    new rows = mysql_num_rows();//pega o nъmero de registros encontrados
    if(!rows)SendClientMessage(playerid,-1,"Vocк deve se registrar no site.");//caso nгo exista nenhum registro(nao se registrou) manda uma mensagem dizendo para se registrar no site.
    else
    {//caso o jogador possua uma conta aparecerб o dialog para logar
        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bem vindo digite sua senha para logar.","Logar","Sair");
    }
    mysql_free_result();//libera o resultado guardado.
    return 1;  
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LOGIN)
    {
        if(!response)return Kick(playerid);
        new query[300],nome[30];
        GetPlayerName(playerid,nome,30);
        format(query,sizeof(query),"SELECT * FROM tabelausuarios WHERE Nome = '%s' AND Senha = md5('%s') LIMIT 1",nome,inputtext);//formatamos a string com a senha desta vez
        mysql_query(query);//fizemos a consulta
        mysql_store_result();//guardamos o resultado para poder manipularmos.
        new rows = mysql_num_rows();//pega o nъmero de registros encontrados
        if(!rows)ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bem vindo digite sua senha para logar.","Logar","Sair");//caso erre a senha manda o dialog denovo.
        else
        {
            //carregar jogador e spawna
            new save[300];
            mysql_fetch_field_row(save,"Skin");SetPlayerSkin(playerid,strval(save));//pega o skin do player do BD
            mysql_fetch_field_row(save,"Nivel");SetPlayerScore(playerid,strval(save));//pega o nivel do player no BD
            SpawnPlayer(playerid);
        }
        mysql_free_result();//libera o resultado guardado.
    }      
}
public OnPlayerDisconnect(playerid)
{
    //vamos salvar o jogador, mas nao se esqueзam de checar se o jogador estб logado antes
    new query[300],nome[30];
    GetPlayerName(playerid,nome,30);
    format(query,sizeof(query),"UPDATE tabelausuarios SET Skin = '%d', Nivel = '%d' WHERE Nome = '%s' LIMIT 1",GetPlayerSkin(playerid),GetPlayerScore(playerid),nome);//formatamos a string com o que devemos salvar
    mysql_query(query);//fizemos a consulta e salvamos no BD
    return 1;
}
Guias bбsicos sobre o tutorial:
Como instalar e configurar o WampServer
[ame=http://www.youtube.com/watch?v=-lZDx2IFzSU]Como criar um banco de dados usando o PhpMyAdmin[/ame]
Tutorial de Introduзгo ao Mysql


Downloads:
WampServer - Servidor PHP/Mysql
Plugin/include Mysql para SA-MP
Manual de referкncia MYSQL


Agradeзo a compreensгo de todos e espero que tenham bons estudos.
Caso encontrem erros ortogrбficos ou outros, por favor comente.
Se possнvel avaliem o tуpico.
att. Ivan

Reply
#2

O lado php podia estar melhor.
e no php, podia estar tudo colocado na mesma pбgina, com cуdigo optimizado(por aquilo que vejo, nгo estб optimizado)

E por acaso, no mysql_num_rows, devia de ter 1, e nгo > 0, sendo que o mysql dб resultado 1 se encontrar, e 0 se nao encontrar.
PHP код:
if(mysql_num_rows($consulta) == 1)echo 'Este nome de usuбrio jб estб em uso.';//caso jб contenha um registro com o nome digitado retorna esta mensagem 
else{ 
          
//caso esteja tudo correto irб fazer a inserзгo 
            
mysql_query("INSERT INTO tabelausuarios (Nome,Senha) VALUES('$usuario',md5('$senha')");//insere no BD 
            
echo 'Parabйns $usuario, vocк foi registrado com sucesso.';//manda uma mensagem de кxito 
            //poderiam colocar mais funзoes ao se registrar como enviar um email, redirecionar a outra pбgina e etc... 

Reply
#3

Poderia ter otimizado mais, deixado a chamada PHP na mesma pбgina do HTML.
E arruma ae:

PHP код:
$senha mysql_real_escape_string($POST['senha']);//mesma coisa que acima porйm com a senha. 
Ta faltando o _, й $_POST ^^
Reply
#4

obrigado pessoal pelos comentбrios, bruno jб editei lб, este tutorial foi destinado a quem estб comeзando , entгo cуdigo otimizado nгo й uma coisa que iria ajudar.
Reply
#5

Fico legal (: , Bom trabalho

Quando fiz meu tutorial , Ia Colocar esta Parte tambйm mais cabei mudando de ideia =)


Vejo que estб Almentando o interece das Pessoas ao PHP + MySQL + Pawn xD


@EDIT.
E a Funзгo de Verificar se ja existe Pode se fazer no Prуpio sql , So deixar como Unico ^^

Mais Assim Avisa o Porque do erro
Reply
#6

muito bom cara entendi o tuto...
Reply
#7

Parece ser muito bom!
Reply
#8

Gamei na sua foto (parece eu) -q

@topic

Уtimo Tuto

10/10
Reply
#9

Quote:
Originally Posted by Ades
Посмотреть сообщение
Gamei na sua foto (parece eu) -q

@topic

Уtimo Tuto

10/10
obrigado, a foto me descreve completamente kkkk
Reply
#10

Quote:
Originally Posted by [JD]BlackFire
Посмотреть сообщение
obrigado, a foto me descreve completamente kkkk
LOOOOOOOOOOOOL'

@Topic
Parece bom, irei ver com mais paciкncia -' +rep
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)