Avatar billede jens12 Nybegynder
11. september 2006 - 17:32 Der er 16 kommentarer og
1 løsning

Kun tal

Hej i eksperter (: ..
Jeg har et community og hver bruger har et galleri..
Og når brugeren oploader et billede bliver billedets navn lavet om til :
$uniqueFile = $_SESSION['id'] . "_" . md5(uniqid(rand(), true));
Dette giver resultat i over 32 tegns filnavn..Jeg vil gerne havde lavet det om til, sån at det kun er tal og kun 7 tegn.
Hvordan kan det gøres ?
Avatar billede nielle Nybegynder
11. september 2006 - 18:08 #1
F.eks. sådan:

$uniqueFile = $_SESSION['id'] . "_" . md5(uniqid(rand(), true));

$uniqueFile = preg_replace("#[^\d]#", "", $uniqueFile);
$uniqueFile = substr($uniqueFile, 0, 7);

- men sikkerheden for at det er unikt, bliver noget mindre end det var tilfældet i det oprindelige filnavn.
Avatar billede jens12 Nybegynder
11. september 2006 - 18:12 #2
Er der en anden måde at gøre det evt mere sikker på at der er unik ?
Avatar billede nielle Nybegynder
11. september 2006 - 18:44 #3
Den skitserede løsning er nok så unik som man kan forvente det.

Men man kan garentere at det er unikt ved at gemme de genererede navne i en database, og så trække en ny $uniqueFile hvis man trækker noget der allerede har været brugt tidligere.

En anden måde er, helt at droppe $uniqueFile efter den ovesntående opskrift, og så trække filnavnet via en database hvor at du anvender et auto_increment felt.
Avatar billede jens12 Nybegynder
11. september 2006 - 20:52 #4
Den sidste metode du skriver har jeg også overvejet.Men jeg ved ikke lige helt hvordan det skal laves ? :/
Avatar billede nielle Nybegynder
11. september 2006 - 20:59 #5
- Du opretter en tabel til formålet.
- Sætter id-feltet til at være auto_increment.
- For hver nyt billede indsætter du en række i tabellen.
- Dermed bliver id-feltet automatisk talt en op (ergo, det er unikt).
- Umiddelbart efter din INSERT kalder du mysql_insert_id() til at få fat i det netop "udtrukne" id:

http://de.php.net/manual/da/function.mysql-insert-id.php

- Til sidst omdøber du filen efter id'et.
Avatar billede jens12 Nybegynder
12. september 2006 - 21:14 #6
OKay..Jeg forstår godt hvad du mener..Men kan man så godt slette det man har indsættet efter at billedet er gemt?? Sån at man undgår at havde 1000 rækker i en tabel?
Avatar billede nielle Nybegynder
12. september 2006 - 21:40 #7
Det kan man sagtens. :^)

Men hvorfor er det så slemt at have 1000 rækker i en tabel? Du kunne jo passende bruge tabellen til samtdigt at indeholde nyttige oplysninger så som hvem der lagde billedet op, hvornår, samt hvis der er en lille tekst til billedet.
Avatar billede jens12 Nybegynder
13. september 2006 - 18:36 #8
Jamen de bliver lagt i en anden tabel senere.. I mit opload script..
Avatar billede nielle Nybegynder
13. september 2006 - 18:37 #9
Jamen, hvorfor bruger du så ikke den tabel til at trække det unikke id?
Avatar billede jens12 Nybegynder
13. september 2006 - 18:54 #10
Øhmm...Det er fordi at først bliver billedet resizet og gemt og så til sidst bliver det lagt ind i dben...
Avatar billede jens12 Nybegynder
13. september 2006 - 18:55 #11
Altså inputtet fra brugeren bliver lagt til sidst ind.
Avatar billede nielle Nybegynder
13. september 2006 - 18:56 #12
Billedet kan få et temporært navn, hvorefter du kan omdøbe den efter ar rækken er lagt i tabellen.
Avatar billede jens12 Nybegynder
13. september 2006 - 19:07 #13
Øhhmm Den du skrev der forstod jeg ikke noget af..
Men ville det evt hjælpe med at visse min kode ?
Avatar billede nielle Nybegynder
13. september 2006 - 19:11 #14
Ikke nødvendig.

Når folk uploader en fil/et billedet kan du give denne et midlertidigt navn.

Dernæst indsætter du værdierne i din tabel, ser hvilket auto_increment nummer den indsatte række resulterede i, og så omdøber du filen fra det midlertidige navn til et navn som stemmer med det nummer der blev trukket.
Avatar billede nielle Nybegynder
20. september 2006 - 21:37 #15
Er du kommet vidre med denne her?
Avatar billede jens12 Nybegynder
03. oktober 2006 - 17:15 #16
Undskyld jeg har været så langtid om at svare tilbage.!
Jeg har brugt din første indlæg ..
Lig lige et svar ;) Du fortjener point
Avatar billede nielle Nybegynder
03. oktober 2006 - 17:59 #17
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester