qr Generator server side opslaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis WhoCares

Dennis WhoCares

19/04/2018 10:01:56
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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");


Iemand enig idee ?
 
PHP hulp

PHP hulp

22/04/2024 06:27:28
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2018 12:19:36
Quote Anchor link
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.
 
Dennis WhoCares

Dennis WhoCares

19/04/2018 18:49:13
Quote Anchor link
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..
Gewijzigd op 19/04/2018 18:49:46 door Dennis WhoCares
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2018 19:34:11
Quote Anchor link
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
 
Rob Doemaarwat

Rob Doemaarwat

19/04/2018 21:10:06
Quote Anchor link
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).
 
Dennis WhoCares

Dennis WhoCares

19/04/2018 21:33:42
Quote Anchor link
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).


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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.