Ir para conteúdo
  • Cadastre-se

augustocesr

Membro
  • Total de itens

    1185
  • Registro em

  • Última visita

  • Prêmios recebidos

    14

Tudo que augustocesr postou

  1. Finalmente alguém aqui no Fórum que fala a minha lingua! Não irei comentar nada sobre hahaha Apenas em minha defesa, perdão por este projeto não ter saído ainda, sinceramente não sei nem quando será, pois, está bem corrido pra mim.
  2. Rapaz eu já comprei em 2013 e não gostei. Tem umas paradas massas, mas pelo que eu lembro, tem muitos erros e foi R$ 300,00 na época. Não tive uma boa experiência. Mas se já atualizou, melhorou é outra história. Procura saber antes blz?!
  3. Isso mesmo, porém isso só vai conseguir ser feito se: 1 - Não estiver usando namespace e usar o include da classe; 2 - No caso do projeto aqui citado, usando namespace, usar o use Sendo assim, você irá conseguir chamar: <?php class MinhaClasse { public static function meuMetodo($args = null) { // TODO: To Implement... } } MinhaClasse::meuMetodo($args); Abraços
  4. Você pode usar o bom e velho define() no arquivo config ou você pode fazer o que os frameworks fazem: utilizar a função env(). Alguns de forma mais simples fazem da seguinte forma: config.php Util.php (classe Util ou outra classe de configuração Global) Sendo assim, na chamada abaixo, você terá o valor desejado se passar uma chave existente do array. App\Util\Util::getConfig('server_name'); Na verdade é até recomendado usar uma classe. Só pra você ter ideia, os Frameworks, inclusive os mais conhecidos, usam classe(s) para manipular as configurações do projeto. 2 exemplos: - Laravel Framework Usa a class App(): App::environment('local') - CakePHP Usa a classe Configure() Configure::read('local') Obs.: Sempre com métodos estáticos! Espero ter ajudado, abraços (:
  5. Hey everyone, beleza? Bora dar um up nos sites! Se trata de um tutorial e uma dica rápida pra quem não quer se preocupar em fazer consultas no banco "na mão" e até um pouquinho de segurança =P Nesse exemplo vou mostrar a lib do Laravel (um framework PHP), a Eloquent. Docs: [Hidden Content] Requisitos: - PHP >= 5.6.4 - Composer (tutorial de como instalar [Hidden Content]) Obs.: É esperado que você esteja utilizando um padrão MVC para esta implementação. "É esperado", mas nada impede de outra forma. PS.: O mais interessante disso é que você não precisa mexer em basicamente nada se trocar pra L2OFF, só adaptar aos campos e o driver. Passo 1 Com o composer instalado, acesse a pasta do seu projeto, ex.: meusite/, execute o comando Se o composer estiver global composer require illuminate/database se não estiver php composer.phar require illuminate/database Passo 2 No seu arquivo index.php: <?php require 'vendor/autoload.php'; No arquivo de configuração ou em alguma function: <?php use Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); Passo 3 Agora ficou simples :) Se quiser listar o toppvp, os últimos 100: $top100pvp = Capsule::table('characters')->take(100)->where('accesslevel', 0)->orderBy('pvpkills', 'desc')->get(); Trará uma collection, só dar o seu foreach agora. Com isso, você consegue fazer seu crud easy. E só dar uma olhada na documentação. Abraços :onda: Att, Augusto Ferreira
  6. Eu ia comentar os pontos que eu observei no site ontem, mas resolvi não comentar (crítica construtiva), mas pegando o gancho ai... Sem falar de formulários, PDO, etc. de cara só olhando teu config.php, se liga no caso a seguir: 1- O VPS caiu ou a internet do VPS caiu ou deu alguma bronca de conexão. O que vai estourar pro usuário na tela? Falha na conexão: Unknown database 'NOME_DB' Esse caso aí é se não achar a DB, mas se não conseguir conectar claro que vai estourar outro erro, como por ex: access denied... 2 - Aparece o nome da db ou o nome do usuário pra quem ta acessando, logo: Falha de segurança! ----- Aí vai a minha dica: Tratar conexão desse jeito não é bom. Se caso não conectar a db ou der algum problema, antes de mais nada: error_reporting(0) Em PRODUÇÃO, não deve aparecer erros na qual o desenvolvedor só deveria ver e o usuário não. Sendo assim, joga ele pra uma página de manutenção, 404 ou o que você achar melhor. Assim que o banco voltar ou o problema for restabelecido, o site volta a abrir normalmente... E só + uma coisinha (: Usem o try {} catch, ele é nosso amiguinho :)
  7. vdd acho viável atualizar o nome do tópico, pois essa query meio que da um wipe dos chars e tudo relacionado a ELES (no plural), nada específico, desde os personagens até as suas respectivas contas. Como o banco do l2j é uma porcaria (é mal feito), não é relacionado da forma correta, é só executar a query sem nenhuma ordem de execução.
  8. tem varios ai... tem até uns novos mas n muitos divulgados, meio diferentes dos atuais... [Hidden Content]
  9. +1 tópico dando uma breve comentada sobre alguns códigos e técnicas para melhorar o posicionamento dos sites no Google juntamente com o seu desempenho. #1 Evite Black Hat Extremamente importante. Se o Google detectar Black Hat em seu site ele simplesmente pode apagar de vez seu site das buscas! É isso mesmo. Como já tem conteúdos na web falando sobre, deixo um link muito bom para que vocês não tropecem neste erro. Link #2 Title, Description e Keywords Title: É importante que cada página do seu site contenha um título diferente e que ele seja bem direto de acordo com o conteúdo da página. Description: Segue a mesma regra do título em ser diferente pra cada página, porém aqui você pode dar mais detalhes sobre o conteúdo. Keywords: Também diferente para cada página, já que o conteúdo é diferente! #3 Sitemap.xml Indexa todas as suas páginas inclusive se tiver página de notícias, posts, etc. Informando ao buscador o nível (%) de relevância que ele terá para indexar. Existem sites que geram sitemap de acordo com a sua url informada. É importante ressaltar que o sitemap deverá ser adicionado ao Google Webmasters (basta fazer um registro com a sua conta do Google ,cadastrar o seu site lá e enviar seu sitemap) #4 Robots.txt Ele é um arquivo que irá ser lido pelos bots para informar qual página o buscador deve indexar ou não. A sintaxe básica é: Allow: /contato Disallow: /admin Inclusive, também pode apontar para o sitemap.xml, basta adicionar o código: Sitemap: [Hidden Content] É importante ressaltar que o robots.txt deverá ser adicionado ao Google Webmasters também #5 Use HTML5 O Google está muito cheio de 'regalias' e como o html5 está muito apegado a semântica, até mesmo uma <section> no lugar errado pode prejudicar o seu site. #6 Sites Responsivos Acho que a maioria conhece o framework front-end Bootstrap, é uma mão na roda e facilita bastante a nossa vida para sites responsivos. O Google dá pontos para sites que possuírem uma alta experiência com o usuário e seu site ser adaptável a qualquer dispositivo, entra neste quesito! #7 + CSS - HTML / + CSS - Imagens Mais CSS e menos HTML, existem diversas situações que você pode evitar criar um <span> ou até mesmo uma <div> para criar algum efeito ou adicionar algum detalhe no site. Utilize os pseudos-elementos ::after e ::before para fazer isso. Sempre que puder, use mais o CSS e deixa o html mais limpo! Uma técnica bem bacana também é a chamada CSS SPRITES. #8 Html, CSS, Javascript Minificados Minificar os seus códigos melhora a velocidade do site e é bem pontuado no Google Pagespeed. Tem sites que fazem isso! #9 Não coloque Javascript na tag <head> Scripts JavaScript devem ser colocados antes do fechamento da tag </body>, ao menos que sejam necessários colocar no <head> #10 Facebook SEO Para a exibição das informações do seu site no Facebook, é usado as meta tags Og's. Exemplo: <!-- Open Graph data --> <meta property="og:title" content="Title Here" /> #11 Twitter SEO Para a exibição das informações do seu site no Twitter, é usado as meta tags Twitter. Exemplo: <!-- Twitter Card data --> <meta name="twitter:site" content="@publisher_handle"> e por Fim... #12 Url amigável Melhor do que usar: site.com?page=contato (é um tipo de url amigável) é usar: site.com/contato Existe aqui no fórum scripts que fazem isso, então é interessante usar. Mas o que eu vejo onde muitos pecam é em notícias ou em galerias. Exemplo: site.com?page=news&id=21 Seria muito melhor se usarmos o que chamamos de Sluggable ou Slug, é o título da notícia formatado. Você com certeza já deve ter vistos em sites: site.com/noticia/veja-este-titulo-de-noticia-que-lindo Existem scripts na internet para isso é só implementar nos sistemas (: Além de esconder o ID da notícia (ou do registro) você consegue amigar mais sua url e ganhar +1 ponto com o Google na hora de buscar algo relacionado a sua notícia! Bom, é isso aí, um pequeno preview que ajudará bastante os sites. Grato pela oportunidade. Abraços, Augusto Ferreira
  10. É vdd manin, o meu prox topico provavelmente vai ser sobre desempenho do site e servidor dai eu vou abordar um pouco essa questão dos formulários.. Enfim, fico grato pelos comentários. Abraços
  11. Fala galera, baixei muitos sites e projetos aqui e vi alguns detalhes que faltaram, também posts do pessoal reportando errors que os sites acontecem, etc etc. Enfim, vou apontar 2 tópicos que eu achei importante, a segurança e os errors. # Segurança básica É claro que todos sabem que não existe 100% de segurança, mas você consegue deixar sua aplicação mais difícil de ser invadida e com menos erros. Algumas coisas que você pode fazer para aumentar a segurança do seu website. 1 - reCaptcha: é muuito importante hoje com o aumento de bots. É claro que já existem bots que conseguem burlar o reCaptcha, mas é para os que tem um conhecimento mais avançado da coisa. Proteja suas entradas de dados com um captcha. O que eu vejo a galera de dev usar mais é o da Google (reCaptcha). 2 - CSRF: de forma bem genérica, evita bots também e aumenta muito a segurança das requisições do seu sistema. Todo formulário precisará ter um token que irá ser recebido pelo back e irá fazer a validação na qual esse token (um hash) é setado na sessão. A validação básica é a seguinte: if($_POST['csrf-token'] != $_SESSION['csrf-token'])) // EXCEPTION 3 - Filtro de dados: Funções importantes para filtrar os dados de entradas, os mais usados são o addslashes e o FILTER_INPUT 4 - Use PDO! Usando PDO com o Design Pattern Singleton fica bem mais fácil programar e é claro que te dá inúmeras vantagens, além da segurança te dá a possibilidade de migrar facilmente o projeto que usa por ex MySQL para SQL Server ou outros. 5 - Use o Csrf Token nas requisições Ajax também! Sabemos que o Ajax aumenta e experiência do site com o usuário, porém tem gente que sabe se aproveitar disso. O Ajax é uma "URL como outra qualquer", porém acessada por baixo dos panos, então é importante também enviar o seu csrf Token e fazer a validação. 6 - Quando usar Ajax, verifique se a requisição que está sendo feita é de fato um Ajax! 7 - Utilize .htaccess para fazer suas rotas! Eu quando estava iniciando fazia códigos e códigos pra fazer a famosa query string. É interessante, com certeza. Mas deixar a responsabilidade das url's só no código php não acho bom. Se em nosso htaccess colocar-mos todas as páginas possíveis (as nossas rotas) as que não existirem, é 404 (que no proprio arquivo você configura pra redirecionar pra essa página, aumentando assim a velocidade). # Errors Não é bom ficar exibindo erros para os usuários, alias, isso pode até ser uma falha de segurança pra um usuário que entende do assunto ver onde está o erro pra poder explorar ele. 1 - Utilize um modo DEBUG: É simples, diferencia o modo de produção com o modo de desenvolvimento. No seu arquivo de configuração global você pode fazer o seguinte: define('DEBUG', true); // default false (production mode) E no seu arquivo de requisição padrão: if(DEBUG == false) error_reporting(0); Desta forma, com o debug false, pode acontecer qualquer erro de PHP, mas não vai aparecer pro usuário, embora o seu arquivo de log fique cheio, mas é bem melhor assim! 2 - Trate os erros! Uma das características dos sistemas atuais é a possibilidade dele se recuperar de erros de forma transparente. Ou seja, de forma que o usuário não saiba que ocorreu um erro, mas o sistema tente fazer a transação novamente e concluir a operação que o usuário solicitou. 3 - Use Try Catch: É um complemento do item 2, é comum fazer funções ou ações sem usar o try catch. Gente ele é nosso amigo, vamos usá-lo (: Vamos exibir somente o que precisa ser exibido para o usuário! Bom, são dicas simples, mas bem importantes para aqueles que estão iniciando na área de desenvolvimento web. Como eu não dei muitos exemplos, tendo o conhecimento do que se trata, é só procurar no Google e por em prática. Enfim, eu não tive essas dicas, aprendi muita coisa na marra, fiz muitas coisas achando que era certo, mas não era. É importante nos ajudarmos, ensinar um ao outro. Grato pela oportunidade. Abraços, Augusto Ferreira
  12. 1 erro ta em preto em cima dessa imagem aí, é conectar a database correta, não existe essa com nome 'acis' 2 não é um erro, é um alerta dizendo que esse tipo de conexão com o banco mysql_connect está depreciado. Vc pode ou colocar um @ em frente a isso, exemplo: @mysql_connect mas aí teria que colocar em todas as chamadas do mysql Ou você pode colocar no arquivo de configuração: error_reporting(0); Eu creio que funcionará e sairá os erros, você usará o site sem aparecer os erros
  13. Hurum, vai com esse pensamento que vai ter muitos players (: ta cheio de sites aqui que nao tem o minínimo de proteção
  14. augustocesr

    CONFIG SITE

    Este erro é referente aos privilégios que o banco não possui para o host que está requisitando. Portanto, execute esta query: GRANT ALL PRIVILEGES ON YOU_DB.* TO 'YOU_USER'@'YOU_HOST' WITH GRANT OPTION;
  15. Fala galera, mais uma dica pra web. O que eu mais vejo é sites usando o LiveZilla, mas hoje venho-vos apresentar o Tawk.to. Cada um com seus prós e contras, porém eu adorei o Tawk.to principalmente porque você não precisa de nenhum software instalado ou banco... Principais características que eu pude notar neste curto período que uso ele: - Free (até o momento, não sei se futuramente vai possuir planos) - Não precisa de software instalado - Integração via API (Javascript com eventos) - Não precisa usar o seu banco de dados - Mostra a atividade dos usuários em seu site, a mudança de paginas, etc. - É muito rápido, leve e o delay muito pequeno - Mostra estatísticas (Analytics) - E outras coisas :) Site: www.tawk.to É muito simples de usar, basta acessar o site, se cadastrar, logar e lá no menu superior tem a opção Admin. Ao clicar você vai se deparar do lado direito com o script para copiar e colar em seu site. Depois de ter colocado o script em seu site, é só logar no dashboard do Tawk.to que automaticamente vai mostrar como Online em seu site! Também é possível dar uma personalizada no botão do chat, porém eu creio que não como o LiveZilla que você coloca uma coisa mais personalizada ao seu jeito. Pra quem manja de Javascript da pra fazer umas coisas bem legais com os eventos que ele proporciona xD Nota: Eu costumo colocar o script antes do fechamento da tag </body> Abraços :onda:
  16. #Composer para iniciantes Meus caros, tudo tranquilo? Então, vim dar uma dica pra quem está começando na área de programação web. É um aprendizado muito show e até mesmo um incentivo para quem já programa de forma estruturada começar a programar em OO e de forma mais profissional. # Composer De forma bem genérica: é um gerenciador de dependências. Pra evitar você ficar fazendo download manual das libs (bibliotecas) e jogando no seu projeto. Ele também evita de ficar dando include e require em vários arquivos. Mas para começarmos a usá-lo, é necessário entender um conceito bem simples de namespace. #Namespace Possibilitam o agrupamento de classes, interfaces, funções, etc. na qual visa evitar o conflito entre classes. De forma bem genérica: o namespace é tipo o package do java Vamos ao primeiro exemplo de um arquivo usando o namespace: arquivo: User.php <?php namespace App\Model; class User { private $name; public function __construct() { echo "Exemplo com Composer!"; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } }O namespace deverá ser uma das primeiras linhas após a tag <?php (retirando os comentários)Basicamente este é a minha classe do model de usuários com um atributo name e seu get e set e um construtor dando um echo. Mas e aí, Augusto, qual o sentido disso? Vamos adiante, segura este arquivo aí que vamos utilizar ele mais a frente. #Baixando o composer: O site oficial é este: [Hidden Content] Pra quem usa o EasyPHP, Wamp, Vertrigo, Xampp, etc, precisa entrar no Bash (terminal) do programa para poder ter acesos ao comando PHP! Para baixar: [Hidden Content]download/ tem 4 linhas para ser executada no bash, é ó seguir. Pra quem é programador linux/mac, sabe como é bem mais simples. Confira a imagem abaixo: Depois é só dar enter novamente É importante pelo terminal você entrar em uma pasta dentro do seu servidor, na maioria dos casos a pasta www. Com o comando cd /caminho/pasta Depois de baixado o arquivo, note que dentro da sua pasta vai estar um arquivo composer.phar # Iniciando um projeto com o composer No seu bash (terminal) dentro da pasta, digite: composer init e tecle enter Depois só enter, enter.. e ai vai, tem algumas partes que é só teclar n e dar enter. O resultado é esse: O Arquivo gerado dentro da nossa pasta composer.json { "name": "augusto.ferreira/l2jbrasil", "require": {} } # Configurando o arquivo composer.jsonO arquivo precisa saber onde estão as classes para carregá-las com o autoload, que nada mais é do que o responsável por fazer o include/require pra você das classes que você instancia utilizando o NAMESPACE. Adicionando as linhas no arquivo: "autoload": { "psr-4": { "App\\": "src" } } O arquivo fica assim: { "name": "augusto.ferreira/l2jbrasil", "require": {}, "autoload": { "psr-4": { "App\\": "src" } } }Note que esse "src" é a pasta onde eu vou colocar todas as minhas classes, você pode colocar onde quiser.Depois de ter configurado o arquivo, agora é só dar o comando: php composer.phar installpara ele instalar o composer e as dependências (que no nosso caso não tem nenhuma) composer instalado, ele criou uma pasta vendor dentro do nosso projeto. Dentro dessa pasta vendor uma pasta chamada composer com vários outros arquivos, mas o arquivo que vamos usar é o autoload.php, neste exemplo, nós só precisamos dar um require apenas, desse arquivo. NOTA: NÃO DEVEMOS MEXER NA PASTA VENDOR! ESTA PASTA É EXCLUSIVAMENTE GERENCIADA PELO COMPOSER, E CONTÉM TODAS AS LIBS INCLUÍDAS NO PROJETO! Arquivo index.php Lembra daquele arquivo User.php que criamos? Vamos colocá-lo dentro da pasta: src/Model/ Agora no arquivo index.php só precisamos instanciar a class User deste modo: $user = new \App\Model\User(); Notou o prefixo antes do nome da class? \App\Model\É o nosso namespace, nós estamos dizendo que esta classe User está dentro do "diretório virtual" App\Model O App é um nome que eu dei para a pasta src, mas poderia ser Src\Model, não teria problema algum, você escolhe! E se dermos um print_r na instância User: Nós teremos o seguinte resultado: Dica importante: Se você estiver usando muitas classes dentro de um mesmo namespace, você não precisa definir o namespace na hora de instanciar a classe, a gente pode chamar pelo comando use Deste tipo: O use é como o import do java, eu estou importando a classe User para o meu arquivo index.php Observa que neste exemplo eu só precisei dar 1 require apenas, é claro que é apenas um teste e que em um projeto eu teria que incluir outros arquivos de configurações necessários. Mas mesmo assim ficaria bem mais enxuto e profissional (nada contra quem programa de forma estruturada). É isso aí galera, de forma rápida e simples, uma nova pra quem está começando na área de programação web :) Nos próximos tutoriais que eu fizer, explicarei como utilizar libs nos projetos, provavelmente a do Facebook! Abraços a todos Acervo: [Hidden Content] [Hidden Content] Composer para iniciantes: [Hidden Content] Att, Augusto Ferreira
  17. Se eu fosse voce, escutava o @Ivan Pires, se nao for usar a API deles, usa ao menos um checkout transparente que ja melhora, esse script ai eh muito amador... Eh tao amador e inseguro que um cara que ao menos sabe como funciona, ele faz uma compra de 1 real e compra quantos coins (ou moeda q seu site esteja vendendo) ele quiser...
  18. augustocesr

    pagseguro?

    respondendo o seu private, Isso não é pago, mas para implementar da forma mais correta e segura é utilizando a sua API. É necessário um conhecimento intermediário em programação para tal implementação.
  19. Man, primeiro de tudo que ja é errado tecnicamente falando um site se conectar diretamente a base de dados, já tá errado por ai, isso é falha de segurança. O correto seria ter um intermediador ( API ) pra receber todas as requisições e tratar, depois ir no servidor, buscar as informações e trazer pra você. Mas deixando isso de lado, se preocupa inicialmente com todas as entradas de dados que os usuários colocam. Ou seja, os formulários, trata eles usando FILTER_INPUT (pesquisa por isso na internet), ja é um bom começo :)
  20. augustocesr

    Website CakePHP3.x

    Fala guys, tava fuçando aqui um backup e achei um layout (html/css) de uns 2 anos atrás hahaha então resolvi colocar ele pra rodar. Pra ficar algo diferente e eu creio que novo aqui no Fórum, já que ele ta meio parado na área de Sites, estou iniciando o desenvolvimento deste template com o Framework CakePHP 3.x. Não vou me ater a fazer muitas funcionalidades (embora seja rápido fazer em um Framework,) já que eu não estou com muito tempo pra isso. Primeiro de tudo, alguns pontos positivos de usar um Framework: - Site ou sistema fica altamente profissional - A segurança é muito maior do que um site feito na mão - O Framework tem libs de DDoS attack, Filtragem de Request/Response, Anti SQL Inject (por usar seu Query Builder), etc - CSRF - Agilidade no desenvolvimento, reusabilidade de código, etc etc... O que o site vai conter? Site Estatísticas: Top PVP Top PK Heroes Raid Bosses Informações Doações Painel do Usuário Destravar char Trocar senha (com email ou não) Pag de registro / esqueci a senha ( pensando se eu coloco Google reCaptcha ) Siege Últimas notícias Painel adminGerenciamento: Notícias Players (banir/desbanir) Accounts (banir/desbanir) Obs.: O envio de emails serão a partir da API do SendGrid, já ajuda pra quem não tem servidor com suporte a SMTP É mais ou menos isso aí :) Quando eu for postar o site eu irei dar algumas explicações de como utilizar/instalar. E algumas dicas de segurança Web pra a galera que pensa mais alto (: Vale a pena ressaltar que eu estou pensando em algumas formas de deixar ele mais fácil de ser configurável para os que são mais leigos usarem. Vou disponibilizar ele no Git até pra evitar erros na hora de instalar, fazer a garotada aprender a usar o GIT também, por motivos de segurança e pra obterem atualizações se caso eu ficar dando continuidade a ele. Já iniciei o projeto aqui hoje e aguardem novidades xD
  21. Manin, pra vc que não entende muito disso é complicado mesmo e não é assim de uma hora pra outra que aprende. No início a gente faz coisas achando que ta certo só porque está funcionando. É complicado mexer num site ou sistema feito por alguem sem nenhum padrão, é até desanimador :/
  22. A bronca de fazer esses 'sisteminhas' em php free pra a galera do l2 é que não pode ter muita técnica envolvida não, porque a galera não iria conseguir usar, só alguns com conhecimento a mais. Tipo, por que não usa o composer instalar uma lib de request/response pra tratar todas as requisições vindas pelo usuário? Isso já ajudaria em cerca de uns 70 - 80% da segurança do projeto. Se tudo der certo, estarei esse ano ainda postando aqui um site (com um sisteminha) em um Framework Profissional e com uma mini aula ensinando a instalar e configurar certinho :onda:
×
×
  • Criar Novo...

Important Information

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.