Door
Onbekende gebruiker
op 23-11-2017 22:59
gewijzigd op 29-04-2020 23:19
4.703 views
Hallo,
Zoals je hier zien staat er een upload page waar je filmpjes kunt uploaden.
Nu zou ik graag willen dat als iemand een filmpje upload dat er automatisch na de /..... tekst word aangemaakt als iemand een filmpje upload.
Ik neem aan dat je deze in de database opslaat met een oplopend (auto increment) ID?
In dat geval is een getal wel leuk en aardig, maar het is erg voorspelbaar, iets wat je niet altijd wilt hebben. Daarom moet je een hash genereren aan de hand van dat ID-nummer.
Een kwestie van de hele mikmak downloaden, en beginnen bij de 'Quick Example'. (of je moet met Composer werken, dan mag je al met Getting Started beginnen).
Je kunt ook gewoon een willekeurige string aanmaken, en die ook in de database opslaan (even een unique constraint d'r op, zodat je zeker wat dat ie uniek is, en dat het lekker snel zoekt). Hoef je niet te goochelen met een hash-die-eigenlijk-niet-eens-een-hash-is-omdat-je-m-blijkbaar-kunt-reversen. Als je dan een case-insensitive collatie hebt kun je echter geen hoofd- en kleine letters door elkaar gebruiken.
Een random string kun je op 100-en verschillende manier maken, en als het echt super random moet kan het altijd beter, maar heel eenvoudig kan het bijvoorbeeld zo:
<?php
$n = 10; //lengte van de code
//optie 1: via sha1
//enkel hex karakters (0-9 en a-f)
print(substr(sha1(time() . rand()),0,$n));
//alfa+numeriek (0-9 en a-z)
print(substr(base_convert(sha1(time() . rand()),16,36),0,$n));
//optie 2: via rand
//hiermee heb je meer controle over de gebruikte karakters
//als je bijvoorbeeld wilt voorkomen dat 1 en l tot verwarring leiden
$chars = '23456789abcdefghijkmnpqrstuvwxyz';
$max = strlen($chars) - 1;
$s = '';
for($i = 0; $i < 10; $i++) $s .= $chars[rand(0,$max)];
print($s);
?>
?
Onbekende gebruiker
24-11-2017 13:48
gewijzigd op 24-11-2017 14:26
Nog niet heel verstand van PHP, Hier PHP bestand wat ik gemaakt heb.
Hoe zou ik dat hier in moeten verwerken?
Je kunt ook gewoon een willekeurige string aanmaken, en die ook in de database opslaan (even een unique constraint d'r op, zodat je zeker wat dat ie uniek is, en dat het lekker snel zoekt).
Dat kan ook, maar volgens mij is de oplossing die ik gaf een hash die berekend is aan het ID. Dus hoef je niet een aparte hash op te slaan. Dat zou het een stuk eenvoudiger maken.
Of dat echt zo is weet ik niet, maar dat lijkt wel de intentie als je ID-nummers wilt maskeren.
Je hoeft dan alleen maar de encode-functie hoeven toe te passen op het ID, en je bent er.