Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 10/30/14 in all areas

  1. 8 points
    Seu problema é realmente com o PHP ?! O objetivo deste pequeno artigo é orientar você na hora da criação de um novo tópico para descrever o seu problema, afim de ajudar definir qual área seria adequada para tratativa do mesmo, ajudando assim a organização do Fórum e consequentemente um melhor entendimento. O fórum de PHP é voltado exclusivamente à linguagem de Programação PHP , por este motivo, antes de iniciar um novo tópico com sua dúvida, certifique-se de que seu problema realmente está relacionado com PHP e não com outro tipo de linguagem ou tecnologia. Vários membros criam tópicos relatando estar com problemas, e que não sabe se esta é a área correta, e, com uma frequência muito comum, geralmente o problema não está relacionado com o PHP, e sim com JavaScript/Ajax ou HTML/CSS. Por que isso ocorre ? Geralmente você está desenvolvendo uma aplicação que envolve HTML, CSS, JavaScript, PHP, MySQL quando se depara com alguma falha/bug, e simplesmente por estar envolvendo PHP, e pelo fórum de PHP ter um maior tráfego, acabam generalizando e postando aqui o problema. Vou exemplificar algumas situações que ocorrem: Nos casos acima, é notório que o problema é com MySQL e não com o PHP, principalmente quando recebe na tela um erro de sintaxe SQL. A área correta para tratativa de sua dúvida é MySQL: Banco de Dados MySQL Entendam que PHP é uma linguagem de programação Back-End; Todo e qualquer problema com: Alinhamento de Tabela, Alinhamento de Div's, Alinhamento de Menu, e demais problemas desta ordem, fazem parte do Front-End e são relacionados a HTML/CSS. A área correta para tratativa de sua dúvida é: HTML e CSS É muito comum membros postarem esse tipo de dúvida, achando que o problema ou solução estão no PHP. Requisições sem "carregamento da página" assim por dizer, chamada "requisição assíncrona", na maioria dos casos são efetuadas com AJAX/jQuery e, por estar trabalhando em conjunto com o PHP, você acaba achando que o problema é com PHP. O mesmo ocorre com o MODAL, em que sua ação para abrir, depende de uma função javascript. Um simples erro ou uma biblioteca não inclusa pode ocasionar o problema. A área correta para tratativa de sua dúvida é: Javascript O mesmo ocorre com as demais áreas, procurem identificar o fórum coreto para tratativa do problema, assim nos ajuda a organizar e promover uma gama de conteúdo mais seletivo, específico de cada área. Ainda na oportunidade, recomendamos fortemente a leitura do tópico: ATENÇÃO: Orientações e Regras do Fórum de PHP Atenciosamente, equipe iMasters.
  2. 4 points
    Para acrescentar: $numeros = [1,2,3,4,5]; $penultimoEantePenultimo = array_slice($numeros, -3, -1); # Retornara um novo array, com as posições desejadas print_r($penultimoEantePenultimo); /* Array ( [0] => 3 [1] => 4 ) */ A função end() faz o ponteiro interno de um array apontar para o seu último elemento, dependendo do contexto, esse é um comportanto desejável end($numeros); echo prev($numeros); # exibira 4 echo prev($numeros); # exibira 3 http://php.net/manual/pt_BR/function.array-slice.php http://php.net/manual/pt_BR/function.end.php http://php.net/manual/pt_BR/function.prev.php
  3. 4 points
    Primeiro, MD5 foi criado para ser uma criptografia do tipo hash (unidirecional) para criar um fingerprint (impressão digital) de um conjunto de caracteres/bytes (certificados digitais, por exemplo). Entretanto, foram encontradas diversas falhas nele, que, hoje em dia, ele não é mais utilizado para o propósito original. Tem vários materiais sobre a (in)segurança do MD5. https://en.wikipedia.org/wiki/MD5#Security https://security.stackexchange.com/questions/19906/is-md5-considered-insecure https://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function Não ser retornável, não quer dizer impossível de ser quebrado. O pensamento "linear" de "quebrar" é possuir um hash e retorná-lo ao estado de origem. Entretanto, não é isso que ocorre. O MD5 é tão rápido de ser gerado, que pode-se gerar biliões de combinações em pouco espaço de tempo. Você não precisa saber o HASH original, só precisa encontrar um que, quando gerado, seja igual ao outro. Lembrando que MD5 gera colisões, ou seja, conjuntos de caracteres diferentes podem gerar hashs iguais. https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities https://en.wikipedia.org/wiki/Collision_attack A forma mais conhecida de "reverter" um MD5 é através de uma rainbow table. Veja por si só no link abaixo https://crackstation.net/ Ou pesquise no google sobre "MD5 Reverse". No link abaixo você pode ler um pouco sobre como funciona o password_hash: https://pt.stackoverflow.com/questions/194929/password-hash-php/194950#194950 Fale isso para o CERT... http://www.kb.cert.org/vuls/id/836068 Uma das primeiras falhas do MD5 foi encontrada em 1996: ftp://ftp.rsasecurity.com/pub/cryptobytes/crypto2n2.pdf Como pode dizer que é seguro?
  4. 4 points
    No decorrer da minha experiência como dev, eu vi muitas decisões ruins, algumas delas eu mesmo sugeri. Mas, a que mais me impressionava era quanto ao projeto base e suas customizações. Pensando apenas em code (sem entrar em banco de dados), eu utilizaria uma mescla entre o GIT e o composer. Branch's e divisões No GIT: Dividir as branchs em 5 tipos (serão mais branchs): master, cutom-*, homologacao-*, dev-* e hotfix-*; A branch master será única e exclusivamente para o código base não customizado; A branch custom-*, será específica para o código homologado do projeto customizado para uma empresa (custom-empresa01, custom-empresa02, etc..); A branch homologacao-* será específica para homologar a transição do código de dev para prod, aonde testes de alto nível são aplicados. Cada branch de produção (master/custom) terá sua respectiva branch de homologação (homologacao-master, homologacao-custom-empresa01, etc); A branch dev-* é aonde é realizado o desenvolvimento, ela são livres, aonde o "desenvolvedor não conhece as leis" ou "o filho chora e mãe não vê", etc.. Você deve ter quantas forem necessárias, para cada implementação, cada GAP, cada moficação (dev-master-task-2784, dev-custom-empresa01-task-3500, etc...); A branch de hotfix-* é aquela correção rápida, aquele conflito do merge entre uma entre o código base e uma customização ou que está implicando em parada geral do sistema (aquele bug ou erro de português que passou pela homologação/testes), que não necessariamente deve passar por todos os passos de desenvolvimento/homologação/produção. O que nós normalmente chamamos de "codificar em prod"... Sim, isso existe na realidade de todos já fizeram. Essa é a definição da árvore do projeto. Os caminhos a serem seguidos: dev-master-* <--> homologacao-master <--> master --> homologacao-custom-* <--> custom-(todas as empresas); dev-custom-* <--> homologacao-custom-* <--> custom-*; hotfix-* <--> para aonde for necessário. Perceba que no fluxo, uma custom nunca deve levar o seu código para a master. Apenas a master pode levar códigos para a custom. Sempre utilizando a branch de homologação da custom. Fork Uma característica bem interessante dos serviços de controle de versionamento (bitbucket, github, etc...) é a possibilidade de criar um fork de um projeto. O seu projeto CORE será o repositório principal e, para cada cliente, você criará um novo fork. Logo, você terá o projeto master e os forks para cada cliente (master -> cliente-01 -> cliente-02, etc...). A divisão entre branchs, deve ser a mesma exemplificada exclusiva para a master. Ou seja, 4 tipos: master, homologação, dev-* e hotfix-*). A nomenclatura das branchs (mster, homologacao, dev-* e hotfix-*) segue a mesma definição anteriormente explicada. A parte de fluxo será o que está exemplificado abaixo: dev-* <--> homologacao <--> master; hotfix-* <--> para onde for necessário. O cuidado, vem na hora de sincronizar os forks. O BitBucket, por exemplo, lhe sugere um fork automático entre as branchs masters de cada repositório. Entretanto, para um melhor controle e validação do novo código, a sincronização deve ocorrer entre a branch master, do projeto master, para a branch homologacao do projeto customizado. Ou seja: Master:master --> Cliente-01:homologacao; Dessa forma, você pode homologar, corrigir e enviar para a produção (master) da customização de clientes. No BitBucket, para realizar tal feito, você pode ir no menu compare, escolha a branch da qual está o código (parte de baixo) e a branch na qual você quer enviar o novo código (branch de cima). Compare as diferenças e, no canto direito superior, o BitBucket lhe exibirá o botão merge. Feito o merge, o processo é exatamente o mesmo que utilizando branchs. Módulos Aqui é que entra a questão de módulos. Caso você implemente partes do sistema como módulos, você pode usar tanto o git-submodule ou o composer. Com ambos você poderá utilizar repositórios privados para baixar as suas dependências. Para cada módulo, você deverá ter o repositório separado e, caso o repositório separado seja customizado, poderá seguir a estruturação acima mencionada. Entretanto, no caso de módulos personalizados, acredito que com o git submodule não seja possível separar entre versões (branch/tags) específicas para cada projeto/branch. No caso do composer é possível, pois, cada branch/projeto, terá seu próprio composer que pode ser personalizado. Banco de dados Nesse caso, vai depender muito do que você irá utilizar para gerenciar o SGBD. Eu utilizei por muito tempo o MySQL WorkBench. Ele funciona perfeitamente quando o assunto é modelagem e sincronização. Entretanto, o formato de arquivo gerado por ele não é aberto e, em consequência, não pode ser versionado. Logo, quando uma tabela precisar ser diferente em algum projeto, você terá dois arquivos distintos. Há, também, a possibilidade de tratar tudo na forma de SQL scripts. Mas ficaria sem uma ferramenta de apoio. Talvez alguém conheça alguma ferramenta melhor para a situação. A contra-partida Quando você separa pequenas partes de um projeto em módulos e os adiciona como dependências do seu projeto, você pode encontrar uma situação denominada Dependency Hell. Esse termo também pode ser utilizado para a manutenção do código entre as branchs, pois, todas as suas customizações necessitam estarem atualizadas com a branch master. E se você almeja 30 empresas, pense que uma mudança no CORE precisa ser homologada para as 30 empresas. Considerações Sendo dicas como elas são, apenas dicas, você pode considerar demasiada estrutura e simplista ou exagerada demais e partir para uma abordagem meio termo ou mais robusta. Tudo dependerá de onde você está e para onde gostaria de chegar. Existem outras ferramentas e abordagens que pode lhe ajudar. Uma delas seria a integração contínua, o qual incluí N outras ferramentas de auxílio. Update Um sistema que gerencia suas próprias customizações acaba sendo limitado a campos e novas informações. Eu, particularmente, não gosto muito da prática. Entretanto, para evitar o problema com o SGBD, pode-se utilizar tabelas de cadastros par atributo-valor para cruzar informações dinâmicas e reduzir a necessidade de criar novas colunas e tabelas. Mas, é uma questão bem limitada. Update 2 Com a nova parte de forks (que eu não havia me lembrado anteriormente), seria a sugestão mais indicada. Pois, se você possuir uma equipe de desenvolvimento específica para cada cliente, poderá gerenciar muito melhor as permissões e acessos. O controle é bem superior a de um repositório apenas.
  5. 3 points
    Naquele dia, a página do desenvolvedor do PagSeguro UOL estava desativada, hoje vi que voltou a funcionar. https://dev.pagseguro.uol.com.br/documentacao/pagamentos Guia de Integração = https://dev.pagseguro.uol.com.br/
  6. 3 points
    Sobre SQL injection, o site mais completo que eu conheço é o https://phpdelusions.net/ Sobre criptografia, leia os artigos de Scott Arciszewski e os que ele linkar. Ele tem muito material e adiciona várias ótimas referências. Pesquise, também, sobre: Cross-site request forgery (CSRF); Cross-site scripting (XSS); Error messages; File upload e include/require breach (vulnerabilidades); Session storage (local e criptografia); Database (separado do servidor PHP). Não pense na segurança como uma solução definitiva. Pense como camadas adicionadas ao seu sistema que aumentarão a segurança. Entretanto, a segurança vem de encontro a performance. Ou seja, quanto mais segurança, menos performance seu sistema possuirá.
  7. 3 points
    Para você entender como seus objetos podem se relacionar de forma n..n, pesquise por DIP ou seja Inversão de Dependencia. Amigo @marsolim você tem que parar de floodar posts, senão as pessoas acham que o post já foi respondido e nem chega a ver. Se desconhece o assunto, simplesmente ignore ou estude um pouco mais para saber como ajudar.
  8. 3 points
    Ah, no caso de f(arg); "que não esta sendo declarada em nenhum lugar" O que acontece, é que esta sendo passado Boolean, que é um objeto que recebe um parametro, para a função noisy. Então f(arg) equivale a Boolean(0); Veja esses exemplos: var matricula = 0; console.log(Boolean(matricula)); // retornara false var matricula = 1234; console.log(Boolean(matricula)); // retornara true var nome = false; var sobrenome = new Boolean(false); console.log(typeof nome); // retornara um boolean console.log(typeof sobrenome); // retornara um object
  9. 3 points
    Keven, joia! Vejamos esse exemplo: function apresentacao(forum) { console.log("Estamos em: " + forum); return function(linguagem) { console.log("Falando de: " + linguagem + "!"); } } apresentacao('Imasters')('JavaScript'); A principio, estamos chamando apenas apresentacao('Imasters'); Só que ela nos retorna uma funcão anonima, e em javascript podemos fazer um encadeamento executando essa função na sequencia. Por exemplo: var linguagem = apresentacao('Imasters'); // Agora "linguagem" é uma função, devido o retorno da função anonima linguagem('JavaScript'); /** Exibira: Estamos em: Imasters Falando de: JavaScript! */ Mas como temos o encadeamento, podemos executar as duas funções na sequencia: apresentacao('Imasters')('JavaScript'); /** Exibira: Estamos em: Imasters Falando de: JavaScript! */
  10. 3 points
    Tente assim: document.getElementById("myDiv").style.height = "1500px";
  11. 3 points
    Olá. Fiz uma correção no código, pois o menu não abria quando clicava no marcador animado ("+" ou"-"). Acrescentei mais um efeito tipo elástico na animação. O que eu faço pra aprender é pegar algo e tentar reproduzir. Eu estudo bem o código e procuro reproduzir pra entender cada passo. Eu não conheço sites de aulas gratuitas, mas creio que deve haver sim. http://codepen.io/Eziquiel/pen/WpMKER?editors=1000
  12. 3 points
    Boa tarde! É importante entender como o php converte para booleanos, para evitar pegadinhas var_dump(0 == true); // false var_dump(1 == true); // true var_dump(1 === true); // false var_dump(-1 == true); // true Não deixe de ver: http://us2.php.net/manual/en/language.types.boolean.php No caso do switch, ele faz comparação fraca (==) Sendo o valor de idade, zero: ($idade >= 0) and ($idade < 14) # isso retornara um true, e zero com true é igual a false. # Reiterando: var_dump(0 == true); # retornara um false Veja mais em: Http://www.php.net/manual/en/types.comparisons.php#types.comparisions-loose Por esse motivo que não entrava na primeira condição. @Webr, mudar: case ($idade >= 0) and ($idade < 14): para case ($idade >= 1) and ($idade < 14): Apesar de fazer cair na primeira condição, esta errado, pelo simples fato de zero ser menor do que 1
  13. 3 points
    ou: var tdList = document.querySelectorAll('tr.danger td');
  14. 3 points
    @Williams Duarte esse é um problema endêmico do mundo do desenvolvimento. Trabalhei nas mais variadas empresas, desde empresa com 3 pessoas, até empresa de âmbito nacional com um número expressivo de funcionários. Todas sofreram, sofrem e/ou sofrerão com esse problema. Somente os ERPs globais (SAP, AX, etc...) eu posso considerar uma exceção, pois, você deve desenvolver neles e ponto final. E nem são tão padronizados assim. @Mateus Silva normalmente, quando encontro com pessoas com resistência a frameworks, é por um pequeno sentimento de que se tornarão "menos" programadores por estarem utilizando uma ferramenta. Pergunta, o contador deixa de ser "menos" contador por utilizar uma calculadora ao invés de realizar os cálculos de cabeça? Alguém que usa uma calculadora HP 12C tem menos controle que alguém que utilize uma calculadora sharp elsi mate el-230? Ou até outros exemplos: um pedreiro é "menos pedreiro" por usar uma betoneira em detrimento de uma enchada com uma caixa de cimento? O marceneiro é "menos" marceneiro por utilizar ferramentas elétricas ao invés de manuais? Nenhum deles deixará de ter controle na ação que desenpenharem, eles ainda serão totalmente responsável pelo trabalho que realizaram, e isso tem tudo haver com confiança na ferramenta que estão utilizado. O framework não é nada mais que uma ferramenta e, sua função, não difere em nada do que qualquer outra ferramenta aqui mencionada. O contrário também é verdadeiro, ninguém será melhor que outro apenas por utilizar inúmeras ferramentas. Hoje em dia não importa qual framework você utiliza, seja X, Y ou Z ou se nem utiliza um framework. Apenas que entenda os padrões que eles estão utilizando. Eu, particularmente, aprendi apenas um framework (CodeIgniter), pois ele não segue nenhum padrão. Mas trabalho basicamente com qualquer framework, apenas porque aprendi como deve funcionar o MVC, PSRs, Design Patterns, entre outros muitos estudos ligados ao desenvolvimento de software. Caso eu tenha alguma dúvida, o manual com certeza irá me atender. Se não me atender, existem fóruns para dúvidas rápidas (tal qual iMasters). Se nem isso me ajudar, bem, por que diabos usaram esse FrameWork? Se achas um framework demasiado grande, utilize um micro framework. Todos eles são escalonáveis, se necessitar de algum módulo novo, basta inserí-los. Tenho certeza que sua produtividade se multiplicará, seus sistemas serão mais seguros e confiáveis e reduzirá o custo de manutenção. Acredito, custo de manutenção é intrinsicamente relacionado ao custo de desenvolvimento. Se mesmo com as vantagens do uso de um framework tiver receio em utilizá-lo, não é um problema. Apenas atente-se para seguir os padrões mundiais de desenvolvimento PHP (PSR's) e, também, os padrões de desenvolvimento de software (design principles, design patterns, DDD, TDD, etc..) Para finalizar, deixo a "frase do ano" dos meus colegas desenvolvedores aonde eu trabalho:
  15. 3 points
    Orientações e Regras do Fórum de PHP Siga estas simples Orientações e Regras e seus tópicos serão até 1297% mais eficientes, com mais visualizações e respostas. Regras 1 - Use Títulos Condizentes Com Suas Dúvidas Descreva no título do tópico exatamente o que você precisa, qual é sua dúvida ou problema. Evite títulos como: "Ajuda", "Help" e títulos que sejam generalizados demais. Jamais escreva "URGENTE" o título do tópico. Tudo que é urgente é aquilo que deveria ter sido feito por você ontem mas não foi feito. 2 - Estamos Aqui Para Orientar Poste um trecho do que você já fez. Estamos aqui para te orientar e para te ajudar a aprender. Não vamos fazer seu trabalho por você. 3 - Tenha Calma e Paciência Não responda o próprio tópico com a intenção de atualizá-lo (UP). Todos nós temos trabalhos próprios e outros compromissos. Os membros do fórum responderão os tópicos quando possível. E vale lembrar que Moderadores não têm obrigação de responder tópicos. Eles estão aqui essencialmente para auxiliar na organização do fórum. 4. Para Dúvidas, Use o Fórum Não envie dúvidas por MP (mensagem privada). Para isso utilize o fórum, dessa forma em vez de apenas um, muitos membros poderão ajudar você a resolver seu problema, além de a solução ficará publicada, para ajudar muitos outros usuários. 5. O fórum de PHP é relacionado EXCLUSIVAMENTE à linguagem de Programação PHP Ao iniciar um tópico no fórum de PHP, certifique-se de que sua dúvida está relacionada com a linguagem PHP, seguindo o contexto do fórum. Se sua dúvida for relacionado a qualquer outra linguagem, tecnologia ou framework, como jQuery, Ajax, HTML, procure o fórum correspondente para tratar do assunto. Orientações 1. Seja Claro e Específico Descreva sua dúvida da forma mais clara possível. Explique o máximo que puder. Muitas vezes, você tem a ideia bem clara em sua cabeça e tudo parece simples, mas quem lê o tópico não vai entender, se você não explicar detalhadamente. 2. Use a Tag Código Sempre que postar códigos, adicione-o entre as tags [ code ] e [ /code ] (sem os espaços), para facilitar a leitura. Você também pode usar o Botão Code (símbolo "<>"), ao lado do Botão Imagem, no editor de textos do fórum. 3. Habilite Todas as Exibições de Erro Configure seu código para exibir TODAS as mensagens de erro, adicionando este código ao topo do script. ini_set('display_errors', true); error_reporting(E_ALL); 4. Leia as Mensagens de Erro Leia os erros que aparecerem, pois normalmente eles dizem o que há de errado no código. Verifique se o erro está na lista dos erros mais comuns do PHP. Você pode corrigi-lo facilmente, sem precisar abrir um tópico só para isso. Se não entender as mensagens de erro, poste-as em seu tópico, apontando a linha exata onde ele ocorre. Assim saberemos onde está o problema 5. Faça Debug de Suas Queries Exiba os erros do banco de dados, para ajudar no debug, seguindo estes exemplos: // Para MySQL mysql_query("sua query aqui") or exit(mysql_error()); // Para MySQLi // ($mysqli é o link de conexão, retornado por mysqli_connect) mysqli_query($mysqli, "sua query aqui") or exit(mysqli_error($mysqli)); // Para PDO sem Prepared Statements // ($PDO é o objeto PDO, retornado por "new PDO") $PDO->query("sua query aqui") or exit(print_r($PDO->errorInfo(), true)); // Para PDO com Prepared Statements // ($stmt é o objeto PDOStatement, retornado pelo método prepare) $stmt->execute() or exit(print_r($stmt->errorInfo(), true)); 6. Dúvidas Sobre Uma Função do PHP? Se a dúvida for sobre a utilização de uma função, leia o manual dela, acessando php.net/nome_da_funcao. 7. Marque Seus Tópicos Como Resolvido Quando um membro postar algo que resolva seu problema, marque esse post como solução. Uma vez marcado como resolvido, o post útil será mandado para o topo da página, facilitando a visualização de todos que o procurarem. 8. Evite Citação Desnecessária Ao utilizar o botão "Citação" ou "Multicitação", no canto inferior direito de cada post, o conteúdo do post será inserido em sua resposta, para citação. Isso ocupa bastante espaço na tela. Por isso, apenas cite quando realmente necessário. Prefira usar o botão Responder, inserindo apenas a sua resposta. 9. Apenas Uma Dúvida Por Tópico Ao criar seu tópico, seja claro na sua dúvida e mantenha somente uma dúvida por tópico. Não aproveite tópicos com dúvidas de outros usuários para postar sua dúvida. Nesse caso, abra um novo tópico 10. Utilize fonte simples Não escreva em CAIXA ALTA nem utilize formatação em todo o conteúdo do tópico, para deixar o texto mais visível (aumentar fonte, negrito/itálico). Formatação é necessária somente para destacar trechos importantes do texto, não para o conteúdo inteiro. Além de dificultar a leitura, existe maior chance de o tópico ser ignorado pelos membros do Fórum. 11. De Novo, Seja Paciente Lembre-se que o fórum é composto por voluntários que também possuem seus próprios problemas e compromissos. Não espere uma resposta imediata, muitas vezes um membro que pode ter a solução para seu problema ainda não leu sua dúvida. Equipe iMasters
  16. 3 points
    Nao tem nenhuma layer por cima no CSS?
  17. 3 points
    Há tempos estou devendo esse post... A espera acabou! :) Está aí o post, fresquinho: http://rberaldo.com.br/captcha-acessivel-sem-utilizacao-imagens/ :thumbsup:
  18. 2 points
    Aqui tem alguns exemplos práticos de todo tipo de associação, a que você quer acho que é a 5.9, o site tá em inglês mas acho que dá pra entender a lógica, dá uma olhada ae http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html
  19. 2 points
    Separe as regras em o que elas podem possuir ou afetar: - São regras de negócios? Model; - As regras utilizam algo relacionado a model? SGBD, WS, API, etc..? Model; - É relacionada ao servidor aonde o sistema está sendo executado? Apache, Nginx, FastCGI, CLI, etc..? Controller. Entede-se por model, o conjunto de componentes que fazem parte da model e por controller o conjunto de componentes que fazem parte do controller. De mercado, pode ser, mas, completo, nenhum pouco. CI é framework defasado que não segue nenhum padrão. Mesmo a versão 3, ainda utiliza programação do PHP 4. Frameworks completos são qualquer coisa, menos o CI.
  20. 2 points
    function enviar_lixeira ($idCliente ){ $pdo = conectar(); try { $delete = $pdo->prepare("UPDATE cad_cliente set lixeira = '1' WHERE idCliente = :idCliente "); $delete->bindValue('idCliente', $idCliente); $delete->execute(); if ($delete->rowCount()> 0): return true; else: return false; endif; } catch(PDOException $erro) { echo "ERRO AO ENVIAR PARA LIXEIRA" . $erro->getMessage(); } } Tente isso!
  21. 2 points
  22. 2 points
    okay! ja estou fazendo o mesmo; qualquer duvida contino no TOPICO :D qualquer forma obrigado!
  23. 2 points
    Eu Nem Fiz O Link '-' eu nao sei fazer o tal link porem nao quero por aquele que diz "meusite.xxx/redefinir?id=ady9ad9ya8d78ad8ad87adya7" quero por um: meusite.xxx/redefinir/ady9ad9ya8d78ad8ad87adya7
  24. 2 points
    è bem isso que quero porem nao consegui coloca para verificar a senha antiga mesmo colocando certo pula pro erro (die)
  25. 2 points
    Podemos transformar qualquer coisa que queiramos em qualquer outra coisa que queiramos; o ponto é: o que queremos? Quando falamos sobre transformar uma base relacional numa não relacional, precisamos, obviamente, de um caso de uso que justifique. Precisamos desse caso de uso porque existem bases não relacionais baseadas em chave=valor, colunas, documentos, grafos, etc; mas o ponto mais importante, e certamente o mais relevante, é que NoSQL traduz-se como Não Apenas SQL, com uma ênfase enorme ao não apenas. Por exemplo, aqui no fórum, estamos usando MySQL com Redis e fazendo jus ao "não apenas": o que é relacional, fica na base relacional; o que é chave=valor, fica no Redis - antes usávamos Memcached para isso. Então, qual o caso de uso que justifica essa sua transformação? Você analisou todos os cenários e variáveis antes de chegar à conclusão de que você realmente tem um caso onde uma base não relacional é melhor do que uma base relacional?
This leaderboard is set to Sao Paulo/GMT-03:00
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.