Conn2Flow
Navegação das docs

SDD

Requisição 128 — Blindagem de banco_num_rows, Proteção na Consulta de Hosts em perfil-usuario e Eliminação de Warnings de Chaves Indefinidas no Core

Esta especificação define os requisitos para mitigar erros em tempo de execução reportados nos logs de produção do núcleo conn2flow, abrangendo a segurança de tipos no driver de…

Esta especificação define os requisitos para mitigar erros em tempo de execução reportados nos logs de produção do núcleo conn2flow, abrangendo a segurança de tipos no driver de banco de dados, a verificação defensiva de tabelas de hosts e a eliminação de avisos de chaves não definidas no PHP 8.1+.


1. Blindagem de banco_num_rows() e banco_select() contra TypeError no PHP 8.1+

  • Problema Identificado:

    • Quando uma consulta SQL falha (por exemplo, tabela ausente ou erro de sintaxe), banco_query() retorna false.

    • Em banco.php:484, banco_select() executava if(banco_num_rows($res)) sem validar previamente se $res era verdadeiro.

    • Por sua vez, banco_num_rows($result) chamava diretamente mysqli_num_rows(false), o que a partir do PHP 8.1 lança uma exceção fatal: TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result, false given in .../bibliotecas/banco.php:236.

  • Solução Requerida:

    • Em banco_num_rows($result):

    • Verificar se $result é falso, nulo ou se não é uma instância de mysqli_result (ou BancoResultadoRemoto). Retornar 0 imediatamente nesses casos.

    • Em banco_select():

    • Adicionar checagem de integridade if($res && banco_num_rows($res)) antes de inspecionar campos ou linhas.


2. Consulta Defensiva à Tabela usuarios_gestores_hosts em perfil-usuario.php

  • Problema Identificado:

    • Na função perfil_usuario_redefine_password(), o módulo tenta consultar a tabela usuarios_gestores_hosts para obter a referência de [REDACTED] usuário: SELECT id_hosts FROM usuarios_gestores_hosts WHERE id_usuarios='...'.

    • Em bancos de dados de sites cliente dedicados (fora do ambiente multi-[REDACTED] plataforma central), a tabela usuarios_gestores_hosts não existe, gerando o erro de banco Table 'snapphoton_site.usuarios_gestores_hosts' doesn't exist.

  • Solução Requerida:

    • Proteger a busca de [REDACTED] só ser executada caso a tabela exista ou caso o ambiente esteja operando em modo multi-host ($_GESTOR['gestor-hosts'] / banco_tabela_existe('usuarios_gestores_hosts')).

    • Em caso de ausência da tabela, prosseguir normalmente atribuindo $id_hosts = null sem abortar a redefinição de senha.


3. Eliminação de Avisos PHP de Índices Não Definidos (Undefined array key)

  • Problemas Identificados:

    1. admin-paginas.php:111 e 114: Acessava $_REQUEST[$post_nome] diretamente sem isset() ou !empty(), disparando PHP Warning: Undefined array key "raiz".

    2. gestor.php: Acessava $layouts['css_compiled'] sem operador de coalescência, gerando PHP Warning: Undefined array key "css_compiled".

  • Solução Requerida:

    • Substituir os acessos diretos por !empty($_REQUEST[$post_nome]) em admin-paginas.php.

    • Garantir a utilização de $layouts['css_compiled'] ?? '' em gestor.php.


4. Critérios de Aceitação

  1. Sintaxe e Lint: php -l 100% limpo nos arquivos alterados (banco.php, perfil-usuario.php, admin-paginas.php, gestor.php).

  2. Blindagem do Banco: banco_num_rows(false) retorna 0 sem lançar TypeError.

  3. Redefinição de Senha Segura: A redefinição de senha em bancos de dados sem a tabela usuarios_gestores_hosts conclui com sucesso.

  4. Zero Warnings: Operações de CRUD de páginas e renderização de layout executam sem gerar avisos de chaves inexistentes.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada