Verwijderen van files of data
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)
Bestandsnaam word weg geschreven als :
upload/a67d6b30d3ba18072ff0b57a7b88b5de0ee1b744/chronologisch-cvsjabloon.doc
Alvast bedankt!!
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
Met 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().
Ik hoop ook dat de sollicitaties buiten je web-root worden opgeslagen, en vooraf gecontroleerd worden qua toegang.
- 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().
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.
Gewoon even mysqli_real_escape_string() gebruiken en het probleem is opgelost.
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)
1
2
3
4
5
6
7
8
9
10
11
12
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">';
}
}
?>
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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);
?>
$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.
- SanThe - op 22/07/2014 15:28:49:
Toevoeging op 22/07/2014 15:30:33:
Je gebruikt nu twee verschillende manieren van mysqli.
Denk niet dat dat goed gaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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);
?>
$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 - 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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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]);
}
}
?>
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.
De map moet met rmdir().
- SanThe - op 22/07/2014 16:03:27:
Foutje van mij.
De map moet met rmdir().
De map moet met rmdir().
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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]);
}
}
?>
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