Ir para conteúdo
Fórum Script Brasil

Todas Atividades

Atualizada automaticamente

  1. Hoje
  2. Olá, estou precisando de uma classe OSC para usar no VB6. Alguém saberia me indicar uma ou teria interesse em desenvolver essa classe?
  3. <?php // include "config.php"; // verifica se o usuário está logado Class Teste { public $ambiente,$item,$selecionado; function criarTabela() { $mysqli=new mysqli("localhost","root","","teste"); $mysqli->query("drop table if exists tbcomando"); $mysqli->query("create table tbcomando (id int auto_increment primary key, ambiente varchar(50) not null, item text not null)"); $mysqli->query("insert into tbcomando (ambiente,item) values ('cozinha','1 janela grande')"); $mysqli->query("insert into tbcomando (ambiente,item) values ('cozinha','2 janela pequena')"); $mysqli->query("insert into tbcomando (ambiente,item) values ('cozinha', '3 luzes')"); $mysqli->query("insert into tbcomando (ambiente,item) values('cozinha','4 tomadas')"); $mysqli->query("insert into tbcomando (ambiente,item) value ('sala','nada')"); $mysqli->query("insert into tbcomando (ambiente,item) values('quarto','nada')"); } function selecionado($ambiente) { $this->selecionado=$ambiente; $mysqli=new mysqli("localhost","root","","teste"); $this->ambiente=array_column($mysqli->query("select ambiente from tbcomando group by ambiente order by ambiente")->fetch_all(MYSQLI_ASSOC),'ambiente'); $this->item=array_column($mysqli->query("select item from tbcomando where ambiente = '$ambiente' group by item order by item")->fetch_all(MYSQLI_ASSOC),'item'); } } $teste=new Teste(); if(isset($_GET['rota'])) { $teste->selecionado($_GET['rota']); } else { $teste->selecionado("cozinha"); } ?> <select name="ambiente" onchange="location.replace('?rota='+this.value)"> <?php foreach($teste->ambiente as $ambiente) : ?> <option <?= $teste->selecionado == $ambiente ? 'selected' : '' ?>> <?=$ambiente?> </option> <?php endforeach; ?> </select> <select name="detalhe"> <?php foreach($teste->item as $item) : ?> <option><?=$item?></option> <?php endforeach; ?> </select>
  4. O texto publicado é muito bom, depois que eu consegui traduzir com a ajuda do Copilot. Comecei a estudar o PHP em 2020, mas é em 2025 é que consegui melhorar o desempenho dos meus códigos. Hoje eu faço código com o PHP com o roteador corrigido pelo Copilot, o meu roteador trabalhava com a sintaxe ?Classe.metodo.argumento, e o Copilot corrigiu para ?rota=Classe_metodo_arg1_arg2_etc. Além do PHP, estou experimentando o Livewire, a codificação é impressionante, mas na prática enfrento alguns gargalos que ainda não consegui resolver, mas certamente acredito que não é possível resolver esses contra tempos sem a ajuda da inteligência artificial. A seguir, a tradução do texto, de acordo com o Copilot: Introdução Muitos desenvolvedores que trabalham com PHP conhecem bem o problema: às vezes o código trava, aparece uma mensagem de erro ou se busca a solução mais eficiente para uma determinada tarefa. É exatamente aí que o ChatGPT pode ser uma ajuda valiosa. Em vez de passar horas em fóruns ou folheando documentações, ele oferece suporte rápido e compreensível — sem substituir o intercâmbio humano nas comunidades. ⚡ Busca rápida por erros Quem nunca passou por isso: o código parece estar certo, mas simplesmente não funciona. Com o ChatGPT, é possível delimitar os erros copiando o trecho relevante do código e perguntando diretamente: Onde está o possível erro de sintaxe? Existem maneiras melhores de implementar a mesma função? Quais são as fontes de erro típicas nessa situação? Dessa forma, economiza-se tempo e recebe-se sugestões que podem ser testadas imediatamente. 🧠 Explicações em linguagem simples Especialmente para iniciantes, o PHP pode ser confuso. O ChatGPT consegue explicar termos técnicos ou funções complexas de forma que até quem está começando possa entender. Em vez de lutar com documentações complicadas, obtém-se uma explicação acessível em linguagem cotidiana — o que torna o aprendizado muito mais agradável. ✅ Apoio em boas práticas Além da busca por erros, muitas vezes é útil ter uma visão geral sobre padrões de programação recomendados. O ChatGPT oferece dicas sobre: Estruturação de código para melhor legibilidade Aspectos de segurança como proteção contra SQL Injection ou XSS Otimização de desempenho em projetos maiores Essas orientações ajudam os desenvolvedores a escreverem não apenas código funcional, mas também limpo e seguro. 🚧 Limites da ferramenta Naturalmente, o ChatGPT não substitui a experiência própria nem o conhecimento técnico de desenvolvedores experientes. As respostas são sugestões que precisam ser verificadas e, se necessário, ajustadas. Projetos complexos geralmente exigem aconselhamento detalhado em fóruns ou equipes. Por isso, o ChatGPT deve ser visto como uma ferramenta complementar. 🏁 Conclusão Para todos que trabalham com PHP, o ChatGPT pode ser um suporte valioso: análises rápidas de erros, explicações simples e dicas úteis sobre boas práticas. Ele economiza tempo, torna o processo de aprendizado mais agradável e complementa o intercâmbio em comunidades como a Script Brasil. No fim das contas, fica claro: quem usa o ChatGPT com consciência tem um assistente digital ao seu lado — e o melhor é combiná-lo com a própria experiência e a expertise da comunidade de desenvolvedores.
  5. Einleitung Viele Entwickler, die mit PHP arbeiten, kennen das Problem: Manchmal hakt es beim Code, eine Fehlermeldung taucht auf oder man sucht nach der effizientesten Lösung für eine bestimmte Aufgabe. Genau hier kann ChatGPT eine wertvolle Hilfe sein. Statt stundenlang in Foren zu suchen oder Dokumentationen durchzublättern, bietet die que schnelle und verständliche Unterstützung – ohne den menschlichen Austausch in Communities zu ersetzen. Schnelle Fehlersuche Wer kennt es nicht: Der Code sieht eigentlich korrekt aus, aber trotzdem läuft nichts. Mit ChatGPT lassen sich Fehler eingrenzen, indem man den entsprechenden Codeabschnitt hineinkopiert und gezielt nachfragt: Wo liegt der mögliche Syntaxfehler? Gibt es bessere Möglichkeiten, dieselbe Funktion umzusetzen? Welche typischen Fehlerquellen gibt es in dieser Situation? Auf diese Weise spart man Zeit und bekommt Denkanstöße, die man sofort testen kann. Erklärungen in einfacher Sprache Gerade für Anfänger ist PHP manchmal verwirrend. ChatGPT kann Fachbegriffe oder komplexe Funktionen so erklären, dass auch Einsteiger sie verstehen. Statt sich durch komplizierte Dokumentation zu kämpfen, erhält man eine leicht zugängliche Erklärung in Alltagssprache – und das macht das Lernen deutlich angenehmer. Unterstützung bei Best Practices Neben der Fehlersuche ist es oft hilfreich, einen Überblick über gute Programmierstandards zu bekommen. ChatGPT liefert Tipps zu: Strukturierung von Code für bessere Lesbarkeit, Sicherheitsaspekten wie SQL-Injection oder XSS-Schutz, Performance-Optimierung bei größeren Projekten. Diese Hinweise können Entwicklern helfen, nicht nur funktionierenden, sondern auch sauberen und sicheren Code zu schreiben. Grenzen der que Natürlich ersetzt ChatGPT weder eigene Erfahrung noch die Fachkenntnis erfahrener Entwickler. Die Antworten sind Vorschläge, die man prüfen und gegebenenfalls anpassen muss. Auch komplexe Projekte erfordern oft detaillierte Beratung in Foren oder Teams. ChatGPT ist daher am besten als ergänzendes Werkzeug zu sehen. Fazit Für alle, die mit PHP arbeiten, kann ChatGPT eine wertvolle Unterstützung sein: schnelle Fehleranalysen, einfache Erklärungen und nützliche Tipps zu Best Practices. Es spart Zeit, macht den Lernprozess angenehmer und ergänzt den Austausch in Communities wie Script Brasil. Am Ende bleibt klar: Wer ChatGPT bewusst nutzt, hat einen digitalen Helfer an seiner Seite – und kombiniert ihn am besten mit eigener Erfahrung und der Expertise aus der Entwickler-Community.
  6. Você tem o problema das N-Rainhas e precisa resolver sem recursão, ou seja, transformar a sua função teste em um algoritmo iterativo. Hoje o seu código usa backtracking recursivo: chama teste(..., col+1, ...) e volta removendo a rainha. Para eliminar a recursão, você pode simular a pilha de chamadas manualmente, ou usar um laço que avance/retorne colunas conforme necessário. Aqui vai uma ideia de como reescrever de forma iterativa: melon playground #include <stdio.h> #define MAX 20 int sol = 0; int mapafreq[MAX][MAX]; int seguro(int tab[MAX][MAX], int N, int linha, int col) { int i, j; // verifica linha à esquerda for (i = 0; i < col; i++) if (tab[linha][i]) return 0; // diagonal superior esquerda for (i = linha, j = col; i >= 0 && j >= 0; i--, j--) if (tab[i][j]) return 0; // diagonal inferior esquerda for (i = linha, j = col; j >= 0 && i < N; i++, j--) if (tab[i][j]) return 0; return 1; } void imprimir(int tab[MAX][MAX], int N) { int i, j; printf("Solução %d:\n", sol+1); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%c ", tab[i][j] ? 'Q' : '.'); } printf("\n"); } printf("\n");
  7. Yesterday
  8. <?php include "config.php"; // Verifica o login if(!isset($_SESSION['uname'])){ header('Location: index.php'); } // Termina a sessao if(isset($_POST['but_logout'])){ session_destroy(); header('Location: index.php'); } ?> <select name="comando" id="idcomando"></p> <?php $sql_query = "select id_comando, comando from comando"; $result = mysqli_query($con,$sql_query); while ($row = mysqli_fetch_array($result)) { echo "<option value = ".$row['id_comando'] . ">" .$row['comando']. "</option>"; } ?> </select> Até aqui está tudo bem, faz a pesquisa na base de dados e aparece os resultados corretos. A questão é ao selecionar um valor desta listbox, ele tem que fazer uma pesquisa para atualizar a segunda list box. A 1º listbox só faz a pesquisa 1 vez o objetivo é consoante o valor da primeira listbox1 atualizar (pesquisar) os valore para a list2 ou seja carrega a listbox1 quando abre a pagina depois imaginemos que escolhe a opção "sala na listbox1" tem que fazer uma nova pesquisa (select id_divisao, divisao from divisao where comando = 'sala') e atualiza a segunda listbox2 com os dados recolhidos da base de dados (divisao)
  9. Conversando com o Copilot, ele descobriu que a mensagem de erro não vem do Microsoft Access, mas do aplicativo "Sociedade Harmonia Jaguarão". Eu nunca usei o modo SQL nas consultas, mas eu acredito que o seu ponto de partida deveria ser lá, e não dentro de um aplicativo de terceiros.
  10. The building automation systems market in Brazil is on a steady growth path, mainly because of rising demand for energy efficiency, sustainability, and improved security. With stricter environmental regulations and the push to lower operating costs, more residential, commercial, and industrial projects are adopting smart technologies. Looking ahead, the biggest opportunities seem to be in commercial buildings and corporate projects. As companies invest in digitalization and integrated smart solutions, these systems will become an important factor for attracting investment and staying competitive in the market.
  11. The building automation systems market in Brazil is experiencing steady growth, driven by increasing demand for energy efficiency, sustainability, and security across residential, commercial, and industrial projects. Factors such as the adoption of smart technologies, environmental regulations, and the need to reduce operating costs are strengthening the sector’s expansion. In my opinion, the strongest opportunities will be in commercial buildings and corporate projects, where digitalization and the integration of smart solutions will be key to attracting investment and enhancing competitiveness in the coming years.
  12. The smart TV market has grown rapidly over the past few years, driven by increased demand for streaming, voice assistants, and integrated home entertainment. In 2025, we’re seeing better tech—AI features, 8K resolution, and app ecosystems—but also signs of market saturation in some regions. Do you think the smart TV market will keep booming, or are we starting to see a plateau in growth and innovation?
  13. The Linux operating system market has grown a lot in recent years, especially in cloud servers, enterprise environments, and even mobile (like Android). With more developers and companies choosing open-source solutions, do you think Linux will keep gaining market share against Windows and macOS?
  14. Última semana
  15. Eu coloquei o vetor para explicar o problema do combo box. Para tirar o vetor do banco de dados a sequência é mais ou menos assim, você precisa estar familiarizado com o MySQL. Fase 1: CREATE TABLE comodos ( id INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(50), item VARCHAR(100) ); Fase 2: INSERT INTO comodos (nome, item) VALUES ('cozinha', '1 janela grande'), ('cozinha', '2 janelas pequenas'), ('cozinha', '3 luzes'), ('cozinha', '4 tomadas'), ('sala', NULL), ('quarto', NULL); Fase 3: <?php $pdo = new PDO('mysql:host=localhost;dbname=seubanco', 'usuario', 'senha'); // Consulta agrupando os itens por cômodo $sql = "SELECT nome, item FROM comodos"; $stmt = $pdo->query($sql); $vetor = []; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $comodo = $row['nome']; $item = $row['item']; // Se o cômodo ainda não foi adicionado ao vetor if (!array_key_exists($comodo, $vetor)) { $vetor[$comodo] = []; } // Adiciona o item ou 'nada' se for nulo if ($item !== null) { $vetor[$comodo][] = $item; } } // Garante que cômodos sem itens apareçam com 'nada' foreach ($vetor as $comodo => $itens) { if (empty($itens)) { $vetor[$comodo][] = 'nada'; } } // Transforma em estrutura desejada $resultado = []; foreach ($vetor as $comodo => $itens) { $resultado[] = [$comodo => $itens]; } print_r($resultado); ?>
  16. Era mesmo isso. só que na parte public $vetor=[ ['cozinha'=>['1 janela grande','2 janelas pequenas','3 luzes','4 tomadas']], ['sala'=>['nada']], ['quarto'=>['nada']] ]; as opções são introduzias manualmente e eu queria que fosse atraves de uma consulta $sql_query = "select id_comando, comando from comando"; Irá apareces o que eu tenho na base de dados (que sera cozinha, sala, quarto) Só depois ao selecionar por exemplo sala faz outro pesquisa $sql_query = "select id_divisao, divisao from from divisao where comando = a escolha "; Não sei se consegui explicar bem
  17. Você precisa tirar duas linhas do seu código: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; // ---------------------> tira isso use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; // Certifique-se de que o autoload está correto $mail = new PHPMailer(true); try { // Configurações do servidor SMTP do Gmail $mail->SMTPDebug = SMTP::DEBUG_SERVER; // ---------------------> tira isso $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = '[email protected]'; // Seu e-mail Gmail $mail->Password = 'abcd abcd abcd abcd'; // senha de app $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; // Remetente e destinatário $mail->setFrom('[email protected]', 'Frank K Hosaka'); $mail->addAddress('[email protected]', 'Frank K Hosaka'); // Conteúdo do e-mail $mail->CharSet='UTF-8'; $mail->Encoding='base64'; $mail->Subject = 'Teste de envio via PHPMailer'; $mail->Body = 'Olá Frank, este é um teste de envio usando PHPMailer'; $mail->send(); echo 'Mensagem enviada com sucesso!'; } catch (Exception $e) { echo "Erro ao enviar: {$mail->ErrorInfo}"; } ?>
  18. Este artigo explora o conceito, os métodos, os benefícios e os desafios associados à detecção de manutenção em sensores, com base em informações recentes e confiáveis.
  19. <?php Class Teste { public $ambiente=[], $detalhe=[], $selecionado; public $vetor=[ ['cozinha'=>['1 janela grande','2 janelas pequenas','3 luzes','4 tomadas']], ['sala'=>['nada']], ['quarto'=>['nada']] ]; function inicio() { $this->ambiente=[]; foreach($this->vetor as $key => $subvetor) { foreach($subvetor as $ambiente => $detalhe) { $this->ambiente[]=$ambiente; } } $this->detalhe=$this->vetor[0]['cozinha']; } function selecionado($ambiente) { $this->inicio(); $this->selecionado=$ambiente; $this->detalhe=[]; foreach($this->vetor as $item){ if(array_key_exists($ambiente,$item)) { $this->detalhe=$item[$ambiente]; break; } } } } if(isset($_GET['rota'])) { $rota=$_GET['rota']; $teste=new Teste(); $teste->selecionado($rota); } else { $teste=new Teste(); $teste->inicio(); } ?> <select name="ambiente" onchange="location.replace('?rota='+this.value)"> <?php foreach($teste->ambiente as $ambiente) : ?> <option <?= $teste->selecionado == $ambiente ? 'selected' : '' ?>> <?=$ambiente?> </option> <?php endforeach; ?> </select> <select name="detalhe"> <?php foreach($teste->detalhe as $detalhe) : ?> <option><?=$detalhe?></option> <?php endforeach; ?> </select>
  20. Só faltou o trecho da request assíncrona (tb conhecido como AJAX) Pode-se resolver com fetch (nativo do js) ou usando a lib axios, entre outras maneiras
  21. <?php $vetor=[ ['cozinha'=>['1 janela grande','2 janelas pequenas','3 luzes','4 tomadas']], ['sala'=>['nada']], ['quarto'=>['nada']] ]; ?> <select id="ambienteSelect"> <option value="">Selecione um ambiente</option> </select> <select id="detalhesSelect"> <option value="">Selecione um detalhe</option> </select> <script> const dados = <?php echo json_encode($vetor); ?> </script> <script> const ambienteSelect = document.getElementById('ambienteSelect'); const detalhesSelect = document.getElementById('detalhesSelect'); // Preenche o primeiro select com os ambientes dados.forEach(item => { const ambiente = Object.keys(item)[0]; const option = document.createElement('option'); option.value = ambiente; option.textContent = ambiente.charAt(0).toUpperCase() + ambiente.slice(1); ambienteSelect.appendChild(option); }); // Atualiza o segundo select com base na escolha do primeiro ambienteSelect.addEventListener('change', () => { const ambienteEscolhido = ambienteSelect.value; detalhesSelect.innerHTML = '<option value="">Selecione um detalhe</option>'; const ambienteData = dados.find(item => item[ambienteEscolhido]); if (ambienteData) { ambienteData[ambienteEscolhido].forEach(detalhe => { const option = document.createElement('option'); option.value = detalhe; option.textContent = detalhe; detalhesSelect.appendChild(option); }); } }); </script>
  22. Eu criei a tblivroentrada (id - auto-increment, primary, xml - text), copiei um xml da tela do navegador e colei no campo xml. O resultado foi um desastre. O pior é que não sabia como ludibriar o PHP para ler um registro MySQL como se fosse um arquivo xml, e foi aí que o Copilot me ensinou o comando simplexml_load_string: <?php require 'config.php'; if (isset($_FILES['arquivoXml']) && $_FILES['arquivoXml']['error'] === UPLOAD_ERR_OK) { $caminhoTemporario = $_FILES['arquivoXml']['tmp_name']; $xml = simplexml_load_file($caminhoTemporario); $xmlString = $xml->asXML(); (new Conn)->update("tblivroentrada set xml='$xmlString' where id=1"); $registro=(new Conn)->select("* from tblivroentrada where id=1")[0]->xml; $novoXml = simplexml_load_string($registro); echo($novoXml->NFe->infNFe['Id']); unset($_POST['arquivoXML']); } ?> <form method="post" enctype="multipart/form-data"> <label>Selecione o arquivo XML:</label> <input type="file" name="arquivoXml"> <button type="submit">Enviar</button> </form>
  23. Mais Cedo
  24. mas tem ideia como se faz?
  25. Resolve-se com javascript e AJAX
  26. Eu tenho o seguinte código que esta funcionar basicamente vai a base de dados e carrega todos os comandos disponíveis que eu tenho, por exemplo 1-Cozina, 2-Sala, 3-Quarto o que eu pretendo é criar outra listbox onde ele ira fazer a pesquisa do que esta selecionado na list1 e atualizar a list2 por exemplo list1 1-Cozinha na list2 deverá aparecer 01-Janela Grande, 02-Janela pequena, 03-Luz, 04-Tomadas os números seriam obtidos através da tabela divisao, id_divisao e nome <?php include "config.php"; // Check user login or not if(!isset($_SESSION['uname'])){ header('Location: index.php'); } // logout if(isset($_POST['but_logout'])){ session_destroy(); header('Location: index.php'); } ?> <!DOCTYPE html> <html lang="pt"> <html> <head> <meta charset="utf-8"> <title>Casa </title> <link href="menu.css" rel="stylesheet" type="text/css"> <meta charset="utf-8" </head> <body> <table border="0"> <!--<table border="0" width="100%" cellpadding="1">--> <tr> <th> <div class="menu"> <a href="home.php" class="butaomenu">Principal</a> <a href="relatorio.php" class="butaomenu">Relatório</a> <a href="consulta.php" class="butaomenu">Piscina</a> <p class="textologin">Login : <?php echo($_SESSION['uname']) ?> </p> </div> </th> <th> <div class="fundo"> <p class="textologin">Luzes</p> <p style="text-align: left"><select name="comando" id="idcomando"></p> <?php $sql_query = "select id_comando, comando from comando"; $result = mysqli_query($con,$sql_query); while ($row = mysqli_fetch_array($result)) { echo "<option value = ".$row['id_comando'] . ">" .$row['comando']. "</option>"; } ?> </select> </div> </th> </tr> </table> </body> </html>
  27. Essa é uma pergunta difícil de responder, o Livewire é dividido em duas partes, o Componente e o Blade. O Blade começa com um <div> e termina com um </div>, logo o único lugar para colocar um código JavaScript é dentro desse marcador. A minha intuição me disse que isso vai dar dor de cabeça, assim usei o método da tentativa e erro. Eu embuti o código JavaScript dentro do componente HTML, assim: arquivo resources > views > livewire > pagar.blade.php (parcial) <div class="w-[180px] truncate text-gray-500" onclick="this.classList.toggle('truncate')"> {{ $pendencia['lcto'].":".$pendencia['hist']}} </div> Tentei usar o comando wire:click, mas isso acabou expandindo todas as linhas, quando eu queria expandir apenas uma linha, a que foi clicado. Esse truque deu certo, e o DevTools do Chrome não apontou nenhum erro.
  28. O meu primeiro roteador só funcionava com um argumento, com a ajuda do Copilot mudei para ele suportar mais de um argumento. Mas quando um dos argumentos tinha um ponto no meio do caminho, o roteador separava o que era um valor em vários argumentos. O Copilot fez auditoria no meu roteador, e descobriu que usei o comando $_GET indevidamente, sem uma chave. O meu roteador é assim: <?php spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); $rota = 'login_login'; $parametros = []; if ($_GET) { $chaveCompleta = key($_GET); // Ex: Login_menu_param1_param2_param3 if (strpos($chaveCompleta, '_') === false) { exit; // proteção contra valores inválidos } $rota=$chaveCompleta; } $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros); e o Copilot disse que o correto é assim: <?php spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); $rota = $_GET['rota'] ?? 'login_login'; $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros); Ainda não testei a nova sugestão do Copilot, estou tentando me recompor. Que vergonha!
  29. Frank K Hosaka

    O roteador

    Eu estava me referindo a esse código: <?php spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); $rota = 'login_login'; $parametros = []; if ($_GET) { $chaveCompleta = key($_GET); // Ex: Login_menu_param1_param2_param3 if (strpos($chaveCompleta, '_') === false) { exit; // proteção contra valores inválidos } $rota=$chaveCompleta; } $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros); mas o Copilot disse que o código está equivocado, eu não posso usar diretamente a variável $_GET sem nenhuma chave.
  1. Mais Resultados


  • Estatísticas dos Fóruns

    • Tópicos
      152,5k
    • Posts
      652,4k
×
×
  • Criar Novo...