Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  8 516
Hei , jeg får ikke slettet mine filer med unlink , selv om jeg mener at jeg har satt alt rett i php koden.

Kode

session_start();
require_once('../functions.php');
connectToDatabase();
authenticateUser();
$action = $_GET['action'];
$id = $_GET['id'];
$lpage = $_GET['lpage'];
if($action == del) { // delete
$query = "DELETE FROM gallery_images WHERE bind_to_uid = $_SESSION[userid] AND id = $id";
$query2 =  "DELETE FROM gallery_comments WHERE bind_to_uid = $_SESSION[userid] AND bind_to_photo = $id";
mysql_query($query);
mysql_query($query2);

unlink('/home/p247/public_html/img1/g/i/'.$filename);// delete file
unlink('/home/p247/public_html/img1/g/t/'.$filename); 
header("location:../?page=myphotos&lpage=$lpage"); 
exit;
}
Hva inneholder variabelen $filename?
Sist endret av boblesaft; 16. november 2008 kl. 11:30.
Trådstarter
4 0
Hei

grove feil, kan du definere hva du mener ?

$filename = testonfilename.jpg
Når jeg sa grove feil, tenkte jeg på spørringen din.. Kanskje det fungerer, men du bør gjøre det til en vane å omringe variablene med fnutter ''
Jeg ville gjort det sånn:

Kode

$query = "DELETE FROM gallery_images WHERE bind_to_uid = '".$_SESSION[userid]."' AND id = '".$id."'";
Jeg ville også gjort variabelen $id om til integer
$id = (int) $_GET['id'];

Du bør også kjøre mysql_real_escape_string() på all input fra brukeren, du putter inn i spørringen, så sikrer du deg for sql-injections.. Tho trenger du ikke gjøre det på variabelen $id, ettersom den er integer.

Hvorfor unlink ikke vil virke, har jeg desverre ikke svar på

.. noen ganger poster jeg før jeg leser igjennom hva jeg skriver, derfor blir det kanskje ordlagt litt feil og lett å misforstå noen ganger
Sist endret av boblesaft; 16. november 2008 kl. 11:44.
Feilen ligger nok her:

Kode

<?php
if($action == del) { // delete 
?>
Du må gjøre om "del" til en string. Her er en ryddigere og sikrere versjon: (Du har et par store sikkerhetshull i dine mysql-spørringer)

Kode

<?php
session_start();
require_once('../functions.php');
connectToDatabase();
authenticateUser();

$action = isset($_GET['action']) ? $_GET['action'] : false;
$id     = isset($_GET['id']) ? intval($_GET['id']) : false;
$lpage  = isset($_GET['lpage']) ? intval($_GET['lpage']) : false;

if ($action && $action == 'del') {
    mysql_query( sprintf("DELETE FROM `gallery_images` WHERE `bind_to_uid` = %d AND `id` = %d", $_SESSION['userid'], $id) )
	    or die('MySQL Error!');
	mysql_query( sprintf("DELETE FROM `gallery_comments` WHERE `bind_to_uid` = %d AND `bind_to_photo` = %d", $_SESSION['userid'], $id) )
	    or die('MySQL Error!');
	
	if (file_exists('/home/p247/public_html/img1/g/i/'.$filename)) {
		unlink('/home/p247/public_html/img1/g/i/'.$filename);
	}
	if (file_exists('/home/p247/public_html/img1/g/t/'.$filename)) {
		unlink('/home/p247/public_html/img1/g/t/'.$filename);
	}
}

header('Location: ../?page=myphotos&lpage='.$lpage); 
die();
?>
Sist endret av ma10as; 16. november 2008 kl. 12:58.
Trådstarter
4 0
Fikk disse feilene


Warning: unlink(/home/p247/public_html/img1/g/i/) [function.unlink]: Is a directory in /home/p247/public_html/photos/photo_action.php on line 18

Warning: unlink(/home/p247/public_html/img1/g/t/) [function.unlink]: Is a directory in /home/p247/public_html/photos/photo_action.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/p247/public_html/photos/photo_action.php:18) in /home/p247/public_html/photos/photo_action.php on line 25

Den klarte å slette fra gallery_images og gallery_comments men ikke filene.. som du ser..
"Cannot modify header information" kommer fordi du skriver ut HTML før PHP. Ser ut som det er photo_action.php som er problemet. For å løse dette kan du legge til ob_start(); i toppen av den nevnte filen. Dette skjuler bare problemet, og en huskeregel er at du alltid bør kjøre php-koder før du begynner å skrive ut html.

Edit:
De andre feilmeldingene fra unlink tror jeg kommer fordi $filename ikke er definert. Som feilmeldingen sier, prøver du å slette en mappe. Er ikke 100% sikker på denne, men sørg også for at du har rettigheter til å slette det du skal (chmod)
Sist endret av ma10as; 16. november 2008 kl. 14:52.
Trådstarter
4 0
i gallery_images tabellen så har jeg en som heter filename som heter blabla.jpg som skal slettes som fil på katalogene.

chmod står på 755
Da må du først kjøre en SELECT via mysql_query for å finne ut hva filename er via ID. SELECT filename FROM gallery_images WHERE id = $id

Deretter må du først sjekke om den finner noe resultat, og i så fall definere dette som $filename