{"id":32862151,"url":"https://github.com/ninomiquelino/php-auth-system","last_synced_at":"2026-04-13T00:06:29.756Z","repository":{"id":320637537,"uuid":"1082860658","full_name":"NinoMiquelino/php-auth-system","owner":"NinoMiquelino","description":"Sistema de Login e Sessão simples e seguro construído com PHP POO, utilizando PDO e SQLite para armazenar senhas hasheadas com password_hash() (BCRYPT). Foca na gestão segura de autenticação.","archived":false,"fork":false,"pushed_at":"2025-10-24T23:12:05.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-25T00:18:53.784Z","etag":null,"topics":["css","hashing","html","javascript","login","pdo","php","secure-login","session","sqlite","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NinoMiquelino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-24T22:12:16.000Z","updated_at":"2025-10-24T23:12:09.000Z","dependencies_parsed_at":"2025-10-25T00:19:27.446Z","dependency_job_id":"a44f0ffe-bcfb-4306-b264-54339f509bd2","html_url":"https://github.com/NinoMiquelino/php-auth-system","commit_stats":null,"previous_names":["ninomiquelino/php-auth-system"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NinoMiquelino/php-auth-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NinoMiquelino%2Fphp-auth-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NinoMiquelino%2Fphp-auth-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NinoMiquelino%2Fphp-auth-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NinoMiquelino%2Fphp-auth-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NinoMiquelino","download_url":"https://codeload.github.com/NinoMiquelino/php-auth-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NinoMiquelino%2Fphp-auth-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283424652,"owners_count":26833720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-08T02:00:06.281Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","hashing","html","javascript","login","pdo","php","secure-login","session","sqlite","tailwindcss"],"created_at":"2025-11-08T22:01:29.123Z","updated_at":"2025-11-08T22:02:20.168Z","avatar_url":"https://github.com/NinoMiquelino.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 👨‍💻 Autor\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/ninomiquelino\" width=\"100\" height=\"100\" style=\"border-radius: 50%\"\u003e\n  \u003cbr\u003e\n  \u003cstrong\u003eOnivaldo Miquelino\u003c/strong\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/ninomiquelino\"\u003e@ninomiquelino\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n## 🔐 PHP Secure Login System (PDO, Hashing, Sessions)\n​\n![Made with PHP](https://img.shields.io/badge/PHP-777BB4?logo=php\u0026logoColor=white)\n![Frontend JavaScript](https://img.shields.io/badge/Frontend-JavaScript-F7DF1E?logo=javascript\u0026logoColor=black)\n![TailwindCSS](https://img.shields.io/badge/TailwindCSS-38B2AC?logo=tailwindcss\u0026logoColor=white)\n![License MIT](https://img.shields.io/badge/License-MIT-green)\n![Status Stable](https://img.shields.io/badge/Status-Stable-success)\n![Version 1.0.0](https://img.shields.io/badge/Version-1.0.0-blue)\n![GitHub stars](https://img.shields.io/github/stars/NinoMiquelino/php-auth-system?style=social)\n![GitHub forks](https://img.shields.io/github/forks/NinoMiquelino/php-auth-system?style=social)\n![GitHub issues](https://img.shields.io/github/issues/NinoMiquelino/php-auth-system)\n\nEste projeto é um exercício crucial focado nos pilares da Segurança e Autenticação em PHP: Hashing de senhas, gerenciamento de sessões e controle de acesso a páginas restritas.\n\nEle integra o uso de Programação Orientada a Objetos (POO) e PDO (PHP Data Objects) para garantir que todas as operações sejam seguras e robustas.\n\n---\n\n## 🔒 Recursos de Segurança e Tecnologia\n\n- **Hashing Seguro (password_hash):** As senhas não são armazenadas em texto simples. Utilizamos a função `password_hash()` com o algoritmo BCRYPT (o padrão recomendado) para hashear a senha antes de salvar no banco.  \n- **Verificação Segura (password_verify):** A função `password_verify()` é usada para comparar a senha fornecida pelo usuário com o hash armazenado, prevenindo ataques de timing e garantindo a segurança.  \n- **Gerenciamento de Sessão:** O fluxo de login e logout utiliza as funções nativas de sessão do PHP (`session_start()`, `$_SESSION`, `session_destroy()`) para rastrear o estado do usuário.  \n- **Controle de Acesso:** A página `restricted.php` verifica o status da sessão antes de renderizar qualquer conteúdo, redirecionando o usuário não autenticado.  \n- **POO com PDO:** Uma classe `AuthManager` encapsula toda a lógica de segurança e comunicação com o banco de dados SQLite, mantendo o código limpo e organizado.\n  \n---\n\n## 🧠 Tecnologias utilizadas\n\n- **Backend:** PHP 7.4+ (POO, Sessões, password_hash/password_verify)  \n- **Segurança:** PDO (Statements Preparados) para comunicação segura com o banco de dados  \n- **Banco de Dados:** SQLite (arquivo único para armazenar usuários e hashes)  \n- **Frontend:** HTML e Tailwind CSS\n\n---\n\n## 🧩 Estrutura do Projeto\n\n```\nphp-auth-system/\n├── login.html\n├── restricted.php\n├── AuthManager.php\n├── init_db.php\n├── app.php\n├── README.md\n├── .gitignore\n└── users.sqlite\n```\n---\n\n## ⚙️ Configuração e Instalação\n\n​Pré-requisitos\n\n​Um ambiente de servidor web com PHP.\n​A extensão PDO SQLite precisa estar habilitada no seu php.ini.\n​1. Estrutura e Banco de Dados\n\n1. Crie a estrutura de pastas conforme o diagrama do projeto.\n\n2. Crie o banco de dados e o usuário de teste:\n​Abra o terminal na pasta raiz do projeto (/php-auth-system) e execute o script de inicialização:\n\n```bash\nphp src/init_db.php\n```\n\nEste comando criará o arquivo src/users.sqlite e inserirá o usuário de teste com a senha hasheada.\n\n3. Defina as permissões: Garanta que a pasta src/ (onde o users.sqlite será criado) tenha permissão de escrita para o usuário do servidor web (ex: chmod 777 src/).\n\n2. Executar o Servidor\n​Utilize o servidor embutido do PHP para testes (a partir da raiz do projeto):\n\n```bash\nphp -S localhost:8001\n```\n- **Acesse:** A página de login inicial é [http://localhost:8001/public/login.html](http://localhost:8001/public/login.html).\n\n---\n\n### Passos de Teste\n\n1. **Acesso Inicial:** Abra `login.html`.  \n2. **Credenciais de Teste:**  \n   - Usuário: `admin`  \n   - Senha: `senha123`  \n3. **Tentativa de Acesso Direto:**  \n   Tente acessar `http://localhost:8001/public/restricted.php` diretamente.  \n   Você será redirecionado para a página de login com a mensagem \"Acesso negado\".  \n4. **Login com Sucesso:** Insira as credenciais de teste.  \n   O `app.php` verificará o hash, iniciará a sessão e redirecionará para `restricted.php`.  \n5. **Logout:** Clique no botão **\"Sair (Logout)\"**.  \n   O `app.php` destruirá a sessão e redirecionará de volta para `login.html`.\n   \n---\n\n## 🤝 Contribuições\nContribuições são sempre bem-vindas!  \nSinta-se à vontade para abrir uma [*issue*](https://github.com/NinoMiquelino/php-auth-system/issues) com sugestões ou enviar um [*pull request*](https://github.com/NinoMiquelino/php-auth-system/pulls) com melhorias.\n\n---\n\n## 💬 Contato\n📧 [Entre em contato pelo LinkedIn](https://www.linkedin.com/in/onivaldomiquelino/)  \n💻 Desenvolvido por **Onivaldo Miquelino**\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fninomiquelino%2Fphp-auth-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fninomiquelino%2Fphp-auth-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fninomiquelino%2Fphp-auth-system/lists"}