Verwijderen van files of data

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent Post

Vincent Post

22/07/2014 15:06:57
Quote Anchor link
Hallo

Ik ben bezig met een job systeem
waarbij mensen de mogelijkheid hebben om een open sollicitatie in te verzenden
alle ingezonden sollicitaties komen in het database te staan.

Nu heb ik dat het bestandsnaam van de cv netjes word geupload onder een map die word aangemaakt met een unieke naam die ik mee geef naar het database

Ik wil nu dat ik in mijn overzicht op verwijderen kan drukken en de sollicitatiebrief word verwijderd met hun geuploade C.V.

Bij het laatste loop ik nu vast hoe haal ik bestandsnaam juist uit het database en verwijderd hij hem ook goed?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if($_GET["verwijderen"]) {
    $delete_qry = "DELETE FROM sollicitatie WHERE id = '".$_GET["verwijderen"]."'";
    $result = mysqli_query($mysqli, $delete_qry)
        or die(mysqli_error($mysqli));
    if($result==TRUE){
        echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL=overzicht.php">';
    }
}

?>


Bestandsnaam word weg geschreven als :
upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc


Alvast bedankt!!
 
PHP hulp

PHP hulp

03/12/2021 01:50:14
 
Jacco Engel

Jacco Engel

22/07/2014 15:11:27
Quote Anchor link
Met http://nl3.php.net/unlink kun je een file verwijderen. De manier om dit te doen is eerst de data van de solicitatie ophalen, vervolgens proberen je files te verwijderen en als dit gelukt is pas de delete in de database doen
 
- SanThe -

- SanThe -

22/07/2014 15:13:02
Quote Anchor link
Veiligheid ontbreekt compleet.
De kans dat alle sollicitaties worden verwijderd door sql-injection is groot.

Je zal voordat je in de database delete eerst de map/bestandsnaam moeten ophalen uit de database. Dan kun je het bestand verwijderen met unlink().
 
- Ariën -
Beheerder

- Ariën -

22/07/2014 15:19:05
Quote Anchor link
Ik hoop ook dat de sollicitaties buiten je web-root worden opgeslagen, en vooraf gecontroleerd worden qua toegang.
 
Vincent Post

Vincent Post

22/07/2014 15:19:26
Quote Anchor link
- SanThe - op 22/07/2014 15:13:02:
Veiligheid ontbreekt compleet.
De kans dat alle sollicitaties worden verwijderd door sql-injection is groot.

Je zal voordat je in de database delete eerst de map/bestandsnaam moeten ophalen uit de database. Dan kun je het bestand verwijderen met unlink().


Overzicht is alleen voor ons als bedrijf, denk niet dat we SQL injection gaan toepassen binnen ons eigen systeem.

Je dient ingelogd te zijn voordat je iets kan uitvoeren.
 
- SanThe -

- SanThe -

22/07/2014 15:21:31
Quote Anchor link
Ook een typo kan ellende geven.
Gewoon even mysqli_real_escape_string() gebruiken en het probleem is opgelost.
 
Vincent Post

Vincent Post

22/07/2014 15:22:56
Quote Anchor link
Ik zat al te kijken bij unlink() alleen hij doet niet wat ik vraag overigens moet ik de bestandsnaam eerst explode en de map upload eruit zien te filteren die moet blijven bestaan en dan de map verwijderen waarin het bestand staat.

Dus moet ik eerst het juiste pad zien te selecteren,
zou iemand mij misschien klein voorbeeldje kunnen maken? ;)

Alvast bedankt!
:Edit zo even aangepast.. ;)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if($_GET["verwijderen"]) {
    $check = $mysqli->real_escape_string($_GET["verwijderen"]);
    $delete_qry = "DELETE FROM sollicitatie WHERE id = '".$check."'";
    $result = mysqli_query($mysqli, $delete_qry)
        or die(mysqli_error($mysqli));
    if($result==TRUE){
        echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL=overzicht.php">';
    }
}

?>
Gewijzigd op 22/07/2014 15:28:33 door Vincent Post
 
- SanThe -

- SanThe -

22/07/2014 15:28:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$naam
='upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc';
$array = explode('/', $naam);
// In $array[0] zit upload
// In $array[1] zit a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744
// In $array[2] zit chronologisch-cvsjabloon.doc

// Eerst het bestand weggooien en dan de map

unlink($naam);
unlink($array[0]./.$array[1);
?>


Toevoeging op 22/07/2014 15:30:33:

Je gebruikt nu twee verschillende manieren van mysqli.
Denk niet dat dat goed gaat.
 
Vincent Post

Vincent Post

22/07/2014 15:43:51
Quote Anchor link
- SanThe - op 22/07/2014 15:28:49:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$naam
='upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc';
$array = explode('/', $naam);
// In $array[0] zit upload
// In $array[1] zit a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744
// In $array[2] zit chronologisch-cvsjabloon.doc

// Eerst het bestand weggooien en dan de map

unlink($naam);
unlink($array[0]./.$array[1);
?>


Toevoeging op 22/07/2014 15:30:33:

Je gebruikt nu twee verschillende manieren van mysqli.
Denk niet dat dat goed gaat.


Geweldig bedankt !
hiermee kan ik verder ;)

Toevoeging op 22/07/2014 15:46:16:

- Aar - op 22/07/2014 15:19:05:
Ik hoop ook dat de sollicitaties buiten je web-root worden opgeslagen, en vooraf gecontroleerd worden qua toegang.


Hoe bedoel je buiten de web-root?
ik controleer zeker vooraf of de gebruiker toegang krijgt of niet overigens zijn het natuurlijk aparte pagina's als dat is wat je bedoelde ;)

Hoor graag je van !
 
- SanThe -

- SanThe -

22/07/2014 15:51:19
Quote Anchor link
En hoe kijk je of iemand toegang heeft als die dit in de browser intikt?

http://julliesitenaam/upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc
 
Vincent Post

Vincent Post

22/07/2014 16:00:04
Quote Anchor link
- SanThe - op 22/07/2014 15:51:19:
En hoe kijk je of iemand toegang heeft als die dit in de browser intikt?

http://julliesitenaam/upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc


Ik dacht aan een httacces bestand aan te maken en die op de map upload zetten
is dat een optie of weet je misschien een betere ?
ik heb nu

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if($_GET["verwijderen"]) {
    $query_id = "SELECT * FROM sollicitatie WHERE id=".$_GET["verwijderen"]."";
    if ($result = $mysqli->query($query_id)) {
        while ($obj = $result->fetch_object()) {
        
$naam =''.$obj->bestand.'';
$array = explode('/', $naam);
// In $array[0] zit upload
// In $array[1] zit a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744
// In $array[2] zit chronologisch-cvsjabloon.doc

// Eerst het bestand weggooien en dan de map

unlink($naam);
unlink($array[0].'/'.$array[1]);

    }
}

?>

Hij verwijderd nu de file alleen de map blijft staan.
 
- SanThe -

- SanThe -

22/07/2014 16:03:27
Quote Anchor link
Foutje van mij.
De map moet met rmdir().
 
Vincent Post

Vincent Post

22/07/2014 16:06:58
Quote Anchor link
- SanThe - op 22/07/2014 16:03:27:
Foutje van mij.
De map moet met rmdir().


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

if($_GET["verwijderen"]) {
    $query_id = "SELECT * FROM sollicitatie WHERE id=".$_GET["verwijderen"]."";
    if ($result = $mysqli->query($query_id)) {
        while ($obj = $result->fetch_object()) {
        
$naam =''.$obj->bestand.'';
$array = explode('/', $naam);
// In $array[0] zit upload
// In $array[1] zit a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744
// In $array[2] zit chronologisch-cvsjabloon.doc

// Eerst het bestand weggooien en dan de map

unlink($naam);
rmdir($array[0].'/'.$array[1]);

    }
}

?>


Dan word het dit?

Edit : Thanks hij werkt super!
Gewijzigd op 22/07/2014 16:08:16 door Vincent Post
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.