FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Jag vill börja med att säga att jag itne är någon världsmästare på detta men jag kan inte reda ut följande riktigt.
Det handlar om när en annons sparas i en databas, ev bild laddas upp och ett bekräftelsemail skickas. #1 Ev. bild laddas upp o får nytt namn #2 Data sparas i databasen med en instert into. #3 Här kommer mitt problem. I detta skede skickas det ut ett mail till annonsören där han/hon ombdes att besöka en länk för att bekräfta sin annons (en confirmcode har generats och sparats i databsen). Mitt problem är att jag dels vill att mailet ska innehålla länken till annonsen dvs peka till dokumentet som vi kan kalla ad.php?aid=XXXX men även länken till confirm.php?aid=XXXX&code=XXXXXXXX. Men eftersom detta ID skapats automatiskt i databsen, hur gör jag lämpligast för att få fram det skapade IDet på direkten? Tacksam för svar, glöm inte att ni som ev svarar talar med ett php-pucko ![]() |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Citat:
$code = someRandomFunction(); $code är alltså det som genereras... sedan har du väl något INSERT INTO blah (code) VALUES ('$code') för att få upp id: SELECT id FROM blah WHERE code='$code' Nått sånt? Mvh Martin |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
uniqid(rand()); är en bra funktion som someRandomFunction();
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Citat:
-Martin |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Klarade millennium-buggen
|
Stödjer inte MySQL (antar att det gäller detta) @@IDENTITY (som returnerar senaste skapade id?)
[edit]: ehrm, glöm det, kommer ihåg nu att MySQL inte stödjer stored procedures.. /edit |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Flitig postare
|
Kanske jag är dum och missupfattat frågan, men är det inte mysql_insert_id() som är enklast att använda?
|
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Medlem
|
anledningen till att jag inte ville köra en select sats på den genererade coden direkt är att även om risken är liten så kan det ju faktiskt skapas två annonser med code?
Eller kan man göra bedömningen att risken för att detta sker är så ofantligt liten när man generar koden med 16 tecken: a-z + 0-9 ? |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Mycket flitig postare
|
Citat:
jag skulle nog chansa på att om du inte har tiotusentals besökare om dagen så är nog denna lösning rätt säker. Kolla även på mysql_insert_id() som gör exakt vad du är ute efter. -Martin |
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Medlem
|
Då tackar jag för alla svar!
|
|||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Mycket flitig postare
|
Som sagt; ID för den nya annonsen får du ju med mysql_inserted_id()
Om du vill skapa en aktiveringskod som är garanterat unik så föreslår jag att du låter koden vara MD5 hashen av ensträng innehållande username, microtime, time same ett random. Redan där borde du vara säker, men om du dessutom låter aktiveringskoden vara ett unikt index i tabellen där den lagras är du ju helt säker... Det värsta som sker då är att OM det mot förmodan blir en konflikt så läggs inte dubletten in. |
||
![]() |
![]() |
Svara |
|
|