Delete image (unlink)
Ik ben aan het proberen om een afbeelding te verwijderen uit de folder "image" maar dit lukt me niet, ziet iemand wat ik hier verkeerd doe?
Het veld in de databank met de naam van de afbeelding heet "photo".
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
session_start();
include"../includes/connection.php";
//Controle of de gebruiker is aangemeld
if (!isset($_SESSION['username'])) {
header('Location: ../login/login.php');
}
$foto = $_GET['photo'];
$path = "../image/";
echo $path . $foto;
$query = mysql_query("DELETE FROM image WHERE id='".mysql_real_escape_string($_GET['id'])."'");
// Controleren of de query succesvol uitgevoerd is
if ($query === false)
{
echo 'Het bericht kan niet worden verwijderd';
}
else
{
echo 'Het bericht is verwijderd';
unlink($path . $foto);
}
?>
session_start();
include"../includes/connection.php";
//Controle of de gebruiker is aangemeld
if (!isset($_SESSION['username'])) {
header('Location: ../login/login.php');
}
$foto = $_GET['photo'];
$path = "../image/";
echo $path . $foto;
$query = mysql_query("DELETE FROM image WHERE id='".mysql_real_escape_string($_GET['id'])."'");
// Controleren of de query succesvol uitgevoerd is
if ($query === false)
{
echo 'Het bericht kan niet worden verwijderd';
}
else
{
echo 'Het bericht is verwijderd';
unlink($path . $foto);
}
?>
Gewijzigd op 06/11/2012 16:29:36 door Jos Vermassen
Wat voor error verschijnt er?
is_file() om te kijken of je path/adres wel klopt.
Blijkbaar staat jouw bestand in een map, want je gaat een map omhoog (naar .be/luc/ waarschijnlijk) en dan weer dieper naar images (dus .be/luc/images).
Wat geeft mysql_real_escape_string($_GET['photo']); ? Geef eens een echo om te kijken wat het adres wordt.
En bovenal: krijg je een foutmelding?
Zo nee: zet je error_reporting(E_ALL); aan.
Gebruik Blijkbaar staat jouw bestand in een map, want je gaat een map omhoog (naar .be/luc/ waarschijnlijk) en dan weer dieper naar images (dus .be/luc/images).
Wat geeft mysql_real_escape_string($_GET['photo']); ? Geef eens een echo om te kijken wat het adres wordt.
En bovenal: krijg je een foutmelding?
Zo nee: zet je error_reporting(E_ALL); aan.
Waarom gebruik je mysql_real_escape_string? unlink() is geen SQL-statement en escaping kan in dit geval er juist voor zorgen dat er een naam wordt gebruikt die niet bestaat.
Waarom is mijn variable $foto leeg?
Waarom $foto aanmaken? Je kunt toch $_GET['photo'] gebruiken?
Waar is de controle of $_GET['photo'] wel bestaat?
Obelix en Idefix op 06/11/2012 18:03:17:
omdat er kennelijk niets in $_GET['photo'] zit?! ;-)
Waarom $foto aanmaken? Je kunt toch $_GET['photo'] gebruiken?
Waar is de controle of $_GET['photo'] wel bestaat?
Waarom $foto aanmaken? Je kunt toch $_GET['photo'] gebruiken?
Waar is de controle of $_GET['photo'] wel bestaat?
Ja dat snap ik ook wel :p maar waarom is $_GET['photo'] leeg?
Jos Vermassen op 06/11/2012 18:29:08:
maar waarom is $_GET['photo'] leeg?
Dat moet jij kunnen achterhalen.
Jij weet waar die GET vandaan komt.
Wij kunnen alleen maar gokken.
- SanThe - op 06/11/2012 19:04:32:
Dat moet jij kunnen achterhalen.
Jij weet waar die GET vandaan komt.
Wij kunnen alleen maar gokken.
Jos Vermassen op 06/11/2012 18:29:08:
maar waarom is $_GET['photo'] leeg?
Dat moet jij kunnen achterhalen.
Jij weet waar die GET vandaan komt.
Wij kunnen alleen maar gokken.
Waar zou het allemaal vanaf kunnen hangen?
- Hij word overschreven.
- Je roept hem niet aan.
Ik neem aan dat je weet waar $_GET variabelen vandaan komen of niet?
- Mark - op 06/11/2012 19:44:06:
2 opties:
- Hij word overschreven.
- Je roept hem niet aan.
Ik neem aan dat je weet waar $_GET variabelen vandaan komen of niet?
- Hij word overschreven.
- Je roept hem niet aan.
Ik neem aan dat je weet waar $_GET variabelen vandaan komen of niet?
uit de databank zeker?
Je ziet in je adres balk van je browser wel eens iets als www.weetikveel.com?id=1337&photo=hierschaamikmevoor
in $_GET staat nu
$_GET['id'] // 1337
$_GET['photo'] // hierschaamikmevoor
- Mark - op 06/11/2012 19:54:57:
LOL, Nee daar komen ze niet vandaan.
Je ziet in je adres balk van je browser wel eens iets als www.weetikveel.com?id=1337&photo=hierschaamikmevoor
in $_GET staat nu
$_GET['id'] // 1337
$_GET['photo'] // hierschaamikmevoor
Je ziet in je adres balk van je browser wel eens iets als www.weetikveel.com?id=1337&photo=hierschaamikmevoor
in $_GET staat nu
$_GET['id'] // 1337
$_GET['photo'] // hierschaamikmevoor
Ah lol, ben er nog niet zo lang mee bezig.
Hoe kan het veld met de naam van de foto ophalen in de databank?
Gewijzigd op 06/11/2012 20:07:29 door Jos Vermassen
Je kunt die gegevens ophalen op hetzelde moment waar je het de link aanmaakt voor het verwijderen van de afbeelding.
- Mark - op 06/11/2012 20:09:02:
Je kunt die gegevens ophalen op hetzelde moment waar je het de link aanmaakt voor het verwijderen van de afbeelding.
Oké bedankt, probleem opgelost
Overigens lijkt het me niet onverstandig om te controleren of $foto niet een string als "../" bevat of zo, want anders kan een creatieve geest misschien nog bestanden weggooien die niet in je images-directory staan.
En misschien is het goed om nog een basistut door te lezen over formulieren. Het ophalen van gegevens via $_POST en $_GET is redelijk basis en vind je doorgaans terug in een (goede) basistut.