Richtlijnen voor 'actie-uitvoerende' links?

Pagina: 1
Acties:

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Ik ben bezig met een website waar ik een aantal links heb in de vorm van:

index.php?action=delete_all_articles
workflow.php?status=finished
viewtopic.php?id=666&action=zet_op_slot

Zoals je wellicht begrijpt zijn dat dus linkjes waarbij je met 1 druk op de link iets doet waarmee je in dit geval iets in de database wijzigt.
Nu was er een tijdje geleden een 'rel' om die web accelerator van Google, omdat bovenstaande linkjes gewoon geopend worden zonder dat de gebruiker er zelf op klikt. Met soms desastreuze gevolgen.

Mijn vraag is of er ook officiele richtlijnen zijn voor zulk soort linkjes die een actie uitvoeren? Is het 'verboden' of mogen applicaties gewoon niet automatisch op linkjes klikken? Het is misschien netter om zulk soort acties alleen met forms en submit-buttons te doen, maar dat vind ik niet altijd handig. Maar aan de andere kant wil ik ook niet dat mijn website straks corrupt raakt door software als die google accelerator. De links zitten overigens wel achter een login, dus spiders van zoekmachines kunnen er niet komen.

[ Voor 3% gewijzigd door Palomar op 06-08-2006 00:33 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
De richtlijn is dat je POST gebruikt voor dat soort acties. Dan wordt de gebruiker ook steeds door browser erop geattendeerd als hij herhaaldelijk een dergelijke actie zou triggeren door een POST uit te voeren.

Grofweg: GET voor data ophalen, POST voor data uploaden of veranderen. GET is voor idempotente (mooi zoekwoord ;) ) acties.

Zelfs al zou er een magische &afblijven=1 GET parameter zijn, zou ik het gebruik daarvan zeer ranzig vinden. Mensen moeten gewoon GET en POST gebruiken zoals het hoort. HTTP omvat niet voor niets meer dan GET.

Overigens snap ik niet dat google uberhaupt de links die je als voorbeeld geeft tegen zou kunnen komen, aangezien dat soort links meestal pas zichtbaar zijn nadat user geïdentificeerd en geauthoriseerd is.
edit:
O, een admin kan die tool natuurlijk ook draaien. Maar ja, die tool moet ook gewoon dood. :P :+

[ Voor 21% gewijzigd door Voutloos op 06-08-2006 00:38 ]

{signature}


  • Palomar
  • Registratie: Februari 2000
  • Niet online
ok thanx, dat is duidelijk. Maar POST kan voor zover ik weet alleen via een <form> tag met submitbutton. Ik zal dus altijd met forms moeten werken voor dit soort acties?

btw. Google kan niet bij die pagina's hoor. Je krijgt het idd pas na geauthoriseerd te zijn. Ik maakte me alleen even zorgen om zulk soort 'handige' tools als google web accelerator (die dus clientside draaien). Ik zag ineens voor me dat álle info in de database in 1 klap niet meer zou kloppen omdat zo'n programma alle linkjes aan gaat klikken :P

Verwijderd

Palomar schreef op zondag 06 augustus 2006 @ 10:46:
ok thanx, dat is duidelijk. Maar POST kan voor zover ik weet alleen via een <form> tag met submitbutton. Ik zal dus altijd met forms moeten werken voor dit soort acties?
Of met een xmlHttpRequest. Maar het liefst wil je zoiets via de "officiële weg": met een bevestigingsformulier. Verwijder niet zomaar iets zonder bevestiging, dat levert gegarandeerd gedoe op.

Denk ook even aan search engine crawlers, denk aan het kunnen preloaden van een pagina. De GET request moet precies doen wat GET inhoudt: een pagina ophalen, zonder verder iets te wijzigen (hooguit wat statistieken ofzo).
btw. Google kan niet bij die pagina's hoor. Je krijgt het idd pas na geauthoriseerd te zijn. Ik maakte me alleen even zorgen om zulk soort 'handige' tools als google web accelerator (die dus clientside draaien). Ik zag ineens voor me dat álle info in de database in 1 klap niet meer zou kloppen omdat zo'n programma alle linkjes aan gaat klikken :P
Dat kan ja. Maar voor extra zekerheid kun je rel="nofollow" toevoegen aan je links. Neemt niet weg dat je niet gegevens moet wijzigen bij een GET request. Daar is een POST voor.