Gerando dinamicamente um código QR com PHP [fechado]
98
Estou tentando gerar códigos QR em meu site. Tudo o que eles precisam fazer é ter um URL, que uma variável em meu site fornecerá. Qual seria a maneira mais fácil de fazer isso?
não reinvente a roda! as respostas abaixo são perfeitas
Jordan Arseno
4
Akor: você poderia, por favor, não aceitar minha resposta? O Google suspendeu o uso da API da qual depende minha resposta, portanto, de pouco serve a partir de agora.
Existem limitações para o uso da API do Google ?. Quero dizer limitações como: quantidade de solicitações em um determinado horário, etc.
Lobo
11
Deve-se observar que ele foi descontinuado. O Google planeja continuar com o suporte até 2015. Como sempre, caveat emptor.
blainarmstrong
4
@Lobo De acordo com sua documentação : " Não há limite para o número de chamadas por dia que você pode fazer para a API do Google Chart. No entanto, nos reservamos o direito de bloquear qualquer uso que considerarmos abusivo. ".
Alexandru Guzinschi
3
Acho que a resposta de @abaumg é melhor, pois não depende de terceiros como o google ...
arod
4
Setembro de 2019 - ainda funcionando a partir de agora!
+1 isso responde à pergunta mais de perto, você pode gerar o código QR por conta própria, sem ser limitado pelos limites do Google impostos para solicitações. Isso também garantirá que seu site funcione, mesmo quando o contrato do ponto de extremidade do Google for alterado.
Sunny R Gupta
Aviso justo: parece que esta biblioteca pode estar "morta" - ela não foi atualizada pelo autor desde outubro de 2010 e tem alguns patches no rastreador de problemas que os usuários da biblioteca devem considerar aplicar antes de usar a biblioteca.
CubicleSoft
mas como convertê-lo em padrão mvc quaisquer idéias !!!!
saurabh kamble de
@CubicleSoft eu acho que o desenvolvedor levou seu comentário a sério e o atualizou imediatamente
mokNathal
@mokNathal - Não estou vendo nada diferente aqui. O lançamento mais recente disponível na página de Downloads ainda é de 2010.
CubicleSoft
24
A biblioteca phpqrcode é muito rápida de configurar e a documentação da API é fácil de entender.
esta biblioteca não parece funcionar para uma variedade de entradas, mas textos pequenos e simples podem ser
usados
Você pode dar um exemplo?
RafaSashi,
nada muito, quando eu faço $ codeContents = "www.example.com" está tudo bem, mas se eu faço $ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0=" não mostra a imagem correta.
duckduckgo
Não consigo reproduzir o erro. Está funcionando bem com QRcode :: png ('www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI r1B0 ='); talvez tenha algo a ver com os cabeçalhos
RafaSashi,
2
Posso usar a biblioteca php-qrcode para fins comerciais, como para desenvolver um site que requer código qr em algumas de suas partes?
Suneeta Singh
15
A biblioteca endroid / QrCode é fácil de usar, bem mantida e pode ser instalada usando o composer. Também existe um pacote para usar diretamente com o Symfony.
Instalando:
$ composer require endroid/qrcode
Uso:
<?phpuseEndroid\QrCode\QrCode;
$qrCode =newQrCode();
$qrCode->setText('Life is too short to be generating QR codes')->setSize(300)->setPadding(10)->setErrorCorrection('high')->setForegroundColor(array('r'=>0,'g'=>0,'b'=>0,'a'=>0))->setBackgroundColor(array('r'=>255,'g'=>255,'b'=>255,'a'=>0))->setLabel('Scan the code')->setLabelFontSize(16)->setImageType(QrCode::IMAGE_TYPE_PNG);// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();// or create a response object
$response =newResponse($qrCode->get(),200, array('Content-Type'=> $qrCode->getContentType()));
Iwazaru senhor, como posso usar setText()se tenho VÁRIOS dados? Por exemplo, eu tenho $a = 1, $b = 2, $c = 3?. Preciso usar mais de UMA frase ou String. Como eu posso fazer isso?
Como o setTextmétodo aceita apenas um parâmetro, acho que você deve concatenar suas variáveis em um antes de passá-lo. Mas não tenho certeza se estou entendendo seu problema corretamente, talvez você deva abrir um problema no repositório da biblioteca.
Iwazaru
Iwazaru , tenho a resposta, senhor ..
Quer compartilhar? ;)
Iwazaru
1
Claro :) Eu usei implode () no php para combinar todos os dados, então explode () se necessário. É isso, senhor :)
10
gerador de qrcode no Github. Script mais simples e funciona como charme.
Prós:
Sem dependência de terceiros
Sem limitações para o número de gerações de código QR
Não consigo encontrar nenhum documento sobre isso, mas parece ótimo!
Björn C
@ praba230890 você poderia fornecer mais alguns exemplos com este script? Estou tentando obter algumas informações de contato em um código QR 300x300 px. Instalei / baixei o script no meu localhost e o sample_html.php funciona. Mas os outros dois não. meu japonês não é tão bom (ok, vou usar o google tradutor)
alex
oh, e isso seria mais rápido / melhor do que a biblioteca phpqrcode?
alex de
está desesperado.
navjot singh
5
Eu uso o google qrcode api há algum tempo, mas não gostei disso porque requer que eu esteja na Internet para acessar a imagem gerada.
Eu fiz uma pequena pesquisa de linha de comando e descobri que o linux tem uma ferramenta de linha de comando qrencodepara gerar códigos QR.
Eu escrevi este pequeno script. E a parte boa é que a imagem gerada tem menos de 1 KB de tamanho. Bem, os dados fornecidos são simplesmente um url.
O que acontece se você for ahttp://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Doktor J
escapeshellarg explicado aqui (para aqueles que estão se perguntando) - stackoverflow.com/a/22739494/195722 . Pessoalmente, eu não pagaria um comando todas as vezes (especialmente para uma geração voltada para o público) e definitivamente usaria regex para ter certeza de que o que eles transmitiram era uma string que eu esperava.
Natalie Adams,
funciona bem no ubuntu 16.04
Asuquo12
4
Eu sei que a questão é como gerar códigos QR usando PHP, mas para outras pessoas que estão procurando uma maneira de gerar códigos para sites que fazem isso em javascript puro é uma boa maneira de fazer isso. O plugin jquery-qrcode jquery faz isso bem.
Estou usando o plugin Jquery github.com/lrsjng/jquery-qrcode por um tempo, também bonito. No entanto, a saída é apenas binária. Portanto, se você precisar gerar e salvar uma imagem como PNG, não ajudará muito. É por isso que a maioria dos desenvolvedores que lêem esta questão precisa de PHP.
Kai Noack
É possível baixar uma imagem de dados gerada por JS 100% no cliente.
Quinn Comendant
Desculpe por não ter sido claro. Eu quis dizer "salvar do lado do servidor" - não é possível apenas com Javascript.
Respostas:
Vale a pena acrescentar que, além da biblioteca de códigos QR postada por @abaumg , o Google oferece um
API de códigos QRAPI de códigos QR muito obrigado a @Toukakoukan pela atualização do link .Para usar isso, basicamente:
300x300
é o tamanho da imagem QR que você deseja gerar,chl
é a string codificada por url que você deseja transformar em um código QR, echoe
é a codificação (opcional).O link acima dá mais detalhes, mas para utilizá-lo basta que o
src
de uma imagem aponte para o valor manipulado, assim:Demo:
fonte
A maneira mais fácil de gerar códigos QR com PHP é a biblioteca phpqrcode .
fonte
A biblioteca phpqrcode é muito rápida de configurar e a documentação da API é fácil de entender.
Além da resposta de abaumg, anexei 2 exemplos
PHP
de http://phpqrcode.sourceforge.net/examples/index.php1. Codificador de código QR
primeiro inclua a biblioteca de seu caminho local
em seguida, para gerar a imagem diretamente como fluxo PNG, faça, por exemplo:
para salvar o resultado localmente como uma imagem PNG:
2. Decodificador de código QR
Veja também o decodificador zxing :
http://zxing.org/w/decode.jspx
Muito útil para verificar a saída.
3. Lista de formato de dados
Uma lista de formatos de dados que você pode usar em seu código QR de acordo com o tipo de dados:
http://
)fonte
A biblioteca endroid / QrCode é fácil de usar, bem mantida e pode ser instalada usando o composer. Também existe um pacote para usar diretamente com o Symfony.
Instalando:
Uso:
fonte
setText()
se tenho VÁRIOS dados? Por exemplo, eu tenho$a = 1
,$b = 2
,$c = 3
?. Preciso usar mais de UMA frase ou String. Como eu posso fazer isso?setText
método aceita apenas um parâmetro, acho que você deve concatenar suas variáveis em um antes de passá-lo. Mas não tenho certeza se estou entendendo seu problema corretamente, talvez você deva abrir um problema no repositório da biblioteca.gerador de qrcode no Github. Script mais simples e funciona como charme.
Prós:
fonte
Eu uso o google qrcode api há algum tempo, mas não gostei disso porque requer que eu esteja na Internet para acessar a imagem gerada.
Eu fiz uma pequena pesquisa de linha de comando e descobri que o linux tem uma ferramenta de linha de comando
qrencode
para gerar códigos QR.Eu escrevi este pequeno script. E a parte boa é que a imagem gerada tem menos de 1 KB de tamanho. Bem, os dados fornecidos são simplesmente um url.
Então no html carrego a imagem:
Você só precisa instalá-lo. [a maioria dos aplicativos de imagem no Linux o teria instalado sob o capô sem você perceber.
fonte
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Eu sei que a questão é como gerar códigos QR usando PHP, mas para outras pessoas que estão procurando uma maneira de gerar códigos para sites que fazem isso em javascript puro é uma boa maneira de fazer isso. O plugin jquery-qrcode jquery faz isso bem.
fonte