Database op een persoonlijke github-pagina

Is het mogelijk om bepaalde gegevens ergens op uw persoonlijke github-pagina op te slaan?

Bijvoorbeeld een knop die een teller activeert. Wanneer u op de knop klikt, wordt de teller met 1 verhoogd. Wanneer een andere gebruiker die pagina bezoekt en op de knop klikt, wordt de teller opnieuw met 1 verhoogd.

Het zou dus een som zijn van alle klikken van alle bezoekers die op de pagina zouden worden weergegeven.


Antwoord 1, autoriteit 100%

Github-pagina’s staan ​​alleen statische inhoud toe, dus u moet iets als firebasegebruiken om om een ​​database te krijgen.


Antwoord 2, autoriteit 74%

Het geaccepteerde antwoord over Firebase is een goed, snel antwoord, maar ik wil een langer en uitgebreider antwoord schrijven voor iedereen die dit onderwerp onderzoekt, aangezien Firebase een van de vele manieren is om dit soort functionaliteit te bereiken.

Bij wijze van achtergrond, databases/datastores zoals mysql, postgres, redis, mongodb, etc. zijn de meest gebruikelijke manier om bezoekersgegevens op te slaan op de manier waarop de volgende bezoeker deze kan zien of openen. Contentmanagementsystemen zoals Django, WordPress en Drupal zijn gebouwd om te lezen en te schrijven naar een database. Deze services zijn meestal server-side technologie, dat wil zeggen dat een serverbeheerder ze instelt, en codeblokken die de gebruikers van de website niet kunnen zien communiceren met de database. Die codebasis aan de serverzijde bouwt ook de gerenderde html op die een gebruiker zal zien. Dus in het algemeen worden Github-pagina’s niet gebruikt met dit soort technologie omdat ze alleen statische html, css en javascript ondersteunen – dat wil zeggen, ze laten alleen client-side code toe.

Voor meer informatie over dit onderwerp, zie Hoe html-pagina’s te verbinden met mysql-database?

Als je een alleen-lezen datastore wilt opzetten, heb je veel opties op Github-pagina’s. Je zou een json-bestand in je repo kunnen plaatsen, een drive-document kunnen opvragen, een sqlite.db-bestand naar je repo kunnen uploaden en ernaar kunnen opvragen, enz. In dit ingebeelde voorbeeld zou je het goed moeten vinden als een websitegebruiker gegevens in je repo ziet. datastore, omdat de setup geen manier zou bieden om sommige gegevens onzichtbaar te maken voor de gebruiker.

Zodra u erover denkt om naar uw database te schrijven, is beveiliging echter een punt van zorg. Als u een of andere externe database opzet en DB-toegangsreferenties in uw client-side code plaatst, kan elke gebruiker die referenties zien en uw database compromitteren (gegevens injecteren, overnemen, verwijderen, enz.) Alleen al om deze reden, je hebt een opstelling nodig die gegevens van de voorkant naar de achterkant doorgeeft en vice versa zonder dat het websiteverkeer onder de motorkap kan kijken. Zoals ik het begrijp, is dit een functionaliteitsniveau dat Github Pages je niet kan bieden.

Zie deze thread voor meer informatie over databasebeveiliging aan de clientzijde: https://softwareengineering.stackexchange.com/questions/180012/is-there-any-reason-not-to-go-directly-from-client- side-javascript-naar-een-database

Een mogelijke oplossing is om uw statische kant te gebruiken om te linken naar een service van derden. U kunt bijvoorbeeld een Google-formulier insluiten in een html-pagina. Dat formulier kan linken naar een Google-spreadsheet. Dat blad kan op internet worden gepubliceerd en zo worden ingesteld dat het automatisch wordt bijgewerkt. Uw Github-paginasite kan verwijzen naar de openbare versie van die pagina en (met vertraging) bijwerken wanneer wijzigingen worden ingediend. Dit type installatie is onhandig (ik neem aan dat Google-bladen traag worden als ze te groot worden) en moet met de nodige voorzichtigheid worden gebruikt, aangezien een slecht ontworpen vorm van deze soort een spammagneet kan zijn. Om nog maar te zwijgen van het feit dat iedereen die naar uw client-side-code kijkt, de openbare versie van uw Google-blad kan vinden, die de indieningstijd en gebruikersgegevens zal bevatten als u deze verzamelt. Als het echter zorgvuldig wordt gebruikt, kan het werken voor de hierboven genoemde use case.


Antwoord 3, autoriteit 20%

De HTTP REST API van Github gebruiken: https://developer.github.com/v3/
Men kan een json-bestand of een sqllite-bestand vastleggen/bijwerken in een github-pagina’s repo via browser js.


Antwoord 4, autoriteit 11%

Afhankelijk van uw behoeften, kunt u GithubDBproberen

Uit hun documenten:

Heb je ooit Github als je privédatabase willen gebruiken, nu kan dat.

Waarom zou ik Github als mijn database willen gebruiken?

Goede vraag. Ontwikkelaars hebben veel keuze uit verschillende databases,
GithubDB maakt echter gebruik van alle functies waar je van bent gaan houden
Github.

Logging (Met Github kun je snel je commits bekijken en de
schrijven en updates voor uw verzoek).

Visualisatie (Github biedt geweldige tools om het binnenkomende te visualiseren
aantal lees-/schrijfbewerkingen).

Persistentie (met Github kunt u teruggaan naar vroege stadia van uw gegevens)
en kijk hoe het is geëvolueerd).

Beveiliging (met Github erft uw database dezelfde standaarden van)
Github).

Beschikbaarheid (Github staat bekend als down, maar laten we eerlijk zijn, dat is het ook)
goed genoeg, tenzij je Facebook bent).

Other episodes