DELETE via et link

Tags:    php

hejsa allesammen.

jeg har en tagwall, hvor jeg gerne vil kunne slette indlæg når man er logget ind.

har kodet tagwallen, og loginsystem-

så vil jeg gerne ha vist alle indlæg med "overskrift" med link ud for hvor der fx. står slet, når man så trykker å¨linket ud for den enkelte post bliver den slettet.

hvordan skal det laves?



9 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
well du linker vel bare til en fil med delete koden i og bruger id'et som parameter. Fx:

Fold kodeboks ind/udKode 


dit link på tagwallen skal så se nogenlunde sådan ud:
<a href="delete.php?id=$id">Slet post</a>

$id skal så erstattes med det id du henter fra databasen når du udskriver tagwallen selvfølgelig. Derudover skal du huske på delete.php siden også at tjekke om brugeren er logget ind og har rettigheder til at slette.

EDIT: hvis det skal være helt rigtigt :)
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 30.01.2007 02:30 af Bruger #6528
...også skal SQL'en selvfølgelig escapes, for at undgå sql-injections. :)

$query = mysql_query("DELETE FROM tagwall WHERE id='" .mysql_escape_string($id). "'");



boo som vist nok plejer at være bar og foo er bare standard navne som folk der skriver kode godt kan lide at bruge i kode du kan bytte dem ud med hvilken som helst andre lovelige værdier. I ovenstående som en lovlige variabel navn og en lovlig string.

mysql_escape_string escapes ' in the string, but is deprecated use mysql_real_escape_string which basicly does the same and then some.
basicly if a user for some reason where to go to your delete file with the link "delete.php?id=' or id!='"
your end sql would be:
mysql_query("DELETE FROM tagwall WHERE id='' or id!=''");
and the user would then have achieved the end result of deleting your entire tagwall.

Min tidligere bemærkning om request kan overses her da det var via links of derfor brug af GET.

Og eh det sidste spørgsmål der er rimelig uforståeligt for mig.

mht. det der escape string kan de godt tænkes linket er forkert men det burde da give ideen.



Indlæg senest redigeret d. 30.01.2007 17:06 af Bruger #5620
Du kan ikke bare kaste rundt om dig med variabler inde i strenge... Nogle gange kan det virke, men det er ikke korret.

$var = "boo = '{$foo}'";
$var = "foo = '" . $boo . "'";

Virker altid og er korret php.

EDIT: Personligt foretrækker jeg, som mange andre, at bruge $_REQUEST i steddet for $_GET, da $_REQUEST er en global for både $_POST og $_GET.



Indlæg senest redigeret d. 30.01.2007 00:00 af Bruger #7662
hehe det er den slags fejl der sker når man lige skal smide et hurtigt svar :) jeg er ret sikker på at det vil virke med variablen i strengen selvom jeg er klar over at man bør bruge din metode til at indsætte variablen i strengen. Med henhold til $_REQUEST vil jeg hellere bruge GET og POST da det er nemmere at finde ud af når man engang skal læse sin kode igennem.



Indlæg senest redigeret d. 30.01.2007 02:32 af Bruger #6528
At bruge request ødelægger vel nærmest hele pointen med at de fjernede at php som default gjorde post og get værdier som globale variabler.



Okay, er ikke helt med i det der boo, foo osv. er det noget jeg bør lære at bruge i forhold til POST,GET??

Gnu -> hvad gør mysql_escape_string?

Kan jeg udskrige alle mine records, med linket ud for på samme side? altså "DELETE.PHP"?



der skal både være udtræk af alle records i tabellen "tagwall" og linket "slet" i samme fil altså "DELETE.PHP". fx:

(id)14 - (overskrift) en overskrift - (linket 'slet'") Slet denne besked

forstår du? :)



du har vel antageligt set allered en fil der viser alle beskederne så er det jo bare at tage koden fra denne fil slette den der skriver selve beskedens indhold og tilføje den til at skrive slet linket.



t