QR code tonen met PHP

Status
Niet open voor verdere reacties.

PST

Gebruiker
Lid geworden
24 okt 2009
Berichten
672
Goede avond,

Ik heb een PHP script waar ik een variabele ($output) vul met de volgende link:

https://www.google.com/chart?chs=20...cret=UC4QEKQWAZVMVI7TV7JJZ2CNZ4&issuer=debian

Met de volgende code wil ik het plaatje/de QR code zichtbaar maken
Code:
<img src= <?php echo $output ?>>


Ik krijg dan het tekentje te zien van een niet werkend plaatje
vv0o25B.png


Als ik er met rechts op klik en kies voor afbeelding openen in nieuw tabblad, dan krijg ik meestal een error 400 van Google en soms toont het plaatje.
fosWP03.png


Als ik die link handmatig kopieer en plak in een nieuw tabblad, dan krijg ik wel mijn QR code
GJwoint.png


Heeft iemand een idee hoe ik met PHP de QR code als plaatje in beeld krijg?
Of een tip waar ik op kan googlen?
 
Haal de URL eens door urlencode()

De error op Google geeft al aan dat URL in het argument ongeldig is .
 
Als ik hem door urlencode() haal, dan worden alle / en : vervangen door andere tekens en heb ik geen werkende link meer. Of begrijp ik je verkeerd?
 
Google meldt dat de aangedragen URL niet voldoet. Het deel in het chl-argument in de URL (jouw invoer die je wilt QR'en) moet je door URL-encode halen.
 
Laatst bewerkt:
Dat gaat de goede kant op, dank je!

De QR code is niet geldig maar ik krijg in ieder geval een QR code

Update: als ik alleen de @ vervang door %40 dan krijg ik een werkende QR. Dat wordt even Googlen hoe ik dat met php kan doen maar dat gaat lukken.
 
Laatst bewerkt:
Niet geldig? URL's en dus speciale tekens in URL-parameters horen geëncoded te zijn. Ik neem aan dat je QR-read app er wel mee overweg kan?
 
Ik haalde teveel door urlencode() heen, het laatste deel was al encoded.

Ik heb nu een goede link maar het is geen plaatje dus daar gaat het nog op fout.
De link openen in een ander tabblad werkt nu wel, zonder foutmelding van Google.

Als ik .png achter de link zet, dan kan ik hem wel als plaatje laten zien. Nadeel daarvan is dat in de Google Authenticator app er dan ook .png achter de uitgever komt te staan. Voorlopig kan ik daar mee leven maar als iemand nog een suggestie heeft dan is dat altijd welkom.
 
Laat je code eens zien die je tot nu toe hebt?
 
Code:
<?php

$output = shell_exec(' echo -1 | google-authenticator --time-based --disallow-reuse --force --rate-limit=3 --rate-time=30 --window-size=3 -l "admin@gpfanatics.com" -s otp/admin.google_authenticator |grep https');

//rare spatie aan het eind weghalen
$output=substr_replace($output ,"", -1);

//issuer opslaan
$prefix = "issuer%3D";
$index = strpos($output, $prefix) + strlen($prefix);
$issuer = substr($output, $index);

//vaste code voor issuer
$stIssuer="%3Fissuer%3D";

//text en issuer van string af halen
$l= strlen($issuer) + 12;
$output=substr_replace($output ,"", -$l);

//secret opslaan
$prefix = "%3Fsecret%3D";
$index = strpos($output, $prefix) + strlen($prefix);
$secret = substr($output, $index);

//vaste code voor secret
$srSecret = "%3Fsecret%3D";

//text en secret van string af halen
$l= strlen($secret) + 12;
$output=substr_replace($output ,"", -$l);

$vastdeelurl = "https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth";
//vaste deel van string afhalen
$output = substr($output,70);

//encoden niet gecodeerd deel
$output = urlencode($output);

//url weer samenstellen
$url= $vastdeelurl . $output . $srSecret . $secret . $stIssuer . $issuer;
echo $url;

//.png erachter
$url .= ".png";

?>

<img src= <?php echo $url ?>>
 
Ik heb nog even jullie hulp nodig.
Dit werkt:

PHP:
echo "<img src=\"https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth%3A%2F%2Ftotp%2Fadmin%40gpfanatics.com%3Fsecret%3DCUBKXTD2EFXJGBAQGSCX5LNGSQ%26issuer%3Ddebian\">";

Nu wil ik dit gedeelte
Code:
otpauth%3A%2F%2Ftotp%2Fadmin%40gpfanatics.com%3Fsecret%3DCUBKXTD2EFXJGBAQGSCX5LNGSQ%26issuer%3Ddebian
vervangen door de variabele $url

Dat krijg ik niet voor elkaar. Het zal vast iets met quotes te maken hebben.

Hebben jullie een idee?
 
Dit werkt!

PHP:
$width = $height = 200;
$error = "M|0"; 
echo "<img src=\"https://chart.googleapis.com/chart?chs={$width}x{$height}&cht=qr&chld=$error&chl=$url\" />";
 
Laatst bewerkt:
Of dit ;) de url uit #1 tussen enkele quotes ' zetten dan hoef je geen escape \ te gebruiken.
Code:
<?php
$output = 'https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/admin@gpfanatics.com%3Fsecret%3DUC4QEKQWAZVMVI7TV7JJZ2CNZ4%26issuer%3Ddebian';
?>
<img src="<?php echo $output ?>" style="width:200px; height:auto; border:0;" alt="QR">
 
Laatst bewerkt:
En waarom in god naam met google werken ?!?

http://phpqrcode.sourceforge.net/examples/index.php?example=022

Met deze lib kan je alles zelf beheren en heb je geen trojaans paard in je data .

Je gegevens beschermen ? niet meer, nooit meer of ben ik de enigste die dit ongepast vindt.

Lol, alsof je een Trojaans paard naar binnen haalt via Google :p
Het is enkel een plaatje wat Google toont. Mogelijk zouden ze ook andere browserdata op kunnen halen, maar dat kan elke site wel doen.
Ik vind dit niet iets om Google op af te rekenen.

Oh ja, je bent op de hoogte dat je een script van 2010 aan het promoten bent? Het kan goed zijn dat deze niet meer naar behoren werkt op de recente PHP-installaties.
 
Ik vind het een beetje discutabel dat al jaren op Sourceforge staat.
Voor zover ik weet heb je een licentie in de vorm van een handleiding nodig als je de werking van QR-code's wilt begrijpen. Dat is echt een boekwerk van ruim honderd bladzijdes. Maar misschien is er geen toestemming nodig om de technische werking prijs te geven.

Ik heb ook geen flauw idee hoe deze oude QR-generator omgaat met UTF-8.
Ik houd het liever bij Google. Die houden het wel up-to-date.
 
Laatst bewerkt:
was dat bedrijfje niet veroordeel voor iets dergelijks shop ...

ps ik heb de code doorlezen
 
was dat bedrijfje niet veroordeel voor iets dergelijks shop ...

ps ik heb de code doorlezen
Welk bedrijfje? Van die maker die het op SourceForge geplaatst heeft?
 
Je kan de url splitsen. Het laatste stukje (de authenticatie) moet een urlencode krijgen.
PHP:
<?php

$source  = 'https://www.google.com/chart';
$size    = '200x200';
$error   = 'M|0';

$account = 'admin@gpfanatics.com';
$secret  = 'UC4QEKQWAZVMVI7TV7JJZ2CNZ4';
$isUser  = 'debian';
$auth    = $account . urlencode('?secret=' . $secret . '&issuer=' . $isUser);

$src = $source . '?chs=' . $size . '&chld=' . $error . '&cht=qr' . '&chl=otpauth://totp/' . $auth;
echo '<img src="' . $src . '" alt="qr" />';

?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan