-
Total de itens
1327 -
Registro em
-
Última visita
-
Dias vencidos
15
Tudo que Omar~ postou
-
Malz apenas tinha o upado... https://drive.google.com/file/d/1LJdV04j7wGu-WthcLrlCBOIR35Y1Tq1V/view?usp=sharing
-
O que eu vi e percebi que você está tentando fazer, me corrija se eu estiver errado.... Em um arquivo você chama o método home da class Admins esse por sua vez como é herdeira da class Controller usa o método model para incluir outro arquivo de class, até aqui tudo bem (só deixando em destaque o atributo adminModel que está inexistente em ambas classes). Logo em seguida você aciona o método view da class Controller para anexar um arquivo no caso o home.php, e acredito que seja nesse arquivo que você quer acessar os dados carregados pelo método home. Um problema está no método view. Esse método tem por função anexar um arquivo, porém você não pode passar parâmetros seja por include seja por require para esse arquivo, isso não é possível de fazer. Outra questão está na herança como view pertence a classe mãe "Controller" ela não tem acesso a dados de sua filha no caso a class Admins a não ser que você mande esses dados por parâmetro assim como você fez (mesmo que isso perde no conceito de abstração, mas não vem ao caso). Veja que as coisas deram certo nesse exemplo: https://drive.google.com/file/d/1LJdV04j7wGu-WthcLrlCBOIR35Y1Tq1V/view?usp=sharing Acho que seu problema foi que os métodos de suas classes fazem mais do que deviam fazer, em uma classe no geral podemos dizer que um método escreve a letra i e o outro método coloca o pingo nesse i. Dê uma enxugada nos métodos se um olha se o e-mail está correto ele já fez mais do que o necessário deixe a próxima tarefa para outro método até mesmo se use de classes específicas para cada coisa, se uma classe faz leitura no banco não há necessidade dele validar strings etc... Siga esse truque se um método possui mais até 11 linhas é bom se está com até 22 ele está no seu limite, mais que isso aí o método não está trabalhando como se deve. Incluir arquivos usando classes, não que isso seja errado, mas prefiro usar funções para tal finalidade e classes para coisas corriqueiras da aplicação. Abaixo uma função que se por exemplo você faz: $a = new MinhaClasse(); Sem mesmo você incluir o arquivo a função sabe que o código precisa da classe e faz o anexo dela Requer manipulação do diretório no FindClass para correto funcionamento. Ou seja essa função vai até o diretório class/ [ $findDir ] / $class .php
-
Faz do seguinte poste todo o código da classe Admins e Controller e como você faz a instância. Pode ser que o problema não seja nesse contexto que estamos tratando e sim outra coisa, nesse caso possuir todo o código pode ajudar a chegar a raiz do problema. Ou simplesmente diga qual o objetivo a alcançar, talvez possamos chegar a um jeito mais fácil porque essa é a questão da orientação a objeto simplificar o complicado.
-
De fato você está vendo o atributo é um array, mas não retorna nada porque o array está vazio, você tem que criar antes. Perceba que mandei criar algo antes de usar.... Em resumo o que disse seria public function home() { $this->dados = [ // Ao invés de usar uma variável aqui você usa um atributo 'admins' => $this->adminModel->lerAdmin() ]; /* Não sei o que isso faz, mas se for um redirecionamento você perde todo conteúdo da classe Então isso deveria está em um método diferente onde você só aplicaria um redirecionamento quando realmente for necessário */ $this->view('paginas/admins/home', $this->dados); } Portanto uma vez que o método home for executado você terá algo no atributo dados. Então basta que tenha outro método para retornar o atributo dados. Devemos olhar que as chaves que vão compor o conteúdo serão definidos pelo método lerAdmin, se ele não retornar nada $this->dados será um array com a chave admins que estará vazio.
-
Fica complicado dizer qual é o problema pois dizer que o problema é uma coisa, mas na verdade pode ser outra. Os trechos de código apresentados não diz a causa. Assim como os 2 métodos não sabemos se são da mesma classe o que é importante saber. O que podemos então presumir que você está tentando acessar o array $dados no método home. Se você quer acessa basta que $dados seja um atributo e algum método o retorne. <?php class exemplo { private $dados = []; public function criarArray() { $this->dados = ['a' => '1', 'b' => '2', 'c' => '3']; } public function verArray() { return $this->dados; } } $e = new exemplo(); var_dump($e->verArray()); //echo $e->verArray()['a']; // (Seu problema aqui) Não posso ver a chave porque ela ainda não existe echo "<hr />"; $e->criarArray(); var_dump($e->verArray()); echo "<hr />"; var_dump($e->verArray()['a']); echo $e->verArray()['a']; echo $e->verArray()['x']; // Seu erro representado aqui a chave não existe Por fim sempre use a função var_dump para analisar dados ao invés de echo
-
Rapaz isso é tão simples que penso que esse sistema foi desenvolvido por um completo amador. Está ligado ao charset portanto nenhum arquivo adicional irá resolver, o negócio vai ser corrigir a codificação. É algo extremamente fácil de resolver porém requer nem que seja um mínimo de conhecimento técnico. Portanto se você não entende as mínimas sugiro que contrate algum dev para fazer essa correção, o que não é caro mediante a facilidade do trabalho. Mas caso queira você mesmo fazer vejamos algumas soluções possíveis: ** Começando verifique o charset dentro da tag <header> geralmente você vai poder encontrar no arquivo index. Mas em alguns casos a estrutura HTML pode ser gerada por função, métodos ou mesmo inclusões. O negócio vai ser encontrar a tag <meta> que cuida em dizer ao browser qual codificação a página deve ser renderizada. A tag na melhor alternativa ficaria <meta charset="UTF-8"> ** Em segunda hipótese seria a própria codificação de arquivos, esse contexto todos os arquivos que compõe a aplicação deve ser verificados. Se você usa linux, abra todos os arquivos com o GEDIT e os salve novamente. mas se sua máquina usa windows use o programa Notepad++ e abra todos os arquivos com ele. Com todos os programas abertos no notepad++ siga esse procedimento em todos os aquivos, clicando em formatar > converter para utf-8 (sem bom) pressione "ctrl + A" com todos caracteres selecionados clique em editar > conversão de linhas > converter para unix. Feche e salve. Esse processo deve ser realizado em tdos arquivos. ** Outra forma seria ir em arquivo a aquivo procurar onde texto são renderizados para o browser e alterar os caracteres acentuados por entidades html exemplo. echo "olá mundo"; sendo o caractere "á" o que vai gerar o erro de codificação echo "ol´ mundo"; substituindo o caractere do problema por sua entidade representacional. Ficando apresentado no html olá mundo echo htmlentities("olá mundo"); resolvendo de forma mais bruta usando uma função do PHP pra fazer essa conversão para entidade representacional.. Ficando apresentado no html olá mundo Depois de realizado um ou mais desses processos é só hospedar esses arquivos no lugar dos outros (Não se esqueça de testar antes em um servidor local, e fazer o backup dos que estão em nuvem)
-
Boas?! Como o próprio título diz posso realmente confiar em obter o mime-type do arquivo através da classe finfo? Ao logo dos anos sempre para uploads de arquivos para o servidor, como os sistemas que eu desenvolvi um upload só podia ser realizado por um administrador, apenas verificava a extensão do arquivo através da chave "type" na super global $_FILES. Mas sempre soube que não podia confiar em tal. No mais simples podemos enganar a chave "type" criando um arquivo de texto qualquer e salvando com a extensão .JPG se consultamos por exemplo $_FILES['upload']['type'] teremos então o mime-type image/jpg mesmo o arquivo de fato sendo um .TXT (A proposta não se trata só de imagens mas qualquer tipo de arquivo, apenas usei uma imagem para exemplificar) Mas usando a classe finfo essa obtive o correto modelo de arquivo. <?php $finfo = new finfo(FILEINFO_MIME); $mimeType = $finfo->file($_FILES['upload']['tmp_name']); echo "<pre>"; var_dump( substr($mimeType, 0, strpos($mimeType, ';')), $_FILES['upload']['type'] ); Mas seria possível enganar o método? Obs.: Se houver como não poste código nesse contexto, apenas quero saber de possíveis vulnerabilidades dessa classe nativa que até então nunca utilizei.
-
Erro: Cannot modify header information - headers already sent by
Omar~ respondeu ao tópico de Sapinn em PHP
Devemos ressaltar que esse erro é porque alguma coisa já foi para o browser e agora você tentar enviar algum cabeçalho. É comum isso acontecer devido a função include um arquivo enviou e você inclui outro que mexe em alo a respeito cabeçalho http e então tem esse erro gerado. Como o matheus disse isso ocorre na maioria dos casos por causa de "qualquer tipo de caractere antes a abertura da tag do PHP". Entenda que um arquivo incluído é como se fosse mesmo arquivo que executou a função include. Se qualquer arquivo antecessor possui um caractere antes de <?php ou fechamento de ?> + algum caractere se der include em outro arquivo saiba que o cabeçalho já foi enviado. Uma forma também de descobrir esses tipos de caracteres é através de ferramentas próprias, uma delas é o NetBeans IDE ou PhpStorm que podem identificar qualquer tipo de caractere mesmo aqueles que são invisíveis para o windows. Um péssimo editor de código que é muito popular é o "Visual Studio Code" esse é mestre em criar anomalias em arquivos. Vale também lembrar que se você manda algo para o cabeçalho você não pode mandar outra coisa (O que possivelmente não é seu caso como já mencionado). A solução para re-envio é armazenar o buffer de saída ao qual só vai entregar o cabeçalho quando tudo estiver pronto usando o ob_start para esse armazenamento. Der uma lida nesse ARTIGO para mais detalhes. -
Blz @Matheus Tavares Gostei de certos pontos que você citou, como varrer o binário do arquivo em busca de códigos, mas penso que isso poderia custar muito em desempenho e sacrificar a usabilidade. Sobre usar um diretório reconfigurando o apache com htaccess para não processar PHP (Dessa eu não sabia que era possível ^^) Mas o fato que mais me predeu atenção é salvar os arquivos em outro servidor. Quanto ao caso de nome do arquivo, imagem em geral até mesmo sua extensão isso é "LEI ter de se fazer" então sempre apliquei essas condutas, no caso de imagem ou sempre a recrio "até mesmo para fazer a correção da orientação" consigo me livrar de códigos maliciosos na mesma. A questão do mime-type era justamente o que fazer com o arquivo que o usuário enviar, sem que ele possa enganar dizendo que um arquivo é uma coisa quando na verdade é outra. Na aplicação aqui o usuário pode enviar "qualquer coisa". Se for imagem > recrio ela e salvo Se for arquivo comprimido (zip/7z/bz/ra) > Salvo o mesmo sem fazer verificações apenas altero seu nome quando salvo "Acredito eu que não seja possível embutir código nesse tipo de arquivo". Talvez esse seja o ponto que eu esteja pecando na vulnerabilidade. Se for qualquer outro tipo > estou compactando com ZipArchive uma vez que isso é gerado pelo meu código e apenas pego o conteúdo temporário e insiro dentro do arquivo ZIP criado, acredito que não há problemas. Como você mesmo disse... Minha preocupação não está com o usuário fazer download de um suposto arquivo contaminado (mesmo que deveria) e sim na segurança da aplicação. Pois em meu testes justamente enviei um arquivo para quebrar meu código PHP disfarçado de outro tipo de arquivo o que deu certo, e como dessa vez a aplicação que estou a fazer vai poder receber arquivos até do "zé da silva" me fez prender a atenção sobre a integridade do código nesse requisito... Mesmo porque sou paranoico-e-meio-tanto com segurança. A questão mesmo era confiar na classe, a qual é a primeira vez que uso, então passei o dia todo rodando a internet em busca de experiências com a mesma. Até porque a documentação do PHP é muito branda sobre essa classe.
-
Bom, a minha questão lá de usar um hash foi apenas para não usar coluna id do usuário eu sim uma string contendo números e letras aleatória única para cada usuário, dessa forma futuramente posso usar o coluna ID no backend sem que um usuário jamais saiba o id de outro usuario, assim evitando falsificação de dados. Então eu gero um hash só para cada usuário que uso no logar do seu ID para composição de dados no HTML. Aí você estaria criando o token do login se recriar toda a vez, pode ser útil usando em cookie para uma autentificação de dois ou três fatores. Vamos supor que o usuário A logou em um determinado IP`usando um sansung galaxy o token foi gerado como cookie e você registrou esse cookie e os dados no banco, se usuário B tentar roubar esse cookie e querer falsificar o login do usuário A, no entanto ele está vamos supor em um AMD Linux-Ubuntu além do IP incompatível logo você não deixa logar. Então nesse caso não importa o roubo de cookies não importa a falsificação dos cookies, a única forma de usuário B entrar com o login de usuário A é através de seus dados de acesso como e-mail e senha. A unica forma de gerar algo igual é 2 códigos serem processados na mesma fração de segundo, e nenhum servidor que eu saiba faz 2 coisas simultâneas, então eu acho seguro sim.
-
Salvar dados na tabela com JAVASCRIPT
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Aqui eu estou supondo que haja apenas uma postagem ou várias a avaliar por página. Se for várias apenas os form's devem ser gerados dentro de um loop das postagens. Vou resumir, apesar de ser algo bem simples requer algumas manipulações do front para termos a coisa dinâmica, mas nada complicado. <?php $postID = 99; ?> <form method="post" action="" id="ajax_form_<?= $postID ?>"> <input type="hidden" name="alvo_da_postagem" value="<?= $postID ?>" /> <input type="text" name="avaliar" value="" /> <!-- Mude para type="hidden" está como text para você testar aí --> <a data-value="1" class="voto">Sim</a> <a data-value="2" class="voto">Não</a> </form> <script> var botoes = document.getElementsByClassName('voto'); // Obtenho os botões de avaliação if (typeof botoes !== 'undefined' && botoes !== null) { // Depois eu digo o porque disso for (var i = 0; i < botoes.length; i++) { botoes[i].addEventListener('click', salvarForm, false); // Adiciono evento click a cada botão } } function salvarForm(e) { var alvo = e.target; // Obtenho o correto botão clicado var pai = alvo.parentNode; // Obtenho o elemento pai é o form "alvo.parentNode" /* O primeiro elemento filho é um input que irá identificar o id da postagem "children[0]" Encontro o input para adicionar o valor da avaliação que é o segundo filho "children[1]" Então nesse filho que é o que tenho de manipular adiciono o valor do atributo data do botão clicado */ pai.children[1].value = alvo.dataset.value; /* AQUI então você salva o form por ajax Caso precise identificar o id do formulário lembre-se que já o encontramos então caso precise o "pai.id" será o mesmo valor que o foi renderizado no HTML id="ajax_form_<?= $postID ?>" */ } </script> Então no arquivo que vai receber os dados do form você terá o $_POST['alvo_da_postagem'] >>>> Que é o id da postagem para avaliar $_POST['avaliar'] >>>> Que é data-value clicado pelo usuário Nesse mesmo arquivo ao salvar a avaliação poderemos manipular o HTML Como o #ID do form está assim ajax_form_<?= $postID ?> e $_POST['alvo_da_postagem'] será o mesmo que $postID então podemos chegar ao formulário para manipular qualquer um de seus elementos filhos no caso remover o ouvinte de eventos click do botão clicado Assim sendo não podendo clicar novamente no mesmo ou em ambos, sei lá como vai querer fazer... document.getElementById('ajax_form_<?= $_POST['alvo_da_postagem'] ?>') Ao caso do usuário recarregar a página fechar e reabrir a página sempre estará disponível os botões de avaliação. Por isso a importância de também haver registro de qual postagem aquele usuário postou Aqui eu estarei apenas usando a própria tabela que você apresentou, mas poderá criar outra apenas para essa finalidade de checagem CREATE TABLE `avali_comentario` ( `id` int(11) NOT NULL AUTO_INCREMENT, `comentario_id` int(11) NOT NULL, `usuario_id` int(11) NOT NULL DEFAULT '1' COMMENT 'ID do usuario que avaliou', `up` int(11) NOT NULL, `down` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Nesse meu caso é só checar se o usuário já fez sua avaliação no post que se segue: SELECT comentario_id, usuario_id FROM avali_comentario WHERE comentario_id = '$ID_DO_COMENTARIO' AND usuario_id = '$ID_DO_USUARIO' Se por exemplo essa query retornar algum valor podemos apenas escrever o html sem executar a função dos botões <?php $retornoDaQuery = true; /* Supondo que o usuario já votou porque a query retornou algum valor */ ?> <a <?= ($retornoDaQuery ? 'data-value="1" class="voto"' : null) ?>>Sim</a> <a <?= ($retornoDaQuery ? 'data-value="2" class="voto"' : null) ?>>Não</a> Assim sendo se os botões não tem as propriedades necessárias o voto não acontece ou até mesmo poderíamos colocar um IF se sim nem escreveríamos o html deles. Por isso a identificação da existência pelo typeof antes de adicionar ouvintes nos botões se eles não existirem vai gerar erro de console.- 6 respostas
-
- php
- javascript
-
(e mais 1 )
Tags:
-
Salvar dados na tabela com JAVASCRIPT
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Tem sim (pelo ip físico da máquina do usuário dizem que tem como obter o DNS também, mas não sei como). Há uma possibilidade de erro (duplicar o mesmo), mas se colocar-mos IP + dados da máquina + sistema operacional você terá uma margem bem alta de precisão, pode acontecer de duplicar, mas seria extremamente raro. Veja essa classe com ela você pode obter o IP o SO e até o browser que o usuário esteja usando. No entanto de qualquer forma terá que registrar em algum lugar no servidor, seja um banco de dados, um XML JSON, TXT etc... Não importa tem que registrar em algum lugar para saber se o usuário já fez a sua avaliação.- 6 respostas
-
- php
- javascript
-
(e mais 1 )
Tags:
-
Salvar dados na tabela com JAVASCRIPT
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Use AJAX para carregar um arquivo que irá registrar a avaliação. Nesse arquivo não use redirecionamento. Ao clicar no botão pode enviar a informação do que foi clicado por protocolo GET ou POST, tanto faz o que conta mesmo é como esse dado será tratado no back-end. Só um detalhe usar um cookie pode não ser o mais ideal, uma vez que o usuário pode está com cookies bloqueados no browser o mesmo limpar o cache ele vai poder avaliar novamente. Sugiro uma tabela para registrar o que o usuário já avaliou. Mas caso não seja um problema o usuário poder avaliar diversas vezes a mesma coisa, desconsidere....- 6 respostas
-
- php
- javascript
-
(e mais 1 )
Tags:
-
Que nada cara é cedo para desistir... Ao logar você cria a session e o cokkie Caso ele entre novamente, checa se o cookie existe e a session não Se entramos nessa condicional chamamos o método checarAcesso Se ele retornar verdadeiro, criamos a sessão e pronto o usuário estará logado Veja esse meu projeto como eu aplico essa questão de forma bem simples https://github.com/Spell-Master/source-map/blob/master/modules/actions/user/login_v.php#L66 https://github.com/Spell-Master/source-map/blob/master/system/class/helper/SmUser.php#L30 https://github.com/Spell-Master/source-map/blob/master/index.php#L21
-
Bem, eu desconheço uma forma de herdar um objeto de uma classe para ser usado em um método estático. Para falar a verdade nunca nem vi a necessidade. Já o contrário é muito comum de se ver.... Se fosse comigo e fosse uma necessidade indispensável eu optaria por abandonar a herança e apenas criar um objeto para a classe mãe instanciando quando necessário. Mais ou menos nesse conceito: Em todo caso se a confusão chegasse a esse ponto com certeza eu estaria revendo a arquitetura das classes para não está fugindo da ideia de orientação a objeto.
-
Isso depende de projeto para projeto... Depende de quais dados significam um usuário logado dentro de uma sessão No genérico vamos supor que o usuário logou.... Então além da session eu registro um cookie (esse permanece salvo nos arquivos temporários do browser que ele esteja usando) Então existe ambos "usuário logado"... Se ele fechar o browser a session some mas o cookie permanece. O "pulo do gato" seria no caso comparar se o cookie existe e a sessão não. Se o cookie existir e a session não é que o o usuário deve permanecer logado logo então no cookie devo armazenar alguma informação que identifique esse usuário. Vejamos (isso seria feito antes de tudo digamos no index.php): <?php if (isset($_COOKIE['usuario']) && !isset($_SESSION['usuario'])) { // Aqui você faz a coisa acontecer } Nesse caso o cookie "usuario" existe e a session não, ou seja eu tenho a informação do cookie então vamos supor que eu busque esse usuário no banco de dados e defina sua session com essa informação contida no cookie. Como isso é realizado antes de tudo, ao usuário acessar automaticamente será logado, suas informações carregadas o restante do código... "como vem depois" simplesmente identifica o usuário. Mas tenha cuidado um cookie até mesmo uma session são salvas na máquina do usuário. Por exemplo "como 99% usam uma coluna ID no bando" se o administrador do sistema é (id 1) e através dessa informação esse usuário tem acesso a tudo (só estou exemplificando).... Nada impede que alguém mau intencionado crie uma session ou um cookie em sua máquina com essa informação.... Assim logando automaticamente quando acessar como se fosse o administrador. Mas daí entramos no caso de autentificação de 2...3...4...5... fatores e por aí vai e isso é outra conversa.
-
php login dando usuário inexistente
Omar~ respondeu ao pergunta de Felper em Perguntas e respostas rápidas
Exporte a tabela users e poste sua estrutura. Como foi inserido os dados na tabela? Para um login algo deve ser criado no caso uma global session, cookie ou ambos. Leia esse tópico pode ser útil para quem está engatinhando ainda. https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/ Obs.: $logindb e $senhadb irão se re-escrever a cada volta do loop fetch_object e isso não é uma boa pela perca de desempenho existem formas melhores apenas sabendo se a consulta houve retorno -
UPDATE tabela_do_usuario SET indicacao_do_vip = 0 Atualize a tabela de usuário definindo a coluna que indica quando o usuário vip para zero (1 era usuário vip / 0 sem vip) WHERE indicacao_do_vip = 1 Quando a coluna que indique o vip for um (1) "Ou seja só usuários com vip serão alvos" AND (dias_vip IS NULL OR dias_vip < CURDATE()) E quando a coluna de contagem de dias for nula ou a data registrada for menor que a data atual Na verdade essa parte pode ser otimizada ficando só AND dias_vip < CURDATE() Não precisa pegar o valor nulo pois se é nulo nunca teve um vip registrado ^^ Então digamos que a data de término desse vip seja 2021-01-01 e no momento do login for 2021-01-02 (um único dia a mais) a tabela era atualizada. O que eu fazia para definir um vip era atualizar a coluna que registrava que aquele usuário era vip para 1 (um) e a data de término para x dias contando a partir dos dias aplicados exemplo: <?php $periodo = 5; /* Cinco dias */ $usuario = 99; /* ID da conta do usuário */ $query = " UPDATE tabela_do_usuario SET indicacao_do_vip = '1', dias_vip = DATE_ADD ( CURDATE(), INTERVAL {$periodo} DAY ) WHERE id_da_conta = '{$usuario}' "; Assim sendo se hoje era 2021-06-15 o término do vip seria 2021-06-20 então qualquer usuário que logasse no dia posterior involuntariamente atualizara o vip de todo mundo. Veja o script em linguagem C++ que fiz ao qual eu comandava IN-GAME a coisa toda, der uma olhada pode ser útil para que possa elaborar seu sistema aí, pois não se tratava só de adicionar ou remover vip e sim adicionar mais dias ou remover dias:
-
@Xicara Durante 8 anos anos fui administrador de um servidor de jogo online (Ragnarok Online), ao qual possuía sistema de conta vip. Para minha realidade eu simplesmente apliquei que quando o usuário logasse comparava a data atual com a data de seu início de vip. Sendo que a cada login a tabela se atualizava removendo o período de acordo com o dia em que ele logou. Exemplo: UPDATE tabela_do_usuario SET indicacao_do_vip = 0 WHERE indicacao_do_vip = 1 AND (dias_vip IS NULL OR dias_vip < CURDATE()) Então mesmo que não seja o usuário específico qualquer usuário que logasse atualizava os dias vip de todos usuários. Essa coluna de dia vip nada mais era que uma coluna date. Como disse esse conceito já era o suficiente para minha realidade. Porém você diz que quer a coisa automatizada, então não há outra forma a não ser usar uma tarefa CRON como o próprio @Matheus Tavares disse. São suas únicas alternativas ou atualiza a tabela pelo login seja o próprio usuário seja qualquer um ou usa um cron job. Ao invés de ficar tentando fazer gabiarras grotescas de código.
-
Aparentemente o código da class está correto. Porém acredito que a falta de um construtor seja o problema, o PHP 8 está cheio de frescuras, muito dos meus códigos também tive de fazer alterações para funcionar na versão. Tente usar essa classe ela é para captura de super globais: Exemplo: <?php $post = GlobalFilter::filterPost(); // Obtem tudo que está na super global $_POST if ($post) { var_dump($post); // No seu caso >>>>> echo $post->name; } else { // Nenhum $_POST existente o valor de $post é (false) }
-
Isso é relativamente simples. Você precisará de recurso AJAX para não recarregar a página. Vou lhe apresentar um conceito pois para um exemplo mais preciso conforme você disse, tem que ser feito com os dados de seu código. Mas só pela lógica qualquer um consegue fazer. Arquivos necessários (para execução correta do AJAX): https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest Essa seria o arquivo onde estaria o botão O que temos então: Uma simulação de uma consulta no banco de dados que retorna os registros representados pelo array $resultado_do_banco. Fazemos então um loop nos resultados e a cada volta criamos um formulário identificado diferente para cada resultado. Cada formulário ao ser submetido executa uma função enviando como parâmetro o id do registro correspondente para podermos identificar qual é o formulário que é para enviar. E o arquivo registra.php Se você percebeu no primeiro arquivo temos uma condição ternária que se o resultado é de um tipo mostra o texto desabilitar e não é mostra habilitar. Essa mesma técnica você usa para modificar o resultado do banco de dados e atualizar o botão depois que o registro for concluído.
- 2 respostas
-
Alterar tamanho da fonte
Omar~ respondeu ao pergunta de Vanessa Andrade em Perguntas e respostas rápidas
Vamos ver se eu entendi.... Você tem acesso aos arquivos na hospedagem? - Se sim: Com a página aberta aí pelo browser, clique com o botão direito do mouse sobre o texto que está pequeno. Selecione o inspetor, com isso você terá tudo que foi processado a tag em sí e suas definições de CSS e qual arquivo está manipulando, então é só recriar o arquivo css e empurrar ele por ftp com as modificações desejadas. Só não entro em mais detalhes porque você teria que ter um mínimo básico de entendimento sobre propriedades de folha de estilo. Em todo caso se você pagou por essa ferramente você deveria ter sim suporte a coisas como essas -
Carregar página com Ajax e executar Scripts ou Jquery
Omar~ respondeu ao tópico de mateus.andriollo em Javascript
https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest O AjaxRequest.js ao carregar a resposta do XMLHttpRequest faz a leitura do conteúdo se houver alguma tag script ele os re-escreve escapando do buffer, assim esses vão funcionar independente do tipo de requisição. Se for um broken-script a resposta nem carrega pois quebra o código do ajaxrequest assim também protegendo a integridade do software que o executa. Só não sei se vai funcionar com essa porcaria "para não chamar de lixo que não serve para nada" o tal do jQuery. -
Aparentemente não há problemas com o link então o que podemos presumir é erro do html. Pode ser alguma tag não fechada, tag como por exemplo todas tag <img> do documento não foram fechadas... <img src="imagemqualquer.jpg" alt="" /> <!-- Fechando a tag "/>" --> No entanto pode não ser isso. A melhor forma que você pode descobrir a raiz do problema aí é através do inspetor do browser. Existe também a possibilidade de um script está manipulando os hiperlinks ou um modo reescrita do apache no caso do serve-side.
-
Como alterar um texto conforme o horário?
Omar~ respondeu ao tópico de Alessandro Bodão em Javascript
É algo até bobo de lhe responder, pois se um horário vai de A a B é uma coisa e X a Y etc... Portanto é só comparar o valor do seu relógio aí se for algo entre uma hora e outra é só alterar o texto da suposta tag h1 que a propósito essa tag só deve ser usada como título de um contexto e não levianamente...