[PHP] Meerdere items verwijderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 19-07 11:58
Hey mensjes.

Ik probeer bestanden van de server te verwijderen via unlink, maar het is natuurlijk niet fijn als je ieder bestand individueel moet verwijderen. Nu wil ik de informatie doorpaasen via een checkbox, dit krijg ik echt niet werkend. Wat ik kan laten zien is de manier waarop de checkboxen gemaakt worden, maar weet totaal niet of ik goed zit.

Checkboxes ziene r zo uit:

<input type="checkbox" name="delete[ absoluut pad naar bestand ]" value="1">Bestandsnaam.

Het ophalen van de geposte informatie lukt ook niet echt. Ook is er geen database bij betrokken, de mappen worden gewoon uitgelezen op bestandsnamen en de paden zijn constant absoluut.

Ik weet dat het geheel een nogal onduidelijk verhaal is, maar ik kan geen betere manier vinden om het uit te leggen.

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Je krijgt via $_POST toch een array terug (delete) waar je doorheen loopt met foreach zodat je die key values uit de array kunt halen.

Heb je al een stuk code waar je mee begonnen bent?
Anders begin eens met print_r($_POST);

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Checkboxen hun waarde worden alleen mee gestuurd in de _POST als deze gechecked is. Zo even uit mijn hoofd zou zoiets als dit wel moeten werken:

code:
1
<input type="checkbox" name="delete[]" value="$path_to_file">Bestandsnaam.

Je maakt hiermee van je _POST['delete'] een array() (zonder keys) welke alle paden bevat die aangevinkt zijn.
PHP:
1
2
3
4
foreach ($_POST['delete'] AS $file_to_delete)
{
unlink($file_to_delete);
}


Met zo'n loopje delete je ze. Alles is zo uit het hoofd, dus hier en daar kan een klein foutje zitten. Maar het gaat om 't idee. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 19-07 11:58
OkkE schreef op dinsdag 14 november 2006 @ 11:48:
Checkboxen hun waarde worden alleen mee gestuurd in de _POST als deze gechecked is. Zo even uit mijn hoofd zou zoiets als dit wel moeten werken:

code:
1
<input type="checkbox" name="delete[]" value="$path_to_file">Bestandsnaam.

Je maakt hiermee van je _POST['delete'] een array() (zonder keys) welke alle paden bevat die aangevinkt zijn.
PHP:
1
2
3
4
foreach ($_POST['delete'] AS $file_to_delete)
{
unlink($file_to_delete);
}


Met zo'n loopje delete je ze. Alles is zo uit het hoofd, dus hier en daar kan een klein foutje zitten. Maar het gaat om 't idee. :)
Thanks, het werkt nu goed. ^^ Ik had namelijk zelf gezocht naar een oplossing, en een aantal werktte met
code:
1
<input type="checkbox" name="delete[$path_to_file]" value="1">Bestandsnaam.


Dit was dus fout.

Bedankt voor de snelle reactie! * Psyed writes down: foreach werking eens bestuderen.

Acties:
  • 0 Henk 'm!

Verwijderd

Zorg nog wel even dat je het een en ander aan input controlleert voordat je zomaar bestanden gaat verwijderen. Je kunt anders zeer vervelende situaties krijgen >:)

Acties:
  • 0 Henk 'm!

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 19-07 11:58
Verwijderd schreef op dinsdag 14 november 2006 @ 11:55:
Zorg nog wel even dat je het een en ander aan input controlleert voordat je zomaar bestanden gaat verwijderen. Je kunt anders zeer vervelende situaties krijgen >:)
Logisch. ;) Het is sowiesow iets wat alleen admins kunnen doen, maar er worden ook bestanden uitgesloten van delete mogelijkheden en de map waaruit verwijderd word, word gecontroleert. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Psyed schreef op dinsdag 14 november 2006 @ 11:57:
Logisch. ;) Het is sowiesow iets wat alleen admins kunnen doen, maar er worden ook bestanden uitgesloten van delete mogelijkheden en de map waaruit verwijderd word, word gecontroleert. ;)
Het is inderdaad logisch... helaas zie ik echter nog vaak mensen die daar absoluut niet over hebben nagedacht. Maar goed om te horen dat je dat wel hebt gedaan :).

Acties:
  • 0 Henk 'm!

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 19-07 11:58
Verwijderd schreef op dinsdag 14 november 2006 @ 12:07:
[...]

Het is inderdaad logisch... helaas zie ik echter nog vaak mensen die daar absoluut niet over hebben nagedacht. Maar goed om te horen dat je dat wel hebt gedaan :).
Ik zie het zelfs bij mijn collega, niet om hem zwart te maken of zo, maar hij is de fulltimer terwijl ik de stagair ben. Geen berscherming tegen sql/url injections, sessions kunnen gejat worden zonder opgemerkt te worden e.d. Globals werden weinig gebruikt, vaak $_REQUEST ipv $_POST/$_GET e.d.

Kan nog wel effen door gaan, maar gaat wel steeds beter nu. ^^

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Tering zelfs als je je input perfect checkt zou ik deze constructie voor geen meter vertrouwen :X Bewaar de lijst van bestanden gewoon in een sessievariable of dedicated DB-table, en geef clientside enkel indexes binnen die array of table.

Iedere minieme oversight zet nu de deur wijd open naar volledige molestatie van je site of server.

[ Voor 17% gewijzigd door curry684 op 14-11-2006 12:25 ]

Professionele website nodig?

Pagina: 1