YouTube random unique code how to (f.e. ntFWXtsojBA)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: 1 2 volgende »

Jaron Pietersen

Jaron Pietersen

17/08/2010 23:27:42
Quote Anchor link
Hoe genereert Youtube de unieke code voor een filmpje?
Gewijzigd op 19/08/2010 11:36:15 door B a s
 
PHP hulp

PHP hulp

18/12/2024 06:00:08
 
Niek s

niek s

17/08/2010 23:28:56
Quote Anchor link
Waarschijnlijk gewoon een willekeurige waarde genereren
 
Jaron Pietersen

Jaron Pietersen

17/08/2010 23:30:58
Quote Anchor link
Dat moet ik dan denk ik doe net rand() of niet?
Maar hoe zorgt Youtube ervoor dat de codes uniek zijn?
 
Roel -

Roel -

17/08/2010 23:32:16
Quote Anchor link
Euhm, zo?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// Tekens opgeven
$tekens = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
// Code aanmaken
$code = '';
for ($i = 0; $i < rand(6, 10); $i++) {
    $code .= $tekens[rand(0, count($tekens) - 1)];
}

// Klaar :-)
echo $code;
?>
 
Jonathan de Vries

Jonathan de Vries

17/08/2010 23:39:44
Quote Anchor link
En om te kijken of de code uniek is maken ze een connectie met de database en controleren of de gegenereerde code al in gebruik is... zo ja? nieuwe code en weer controleren, zo nee .. wegschrijven die hap.
 
Niek s

niek s

17/08/2010 23:42:48
Quote Anchor link
Makkelijk is uniqid()

Als je een uniek ID wil genereren gebruik je die methode ;)

uniqid

De 2e parameter zou dan in jouw geval nog fijner zijn
 
Roel -

Roel -

17/08/2010 23:43:42
Quote Anchor link
Jonathan de Vries op 17/08/2010 23:39:44:
En om te kijken of de code uniek is maken ze een connectie met de database en controleren of de gegenereerde code al in gebruik is... zo ja? nieuwe code en weer controleren, zo nee .. wegschrijven die hap.


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
<?php
// Tekens opgeven
$tekens = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
// Code aanmaken
while($goed != 1) {
    $code = '';
    for ($i = 0; $i < rand(6, 10); $i++) {
        $code .= $tekens[rand(0, count($tekens) - 1)];
    }

    if (mysql_num_rows("SELECT id FROM filmpjes WHERE code = '".$code."'") == 0) {
        $goed = 1;
    }
}

// Klaar, inserten maar :-)
echo $code;
?>
 
- Raoul -

- Raoul -

17/08/2010 23:44:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= mysql_query("SELECT * FROM videos WHERE code='".$code."'");

if (mysql_num_rows($sql) > 0){
//bestaat
}else{
//niet bestaat
}
?>
Gewijzigd op 17/08/2010 23:45:22 door - Raoul -
 
Jaron Pietersen

Jaron Pietersen

17/08/2010 23:47:27
Quote Anchor link
Zo goed?
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
<?php
function rand_code($database, $veld)
{

    $tekens = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
    while($goed != 1)
    {

        $code = '';
        for ($i = 0; $i < rand(6, 10); $i++) {
            $code .= $tekens[rand(0, count($tekens) - 1)];
        }

        if (mysql_num_rows("SELECT ".$veld." FROM ".$database." WHERE ".$veld." = '".$code."'") == 0) {
            $goed = 1;
        }
    }

    return $code;
}

?>
 
- SanThe -

- SanThe -

17/08/2010 23:50:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo MD5(microtime());
?>
 
Jaron Pietersen

Jaron Pietersen

17/08/2010 23:53:56
Quote Anchor link
@SanThe
Ik win graag een korte code dus vandaar dat MD5 niet bepaald geschikt is.
 
Danny Roelofs

Danny Roelofs

17/08/2010 23:58:20
Quote Anchor link
Offtopic:

Jonathan de Vries op 17/08/2010 23:39:44:
En om te kijken of de code uniek is maken ze een connectie met de database en controleren of de gegenereerde code al in gebruik is... zo ja? nieuwe code en weer controleren, zo nee .. wegschrijven die hap.


Dat lijkt me nogal vreemd, als ik dan zo lees , en dat zal al gedateerd zijn dat ze meer als 120.000.000 video's hebben en dat er dagelijks dan circa 200.000 erbij komen

Maar hoe dan ook, 120.000.000 regels afgaan in de database om te zien of die gegenereerde code al niet bestaat.

Ik denk eerder dat ze op basis van de laatste ID een code genereren, en wellicht zit er nog wel meer info in dan behalve op basis van de ID maar als we het alfabet nemen, en dan 26 x de kleine en 26x de groter letters gebruiken kan ik al minstens
een code genereren dat mijn ID al tot 705.835.478.266.880 kan lopen.

Maar dan heb ik wel een ID van iets als v=aBacaDDaeazaXaaRaXaaaaaaBc

Dus ik denk dat je een aanname doet, dan dat het feit is.
 
Jonathan de Vries

Jonathan de Vries

18/08/2010 00:17:42
Quote Anchor link
@Danny,

Ja ga er ook niet vanuit dat ze het op deze manier doen...
Zou een drama kwa laadtijd worden.

Ik geef meer een oplossing voor de TS, lijkt mij niet dat hij duizenden posts per dag krijgt...
 
Jaron Pietersen

Jaron Pietersen

18/08/2010 00:17:46
Quote Anchor link
@Danny,

Youtube / Google gebruikt een zelf ontwikkelde MySQL die sneller en veilig is dan die standaard te downloaden is.
Dus die werkt 1000X sneller en veilig dan de normale.
 
Niek s

niek s

18/08/2010 00:31:37
Quote Anchor link
kap nou met die crap :(

uniqid() heeft microtime preciesie. Iedere microseconde die voorbij gaat zorgt voor een andere, unieke, ID. Dan kan je de more_entropy nog op true zetten om er voor te zorgen dat er op het eind nog een extra willekeurige tekenreeks gezet word.

NO WAY dat dat ooit dubbel KAN zijn. Dan zou er op dezelfde microseconde meerdere aanvragen zijn, die dan toevallig ook nog in dezelfde random tekenreeks terecht komen voor de more_entropy flag..

Beetje kansloos.
 
Jaron Pietersen

Jaron Pietersen

18/08/2010 00:48:32
Quote Anchor link
Dus ik kan beter uniqid gebruiken?
 
Johan Dam

Johan Dam

18/08/2010 08:30:48
Quote Anchor link
Hoezo zou dat erg traag zijn? Mits de te zoeken veld een index is (zoals unique of een sleutel) kan mysql heel erg snel bewaarde waardes vinden omdat het ze niet allemaal gaat vergelijken maar met sprongen de 1ste teken gaat vergelijken.

Het begint met een G, order de lijst alfabetisch an ga kijk naar de eerste, begint dat met een G? Nee, nou 1000 regels verderop dan, Nee, dat is een B, weer 1000 verderop....

de 1000 is hier maar een gok, ik had ergens anders gehoord dat het de lijst steeds door de helft word gedeeld totdat het juiste waarde gevonden is.

@Jarson, het maakt niet uit hoe youtube het doet, we kunnen gokken, misschien maken ze wel een hash van het ID nummer dat altijd 8 tekens lang is, zoals crc32 en crc32b, netzoals MD5 altijd 32 tekens lang zijn, zijn die altijd 8 tekens lang,

Jij wilt een een code genereren die vriendelijk is voor het oog zonder dat je er informatie mee verschaft aan de gebruiker maar nog steeds als sleutel dient voor de db. Bovengenoemde oplossingen werken daarmee prima, uniqid ook, een hash met crc32b ookwel (zou nog steeds die db controle doen, gezien een hash niet perse uniek in)

Wat vind jij het makkelijkte? Wat past het beste bij jouw eisen? Vraag je dat eerst af en ga dan pas kijken wat youtube miss wel of miss niet doet.
 
Niek s

niek s

18/08/2010 19:44:11
Quote Anchor link
Weetje waarom uniqid zo heet?
omdat het een unique ID geeft..
 
Aad B

Aad B

18/08/2010 20:14:07
Quote Anchor link
uniek: session_id()
 
- Ariën  -
Beheerder

- Ariën -

18/08/2010 20:16:43
Quote Anchor link
Ik denk dat ze eerder gewoon ID's gebruiken die oplopen, en dat ze die met een tof algoritme verbergen omdat niemand wat aan ID's heeft.

Zo kan je vaak de volgorde van een video's bepalen van iemand, iets wat niet echt altijd wenselijk is.

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
64
65
66
67
68
69
<?php
function rand_uniqid($in, $to_num = false, $pad_up = false, $passKey = null)
{

    $index = "bcdfghjklmnpqrtvwxyz_-0123456789BCDFGHJKLMNPQRTVWXYZ";
    if ($passKey !== null) {
        // Although this function's purpose is to just make the
        // ID short - and not so much secure,
        // you can optionally supply a password to make it harder
        // to calculate the corresponding numeric ID

      
        for ($n = 0; $n<strlen($index); $n++) {
            $i[] = substr( $index,$n ,1);
        }

 
        $passhash = hash('sha256',$passKey);
        $passhash = (strlen($passhash) < strlen($index))
            ?
hash('sha512',$passKey)
            :
$passhash;
 
        for ($n=0; $n < strlen($index); $n++) {
            $p[] =  substr($passhash, $n ,1);
        }

      
        array_multisort($p,  SORT_DESC, $i);
        $index = implode($i);
    }

 
    $base  = strlen($index);
 
    if ($to_num) {
        // Digital number  <<--  alphabet letter code
        $in  = strrev($in);
        $out = 0;
        $len = strlen($in) - 1;
        for ($t = 0; $t <= $len; $t++) {
            $bcpow = bcpow($base, $len - $t);
            $out   = $out + strpos($index, substr($in, $t, 1)) * $bcpow;
        }

 
        if (is_numeric($pad_up)) {
            $pad_up--;
            if ($pad_up > 0) {
                $out -= pow($base, $pad_up);
            }
        }

        $out = sprintf('%F', $out);
        $out = substr($out, 0, strpos($out, '.'));
    }
else {
        // Digital number  -->>  alphabet letter code
        if (is_numeric($pad_up)) {
            $pad_up--;
            if ($pad_up > 0) {
                $in += pow($base, $pad_up);
            }
        }

 
        $out = "";
        for ($t = floor(log($in, $base)); $t >= 0; $t--) {
            $bcp = bcpow($base, $t);
            $a   = floor($in / $bcp) % $base;
            $out = $out . substr($index, $a, 1);
            $in  = $in - ($a * $bcp);
        }

        $out = strrev($out); // reverse
    }
 
    return $out;
}

?>


Uitvoer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
rand_uniqid(9007199254740989);
// heeft als returnwaarde: 'PpQXn7COf'

rand_uniqid('PpQXn7COf', true);
// heeft als returnwaarde: '9007199254740989'
?>


Edit:
Bron vermelding aangepast


Bron: 2e reactie uniqid
Gewijzigd op 19/08/2010 11:31:24 door B a s
 
Jens erd

Jens erd

18/08/2010 22:24:51
 

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.