URL Shortener algoritme?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior C# .NET Fullstack Developer in de wolken!

Bedrijfsomschrijving Wij zoeken voor deze klant van ons naar een Junior C# Software Developer! Het bedrijf richt zich tegenwoordig steeds meer op de Cloud middels het Azure platform en wat zij specifiek doen is het maken van software en daarop software applicaties welke ingezet worden binnen het bedrijfsleven. Het team is momenteel druk bezig om diverse kantoorapplicaties- en systemen te koppelen aan het grote (internationale) Cloud platform zodat alles één groot goed werkend geheel wordt. Er komen veel leuke nieuwe uitdagingen aan en vooral voor een Junior Software Developer kan je hier een flinke sprong in het diepe maken. Je

Bekijk vacature »

Java Software Developer Spring Hibernate

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is expert in informatie- en communicatieoplossingen. Ben jij een Senior Java Software Engineer? Heb jij ervaring met Java? Vaste baan: Java Software Developer Spring Hibernate Linux 3.800 - 5.500 Java Software Engineer Zij zijn een financieel gezond en onafhankelijk bedrijf, met een erg leuke informele werksfeer. Er is ruimte voor flexibiliteit en eigen input. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het

Bekijk vacature »

Ervaren Node JS Developer Backend

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij ontwikkelen software apps. Ben jij een enthousiaste Node.JS developer? Heb jij ervaring met Node.JS? Vaste baan: Node JS Developer Backend Transcript 3.000 - 4.500 Node JS Developer Op dit moment zijn zij een scale-up. Zij zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Zij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen het bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en

Bekijk vacature »

C# .NET Software Ontwikkelaar

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever levert software voor bedrijfssystemen. Ben jij een ervaren developer? Heb jij ervaring met .NET en C#? Vaste baan: C# .NET Software Ontwikkelaar Agile Scrum 3.200 - 5.000 C# .NET Software Developer Deze werkgever is specialist in documentcreatie. Deze werkgever heeft ruim ervaring met huisstijlautomatisering, het vereenvoudigen van documentcreatie en optimaliseren van document-workflow. Deze werkgever is trotse ontwikkelaar en leverancier van flexibele software waarmee eenvoudig altijd in huisstijl gewerkt wordt. Bij bij hun werk je aan onze

Bekijk vacature »

Servicetechnicus Mediatechniek

PRG is 's werelds grootste technologieleverancier in de entertainment- en evenementenindustrie. Bovendien heeft PRG de grootste voorraad evenemententechnologie te huur. PRG biedt een volledig scala van diensten aan klanten in livemuziek, TV en film, broadway, sport, gaming, corporate en live events. Klanten en partners vertrouwen op PRG's innovatie, ervaring en diepgaande expertise in audio, video, licht, rigging, virtuele producties en XR, evenals podiumsystemen en kinetica om hun producties tot leven te brengen. Met maar dan 62 kantoren wereldwijd kan PRG zijn diensten ook internationaal aanbieden. Om ons nieuwe magazijn in Kerpen - Keulen (Duitsland) te versterken en uit te bouwen,

Bekijk vacature »

Frontend Developer JavaScript React Vue

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een full-service digital agency. Ben jij een front-end developer? Heb je ervaring in technisch complexe projecten? Vaste baan: Frontend Developer JavaScript Vue Node 3.000 - 4.200 Frontend Developer Deze werkgever is de Drupal specialist in Nederland. Deze werkgever heeft meerdere vestigingen door Nederland en België heen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wat ga je precies doen?: Voor

Bekijk vacature »

Big Data AWS Developer (INTERIM)

Wat ga je doen? Work closely with product, data science and software engineering team on a development of a large-scale machine learning system (first version of the system is live already!) Design, implement, test, deploy and monitor data storage components (e.g. AWS DynamoDB tables), data ingest components (e.g. AWS Kinesis data streams), data transformation pipelines (e.g. implemented with AWS Lambda) that support online (real-time) operations of a machine learning system Design, implement, test, deploy and monitor interfaces (e.g. API Gateway) of the system with the external components. Support integration of the AWS system with the external components (e2e integration &

Bekijk vacature »

Software C# .Net Developer Bijzondere branche!

Bedrijfsomschrijving Deze organisatie maakt voor een hele leuke branche mooie software applicaties en ze breiden uit! Wij zijn op zoek naar een C# .Net Software Developer met enkele jaren werkervaring. Heb jij ervaring met internationale software systemen, met het ontwikkelen van grote webapplicaties en kan jij ook nog eens kwalitatief goede code schrijven in C#? En vind je het leuk om aan tastbare applicaties te werken waar je waarschijnlijk zelf op vakantie ook wel eens mee te maken hebt gehad? Dan zou dit mogelijk een leuke nieuwe werkgever voor jou kunnen zijn! Naast het werk is het ook vooral gezellig

Bekijk vacature »

C# .NET Software Ontwikkelaar Optische Instrumente

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij vervaardigen optische en fotografische instrumenten en apparatuur. Wil jij werken als Software Engineer? Heb jij ervaring met verschillende programmeertalen? Vaste baan: C# .NET Software Ontwikkelaar Optische Instrumenten HBO 2.800 - 4.300 Software Engineer Deze werkgever is een bedrijf dat machines ontwerpt voor operaties. Kwaliteit staat bij ons hoog in het vaandel! Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wat wordt

Bekijk vacature »

E Solutions Developer BizTalk Productiebedrijf

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een belangrijke producent van bouwproducten Ben jij een E-Solutions Developer? Heb jij ervaring als E-Solutions Developer? Vaste baan: E Solutions Developer BizTalk Productiebedrijf HBO 3.000 - 4.300 E Solutions Developer Deze werkgever is een groot internationaal bedrijf. Wij ontwikkelen producten op gebied van raambekleding / zonwering. Ben jij toe aan een nieuwe uitdaging? Wil jij graag meewerken aan het ontwikkelen van hoogstaande kwalitatieve producten? zij kennen een open en prettige bedrijfscultuur. Naast het ontwikkelen

Bekijk vacature »

Ervaren Android Developer Kotlin

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij vertalen complexe problemen naar intuïtieve oplossingen. Ben jij een enthousiaste software developer? Heb jij ervaring met Android? Vaste baan: Android Developer Kotlin Atlassian 3.000 - 4.200 Android Developer Op dit moment zijn zij een scale-up. Zij zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Zij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen het bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en gezellige bedrijfscultuur.Bij

Bekijk vacature »

HBO WO PHP Software Developer JavaScript

Over de werkgever: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is actief in software ontwikkeling, domeinregistratie en internationale online marketing. Ben jij een ervaren PHP Developer? Heb je veel kennis van MySQL? Vaste baan: PHP Developer CSS MySQL 2.700 - 4.000 PHP Developer Deze werkgever is een softwarebedrijf, die mooie eigen innovatieve applicaties maakt. Je komt te werken in een ervaren team. Zij bieden een uitdagende en informele werksfeer met volop mogelijkheden om je verder te ontwikkelen met behulp van trainingen en certificeringen. Deze werkgever is een

Bekijk vacature »

Mendix Ontwikkelaar Consultant Outsystems

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een allround ICT bedrijf. Ben jij een veelzijdige Mendix Consultant? Heb je ervaring met Outsystems of Bettyblocks? Vaste baan: Mendix Consultant Outsystems Bettyblocks 3.500 - 5.500 Mendix Consultant Ons bedrijf is verantwoordelijk voor alle ICT binnen onze groep. En dat betekent: zorgen voor slimme oplossingen en een soepele werkwijze. Ons bedrijf staat voor teamwork en wederzijdse loyaliteit. Deze werkgever heeft duurzame werkrelaties met elkaar, onze klanten en partners. We vormen een hechte familie van

Bekijk vacature »

Android (mobile) Developer met JAVA in de regio Al

Bedrijfsomschrijving Mobile Development en Ops Engineering gaan hand in hand bij deze organisatie dat een hoog verantwoordelijkheidsgevoel draagt. Als organisatie ontwikkelt zij dan ook veelal mobiele applicaties ter inspiratie en ondersteuning van belangrijke sectoren in Nederland. Met het technische team van gepassioneerde developers en engineers voeren ze dagelijks veelal diverse, inspirerende en complexe werkzaamheden uit. Door gebruik van innovatieve software en de nieuwste platformen binnen de sector is deze klant dan ook zeker als vooruitstrevend te betitelen waar zijn enorm veel waarde aan hecht. De organisatie is momenteel zeer succesvol en zet mooie stappen richting de toekomst en daarom kunnen

Bekijk vacature »

Android mobile ontwikkelaar gezocht!

Bedrijfsomschrijving Mijn klant is gevestigd in Veenendaal en een belangrijke speler binnen de retail in Nederland. Vanuit het kantoor in Veenendaal worden er dagelijks vele goederenstromen beheerd en gedistribueerd. Binnen het IT team zijn momenteel 25 specialisten actief. Functieomschrijving Als Android Developer ga jij je bezighouden met de ontwikkeling, implementatie en onderhoud van de Android app/platform. Je denkt mee met de business in functionele eisen die vertaald worden naar behoeften van klanten. Je werkt binnen een multidisciplinair team met Scrum Masters, Product Owners, IOS & Android Developers en UX Designers. Concreet ben je verantwoordelijk voor: documentatie, programmeren van aanpassingen binnen

Bekijk vacature »

Pagina: 1 2 volgende »

Wouter De Schuyter

Wouter De Schuyter

18/04/2012 18:05:10
Quote Anchor link
Hallo,

Ik heb onlangs dit domein gekocht en zou dus een persoonlijke url shortener willen maken.

Nu zou ik een algoritme nodig hebben voor de URL's te linken in de DB, dit kan uitraard gewoon met cijfers (id van de url bv) maar dat is niet echt netjes en gaat na verloop van tijd ook niet meer effectief zijn bv meer dan 10000 zijn al meteen 5 characters extra terwijl je met 4 cijfers & letters veel meer mogelijkheden hebt.

Een random string genereren met een lijst characters is een optie, maar dan zou ik voor elke mogelijkheid moeten kijken of dit nog niet in de DB bestaat en dat lijkt mij ook niet de ideale oplossing, stel dat er 100 mogelijke combinaties zijn en 99 zijn er al van gebruikt en het script moet dan telkens een nieuwe string genereren en vergelijken.. Dat kan niet de manier zijn.. Of wel?

Iemand suggesties hoe je dit het best aanpakt?
 
PHP hulp

PHP hulp

26/05/2022 00:59:37
 
Erwin H

Erwin H

18/04/2012 18:22:57
Quote Anchor link
Weet je wat binair is? Wat decimaal is? Wat hexadecimaal is?
En voornamelijk hoe je van een decimaal getal naar bijvoorbeeld een hexadecimaal getal gaat?
Nu, stel dat je nu een stelsel hebt voor 62 (0-9a-zA-Z). Dan worden de decimale getallen in dst stelsel dus:
0 - 0
9 - 9
10 - a
11 - b
60 - Y
61 - Z
62 - 10
63 - 11
123 - 1Z
124 - 20
Zo kan je dus al een heel eind verder gaan en toch gewoon je auto_increment gebruiken in je database.
 
Wouter De Schuyter

Wouter De Schuyter

18/04/2012 18:52:35
Quote Anchor link
Dat heb ik ook net gezien, maar er zijn er die claimen tot 12.000.000 te kunnen gaan met 4 chars, dat kan niet met hexadecimaal :/
 
Erwin H

Erwin H

18/04/2012 19:02:10
Quote Anchor link
Ik had het ook niet over hexadecimaal, maar een stelsel met 62 karakters (sorry, ik heb daar geen naam voor) en 62 tot de 4e = 14.776.336
Dat komt wel aardig in de buurt volgens mij...
 
Jurgen B

Jurgen B

18/04/2012 19:08:14
Quote Anchor link
Dat is inderdaad wat ik ook wilde zeggen (had Erwins reactie ook verkeerd gelezen in eerste instantie). Op die manier ben je wel even bezig voor je aan je 5e character zit.
 
Wouter De Schuyter

Wouter De Schuyter

18/04/2012 19:24:40
Quote Anchor link
Ok nu ben ik mee..
Maar hoe wil je die juist genereren en checken of ze al bestaan?
 
Jurgen B

Jurgen B

18/04/2012 19:44:18
Quote Anchor link
Als je weet hoe je van decimaal naar hexadecimaal (16 tallig stelsel) gaat kan je deze methode ook toepassen op een 62 tallig stelsel. Bij een nieuwe aanvraag voer je een nieuwe regel in de database en zet je het nieuwe id om naar je 62 tallig stelsel. Om te kijken of de url al bestaat zal je denk ik letterlijk op de url moeten zoeken, maar misschien denk ik te moeilijk en is er een efficienter/makkelijker alternatief.
Gewijzigd op 18/04/2012 19:44:45 door Jurgen B
 
Erwin H

Erwin H

18/04/2012 19:44:30
Quote Anchor link
Je kan gewoon een auto_increment laten lopen in je database die je omrekent naar een 4 karakter string. Op zich niet zo moeilijk, hoewel je wel even wat tijd zal moeten besteden aan hoe je van een getal naar de juiste letter gaat.
 
- SanThe -

- SanThe -

18/04/2012 23:02:32
Quote Anchor link
Jurgen B op 18/04/2012 19:44:18:
... kan je deze methode ook toepassen op een 62 tallig stelsel ...


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function omrekenen($getal, $soort, $return = '')
{

    $chars = array_merge(range('0','9'),range('a','z'),range('A','Z'));
    switch($soort)
    {
        case
10:    if($getal > 61)
                    {

                        $return .= omrekenen(floor($getal / 62), $soort, $return);
                    }

                    $return .= $chars[($getal) % 62];
                    return $return;
        case
62:    for($i=0; $i<strlen($getal); $i++)
                    {

                        $search = (ord($getal[$i]) < 64) ? ord($getal[$i])-48 : $getal[$i];
                        $return += pow(62, strlen($getal)-$i-1) * array_search($search, $chars, true);
                    }

                    return $return;
        default:
    return 'Error';
    }
}


$random = rand(0,14776335);
$code = omrekenen($random, 10);
$getal = omrekenen($code, 62);
echo $random . ' => ' . $code . ' => ' . $getal . '<br />';
?>
 
Chris -

Chris -

18/04/2012 23:20:41
Quote Anchor link
Netjes SanThe :)
 
Wouter De Schuyter

Wouter De Schuyter

19/04/2012 09:56:05
Quote Anchor link
De oplossing van SanThe is dan nog de beste, want als ik dechex() gebruik op het ID kan je URL voorspellen..

MAAR

Stel ik heb 13.000.000 links gegeneerd met het script van SanThe.. Dan heb je 90% kans dat de URL al bestaat, hoe los je dit op? Elke keer checken of hij al in de DB zit en indien wel opnieuw genereren?



Vb: bij het generen van 10K items heb ik al meteen 6 duplicates http://pastie.org/3815467
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
    set_time_limit(60);
    error_reporting(E_ALL);

    function
calculate($getal, $soort) {

        $return = '';
        $chars = array_merge(range('0','9'), range('a','z'), range('A','Z'));

        switch($soort) {
            case
10:
                if($getal > 61) {
                    $return .= calculate(floor($getal / 62), $soort, $return);
                }

                $return = $chars[($getal) % 62];

                return $return;
            break;

            case
62:
                for($i = 0; $i < strlen($getal); $i++) {
                    $search = (ord($getal[$i]) < 64) ? ord($getal[$i])-48 : $getal[$i];
                    $return += pow(62, strlen($getal)-$i-1) * array_search($search, $chars, true);
                }

                
                return $return;
            break;

            default:

                return false;
            break;
        }
    }




    $array = $found = array();

    for($j = 0; $j < 10000; $j++) {
        $string = '';
        for($i = 0; $i < 4; $i++) {
            $string .= calculate(rand(0,14776335), 10);
        }


        echo $string . " ";
        if(!in_array($string, $array)) {
            $array[] = $string;
        }

        else {
            $found[] = $string;
        }
    }


    echo "\n\n\n";

    echo "Found " . count($found) . " duplicates (" . round((count($found) / (count($found) + count($array))) * 100, 2) . "%) on " . (count($found) + count($array)) . " items.";
    echo "\n\n";
    echo "Duplicates: \n";

    foreach($found as $item) {
        echo $item . "\n";
    }

?>
Gewijzigd op 19/04/2012 10:44:46 door Wouter De Schuyter
 
- SanThe -

- SanThe -

19/04/2012 11:06:44
Quote Anchor link
@Wouter: Waarom heb je de function niet correct overgenomen? Zoals jij het nu hebt zal ie niet correct werken.
 
Chris -

Chris -

19/04/2012 11:50:53
Quote Anchor link
Je zou eventueel ook 25 miljoen verschillende codes in de database kunnen plaatsen, met een "in gebruik" veld waar je een key op zet. Tijdens het invoeren van een URL voer je een RAND() query uit op de tabel waar "in gebruik" false is.
 
Wouter De Schuyter

Wouter De Schuyter

19/04/2012 12:26:49
Quote Anchor link
SanThe: ziezo met jouw code, maar krijg (logisch) nog steeds duplicates :/

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
    set_time_limit(60);
    
    function
omrekenen($getal, $soort, $return = '')
    {

        $chars = array_merge(range('0','9'),range('a','z'),range('A','Z'));
        switch($soort)
        {
            case
10:    if($getal > 61)
                        {

                            $return .= omrekenen(floor($getal / 62), $soort, $return);
                        }

                        $return .= $chars[($getal) % 62];
                        return $return;
            case
62:    for($i=0; $i<strlen($getal); $i++)
                        {

                            $search = (ord($getal[$i]) < 64) ? ord($getal[$i])-48 : $getal[$i];
                            $return += pow(62, strlen($getal)-$i-1) * array_search($search, $chars, true);
                        }

                        return $return;
            default:
    return 'Error';
        }
    }




    $array = $found = array();
    for($j = 0; $j < 10000; $j++) {
        $string = omrekenen(rand(0,14776335), 10);

        echo $string . " ";
        if(!in_array($string, $array)) {
            $array[] = $string;
        }

        else {
            $found[] = $string;
        }
    }


    echo "\n\n\n";

    echo "Found " . count($found) . " duplicates (" . round((count($found) / (count($found) + count($array))) * 100, 2) . "%) on " . (count($found) + count($array)) . " items.";
    echo "\n\n";
    echo "Duplicates: \n";

    foreach($found as $item) {
        echo $item . "\n";
    }

?>


@Chris: zou dat de correcte oplossing zijn? Zou het zo zijn dat bit.ly het bv doet? Lijkt mij nogal omslachtig..
Gewijzigd op 19/04/2012 12:46:18 door Wouter De Schuyter
 
Kees Schepers

kees Schepers

19/04/2012 12:36:55
Quote Anchor link
Ik zou het ook met noSQL opslaan, met MySQL ga je denk ik wel performance problemen krijgen nadat je een paar tientallen miljoenen url's erin hebt staan ;)
 
- SanThe -

- SanThe -

19/04/2012 14:52:26
Quote Anchor link
Zo krijg je geen duplicates meer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    for($j = 0; $j < 10000; $j++) {
        $string = omrekenen(rand(0,14776335), 10);

        echo $string . " ";
        if(!in_array($string, $array)) {
            $array[] = $string;
        }

        else {
            $j--;
        }
    }

?>
Gewijzigd op 19/04/2012 14:52:46 door - SanThe -
 
Wouter De Schuyter

Wouter De Schuyter

19/04/2012 15:25:54
Quote Anchor link
@Kees wat zou dat voor problemen kunnen geven? MySQL?

@SanThe: hehe, dat is waar. Maar ik ga niet alle hashes uit de DB laden in een array en dan kijken of ze in die array zitten of wel? Stel dat je 14 miljoen records hebt kan dat niet echt performant zijn?
 
- SanThe -

- SanThe -

19/04/2012 15:34:04
Quote Anchor link
Als het in een database staat zou ik het zo ongeveer doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
do
{
    // genereer code
    // SELECT code

}
while (mysql_num_rows() == 1);
// INSERT code
?>
 
Gerhard l

gerhard l

19/04/2012 15:34:54
Quote Anchor link
Ik gebruik de manier van Chris Horeweg tot zover loopt het vloeiend (nog maar 900 urls verkort).
Maar ik denk dat de query wel sneller is dan alle bij langs lopen en kijken of ze al bestaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT short_code FROM short_list WHERE used='0'  ORDER BY RAND() LIMIT 1
Gewijzigd op 19/04/2012 15:35:28 door gerhard l
 
Kees Schepers

kees Schepers

19/04/2012 15:40:20
Quote Anchor link
Wouter DS op 19/04/2012 15:25:54:
@Kees wat zou dat voor problemen kunnen geven? MySQL?


Omdat je met MySQL veel sneller en lastiger moet opschalen als je tientallen miljoenen URL's opslaat. Tevens zal het niet goed performen als je over miljoenen URL's stats gaat genereren.
 
Pim -

Pim -

19/04/2012 15:40:27
Quote Anchor link
Je kan evt nog een hash toevoegen aan de string, zodat het moeilijk/lastig wordt URLs te raden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function encode($id, $hashSize = 100)
{

    $privateKey = 16546354324; // Moet je even checken wat de MAX_LONG waarde is
    $num = $id * $hashSize + ($id * $privateKey) % $hashSize;
    return base_convert($num, 10, 62);
}
function
decode($string, $hashSize = 100)
{

    $privateKey = 16546354324;
    $num = (int) base_convert($string, 62, 10);
    $hash = $num % $hashSize;
    $id = ($num - $hash) / $hashSize;
    if($hash != ($id * $privateKey) % $hashSize)
        return false; // Foute hash
    return $id;
}

?>

Door hashSize te variëren kan je je URL veiliger maken. hashSize = 100 betekent dat je max 100 pogingen nodig hebt om de URL te gokken als je het ID weet.

Deze code werkt trouwens niet omdat base_convert maart to base 36 gaat, maar het idee lijkt me duidelijk.


Toevoeging op 19/04/2012 15:41:49:

@Kees,
Maar noSQL is dan toch niet per se de beste vervanging? Een simpele key->value DB lijkt me een stuk nuttiger.
 

Pagina: 1 2 volgende »



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.