Avatar billede peleiden Nybegynder
13. februar 2006 - 07:36 Der er 2 kommentarer

vedr sikkerhed ved oprettelse af ny row i database

Hej

Det kan godt være at dette er et banalt spørgsmål, men jeg vil lige høre jer eksperter om sikkerheden ved at oprette en ny row i en tabel, samtidigt med at man skal bruge det nye id i en anden tabel (relation).

Hvis man forestiller sig at skulle lave et forum. Når man opretter et nyt indlæg, skal dette indlægs id typisk bruges i nogle andre tabeller samtidig med at indlægget briver oprettet. Men man kender jo ikke id'et før det er oprettet?
Hvis man fyrer en ny query af ummidelbart efter at indlægget er oprettet, kan man jo tage det højeste id og bruge dette i den anden tabel. Men i princippet kunne en anden person samtidig lave et nyt indlæg og dermed ville den forrige besked få et forkert id i relationstabellen.

Er dette problem et generelt problem, eller findes der nogle smart måde at omgår det på?

Det blev vist lidt kringlet, men håber I forstår det eller kan jeg uddybe det yderligere.
Avatar billede fsconsult.dk Nybegynder
13. februar 2006 - 07:53 #1
du kan benytte InnoDB tabeller og dermed benytte transaktioner, så du kan lave commit når du har indsat alle de nødvendige rækker i databasen. Dvs. at andre ikke kan se dataene før du har lavet commit af din transaktion.
Avatar billede morhan Novice
13. februar 2006 - 08:50 #2
Du kan benytte mysql_insert_id() funktionen. Den returnerer sidste auto-genererede id. Den er forbindelsesspecifik, så den bliver ikke berørt af, at andre brugere måtte have oprettet poster før du når at kalde funktionen
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
Computerworld tilbyder specialiserede kurser i database-management

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