qr Generator server side opslaan
Dag allemaal,
ik maak gebruik van larsjung.de/jquery-qrcode om een mooie qrCode te genereren.
Nou wil ik deze graag opslaan op de server, nadat ik een bepaalde actie heb uitgevoerd (client-side)
Het genereren gaat prima.
Als ik de image src handmatig ophaal, is dit een string van 64.505 karakters.
De QR code is 500x500 omdat ik deze op labels en bordjes enz. wil afdrukken.
Als ik nou het volgende uitvoer, krijg ik maar een string van 152 karakters.
Iemand enig idee ?
ik maak gebruik van larsjung.de/jquery-qrcode om een mooie qrCode te genereren.
Nou wil ik deze graag opslaan op de server, nadat ik een bepaalde actie heb uitgevoerd (client-side)
Het genereren gaat prima.
Als ik de image src handmatig ophaal, is dit een string van 64.505 karakters.
De QR code is 500x500 omdat ik deze op labels en bordjes enz. wil afdrukken.
Als ik nou het volgende uitvoer, krijg ik maar een string van 152 karakters.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
var img = document.getElementById("qrCode");
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
//var dataURL = canvas.toDataURL("image/png");
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
//var dataURL = canvas.toDataURL("image/png");
Iemand enig idee ?
Mogelijk voer je bovenstaande code te vroeg uit, waardoor je een lege afbeelding uitleest?
Daarbij moet je waarschijnlijk ook met het volgende rekening houden: een afbeelding bestaat uit binaire data, dit is geen tekst of een string of wat dan ook. Ook is het zaak dat je deze data omzet in een vorm zodat je deze veilig kunt gebruiken in een bepaalde context, maar hier zorgt toDataURL in dit geval wel voor waarschijnlijk - bedoelde je de lengte van de output daarvan?
toDataURL encodeert ook zaken geloof ik, dit is dan (uiteraard?) van een andere lengte dan de rauwe binaire data lijkt mij.
Daarbij moet je waarschijnlijk ook met het volgende rekening houden: een afbeelding bestaat uit binaire data, dit is geen tekst of een string of wat dan ook. Ook is het zaak dat je deze data omzet in een vorm zodat je deze veilig kunt gebruiken in een bepaalde context, maar hier zorgt toDataURL in dit geval wel voor waarschijnlijk - bedoelde je de lengte van de output daarvan?
toDataURL encodeert ook zaken geloof ik, dit is dan (uiteraard?) van een andere lengte dan de rauwe binaire data lijkt mij.
Hi Thomas,
Het is base64 encoded.
Wel moet ik de
Ik heb zelfs een delay gemaakt, en nog altijd is de lengte veel korter dan daadwerkelijk in de src staat.
Maar ik heb ondertussen besloten het sowieso maar gewoon serverside te doen, want heb t nog veel vaker nodig :)
Gewoon met de googleapi, naderhand kleurtje veranderen en logo er bovenop te knallen.
Want kreeg al servererrors van mn WAF mbt XSS vulnerability’s.
Het is natuurlijk wel een heel gevoelige manier..
Het is base64 encoded.
Wel moet ik de
Ik heb zelfs een delay gemaakt, en nog altijd is de lengte veel korter dan daadwerkelijk in de src staat.
Maar ik heb ondertussen besloten het sowieso maar gewoon serverside te doen, want heb t nog veel vaker nodig :)
Gewoon met de googleapi, naderhand kleurtje veranderen en logo er bovenop te knallen.
Want kreeg al servererrors van mn WAF mbt XSS vulnerability’s.
Het is natuurlijk wel een heel gevoelige manier..
Gewijzigd op 19/04/2018 18:49:46 door Dennis WhoCares
Als je elke keer een random QR-code genereert met dezelfde afmetingen, en je (toch) elke keer dezelfde 152 karakters krijgt dan is dat een indicatie dat er iets structureel misgaat. Heb je al geprobeerd om die afbeelding vervolgens te base64-decoden en op te slaan, en dan te kijken hoe die afbeelding er uitziet?
Gewijzigd op 19/04/2018 19:35:37 door Thomas van den Heuvel
Ik vind server-side her-genereren wel een betere oplossing. Anders moet je altijd weer controleren wat je nou precies van de client hebt gekregen (een echte QR-png, of gewoon regelrechte bagger?).
D'r zijn trouwens genoeg bibliotheekjes om die dingen gewoon helemaal lokaal te genereren. Heb je ook die afhankelijkheid naar Google niet meer nodig (minder storingsgevoelig, en veul sneller).
D'r zijn trouwens genoeg bibliotheekjes om die dingen gewoon helemaal lokaal te genereren. Heb je ook die afhankelijkheid naar Google niet meer nodig (minder storingsgevoelig, en veul sneller).
Rob Doemaarwat op 19/04/2018 21:10:06:
Ik vind server-side her-genereren wel een betere oplossing. Anders moet je altijd weer controleren wat je nou precies van de client hebt gekregen (een echte QR-png, of gewoon regelrechte bagger?).
D'r zijn trouwens genoeg bibliotheekjes om die dingen gewoon helemaal lokaal te genereren. Heb je ook die afhankelijkheid naar Google niet meer nodig (minder storingsgevoelig, en veul sneller).
D'r zijn trouwens genoeg bibliotheekjes om die dingen gewoon helemaal lokaal te genereren. Heb je ook die afhankelijkheid naar Google niet meer nodig (minder storingsgevoelig, en veul sneller).
Hi Rob,
ik ben ondertussen er ook al klaar mee ;P
Ik was vanmiddag nog meer aan het klooien, en toen zag ik dus de XSS beveiliging inslaan, en toen dacht ik.. Weet je.. laat maar gaan.
Ik kwam de google api tegen, en eigenlijk werkt dit ook wel erg snel!




