Veja scripts úteis em PHP para sites de MU Online, incluindo status do servidor, usuários online, rankings, contas, personagens e integração com SQL Server.
MU Online • PHP • Desenvolvimento Web
Scripts Úteis PHP para Sites de MU Online
Veja exemplos práticos de PHP para consultar dados do MU Online,
montar rankings, verificar jogadores online, buscar personagens,
consultar resets e integrar informações da database ao seu website.
Nível: IntermediárioCategoria: DesenvolvimentoPHP + SQL ServerAprendiz MU Online
Antes de usar os exemplos
Os scripts abaixo são exemplos didáticos para sites de MU Online.
Os nomes das colunas podem variar conforme sua Server File.
Em estruturas clássicas você pode encontrar tabelas como:
MEMB_INFO
MEMB_STAT
Character
Guild
GuildMember
AccountCharacter
warehouse
Importante
Nunca exponha usuário e senha do SQL diretamente em páginas públicas.
Centralize a conexão em um arquivo de configuração protegido.
1. Conexão com SQL Server
Em projetos antigos que utilizam extensões MSSQL, uma conexão
pode seguir uma estrutura semelhante a:
<?php
$host = '127.0.0.1';
$usuario = 'sa';
$senha = 'SUA_SENHA';
$database = 'MuOnline';
$conexao = mssql_connect(
$host,
$usuario,
$senha
);
if(!$conexao){
die('Erro ao conectar no SQL Server.');
}
if(!mssql_select_db($database, $conexao)){
die('Erro ao selecionar a database.');
}
?>
PHP moderno
Em servidores atuais, prefira drivers suportados como
SQLSRV ou PDO_SQLSRV. O exemplo acima é mais comum em
projetos legados.
2. Mostrar quantidade de jogadores online
Muitas Server Files registram o status da conta na tabela
MEMB_STAT.
<?php
$sql = "
SELECT COUNT(*) AS total
FROM MEMB_STAT
WHERE ConnectStat > 0
";
$query = mssql_query($sql);
$dados = mssql_fetch_assoc($query);
echo intval($dados['total']);
?>
Normalmente:
ConnectStat = 0
Offline
ConnectStat > 0
Online
3. Ranking de Resets
Caso sua Server File utilize ResetCount,
um ranking simples pode ser montado assim:
<?php
$sql = "
SELECT TOP 10
Name,
Class,
ResetCount,
cLevel
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
ResetCount DESC,
cLevel DESC
";
$query = mssql_query($sql);
while($char = mssql_fetch_assoc($query)){
echo htmlspecialchars(
$char['Name'],
ENT_QUOTES,
'UTF-8'
);
echo ' - ';
echo intval(
$char['ResetCount']
);
echo '<br>';
}
?>
Confira seu campo de reset.
Algumas Server Files utilizam Resets, ResetsG, ResetCount
ou uma coluna personalizada.
4. Ranking por Level
<?php
$sql = "
SELECT TOP 10
Name,
Class,
cLevel,
Experience
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
cLevel DESC,
Experience DESC
";
$query = mssql_query($sql);
while($char = mssql_fetch_assoc($query)){
echo htmlspecialchars(
$char['Name'],
ENT_QUOTES,
'UTF-8'
);
echo ' - Level ';
echo intval(
$char['cLevel']
);
echo '<br>';
}
?>
5. Buscar personagem pelo nome
Evite inserir diretamente dados recebidos pelo usuário dentro
da consulta SQL.
Em sistemas legados, no mínimo faça validação rigorosa antes
de utilizar o valor.
Nunca confie diretamente em parâmetros recebidos pela URL.
18. Não exiba erros SQL em produção
Durante desenvolvimento pode ser útil visualizar erros.
Em produção, isso pode revelar informações internas.
Evite mensagens contendo:
IP do SQL Server;
usuário SQL;
nome de tabelas internas desnecessárias;
caminhos físicos;
senhas;
detalhes de conexão.
19. Centralize consultas repetidas
Em vez de repetir a mesma consulta em várias páginas,
crie funções reutilizáveis.
<?php
function total_online()
{
$sql = "
SELECT COUNT(*) AS total
FROM MEMB_STAT
WHERE ConnectStat > 0
";
$query = mssql_query($sql);
if(!$query){
return 0;
}
$dados = mssql_fetch_assoc($query);
return intval(
$dados['total']
);
}
echo total_online();
?>
20. Boas práticas para PHP em sites MU Online
centralize a conexão com SQL;
não exponha credenciais;
valide dados recebidos por GET e POST;
escape conteúdo antes de imprimir;
evite consultas SQL desnecessárias;
limite rankings com TOP;
não permita que usuários comuns editem dados administrativos;
mantenha backups da database;
use HTTPS;
prefira drivers SQL atuais quando possível.
Perguntas frequentes
PHP consegue acessar a database MuOnline?
Sim, desde que o servidor PHP possua um driver compatível
com o SQL Server e as credenciais tenham permissão na database.
Qual tabela mostra jogadores online?
Em muitas Server Files clássicas é utilizada a tabela
MEMB_STAT e o campo ConnectStat.
Qual campo usar para ranking de reset?
Depende da Server File. Pode ser ResetCount, Resets,
ResetsG ou outro campo personalizado.
É seguro utilizar usuário SA no site?
Não é o ideal. Prefira criar um usuário SQL específico
com apenas as permissões necessárias para o website.
Esses scripts funcionam em qualquer Season?
Não necessariamente. As tabelas e colunas podem variar,
então os exemplos devem ser adaptados à estrutura da sua database.
Conclusão
PHP pode ser utilizado para integrar praticamente todas as
informações principais de um servidor MU Online ao website,
desde rankings até status online e dados de personagens.
O mais importante é entender a estrutura real da sua database,
validar todas as entradas e evitar consultas inseguras.
Com uma base organizada, esses scripts podem servir como ponto
de partida para rankings, painéis de usuário, sistemas VIP,
páginas de personagens e diversas outras ferramentas.