Problema apostrofo con funzione unlink

DeltaMachine

Nuovo Utente
28 Gen 2013
4
0
0
Salve,

ho un problema con la funzione unlink().
Ho una pagina con la lista delle immagini prelevate da una cartella e visualizzate, con la possibilità di eliminare uno o piu file spuntando la relativa checkbox.
Per l'eliminazione ho usato appunto la funzione unlink().
Se seleziono un'immagine da cancellare, il cui nome ha un apostrofo, mi appare il seguente errore:

Warning: unlink(../../gallery/img/L') [function.unlink]: No such file or directory...

L'immagine presa come esempio ha il nome: "L'illusione".
Per tutte le altre immagini lo script funziona correttamente.
Qui di seguito lo script della funzione unlink().

Spero in un vostro aiuto.
Grazie.

PHP:
<?php 
    $path = "../../gallery/img/"; 
    if(isset($_POST['file']) && is_array($_POST['file'])) 
    { 
    foreach($_POST['file'] as $file) 
    {     
    unlink($path . $file) or die("Eliminazione file fallita"); 
    } 
    } 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
per prima cosa cerca di capire come risulta il nome quando è l'illusione (cioè con l'apostrofo, comunque da evitare nomi simili)
1) come viene scritto dal post
PHP:
 <?php 
$path = "../../gallery/img/"; 
if(isset($_POST['file']) && is_array($_POST['file'])){ 
    foreach($_POST['file'] as $file){     
    	//unlink($path . $file) or die("Eliminazione file fallita");
		var_dump($file);//vedi come viene l'illusione
    } 
} 
?>
2)come viene interpretato da php il nome (metto solo per tipo .jpg)
PHP:
<?php
$path = "../../gallery/img/"; 
$immagini=glob($path."*.jpg");
foreach($immagini as $file){     
		var_dump($file);//vedi come viene viene riportato l'illusione.jpg
} 
?>
da questo, credo, dovresti capire cosa non va
p.s.
metti nella cartella poche immagini altrimenti di viene una sfilza
 

DeltaMachine

Nuovo Utente
28 Gen 2013
4
0
0
Ciao borgo,

ti ringrazio per la risposta.

Allora...

nel primo cosa nel momento in cui vado ad eliminare l'immagine ottengo questo output:
string 'L' (length=1)

nel secondo caso, invece:
string '../../gallery/img/L'illusione.jpg' (length=33)

l'errore potrebbe essere questo?
'../../gallery/img/L'illusione.jpg'

In che modo posso far si che il PHP non legga l'apostrofo di "L'illusione" come chiusura di apici?

Grazie mille per la tua disponibilità :)
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao borgo,

ti ringrazio per la risposta.

Allora...

nel primo cosa nel momento in cui vado ad eliminare l'immagine ottengo questo output:
string 'L' (length=1)

nel secondo caso, invece:
string '../../gallery/img/L'illusione.jpg' (length=33)

l'errore potrebbe essere questo?
'../../gallery/img/L'illusione.jpg'

In che modo posso far si che il PHP non legga l'apostrofo di "L'illusione" come chiusura di apici?

Grazie mille per la tua disponibilità :)
Buttandola li, potresti provare utilizzando addslashes() sul nome
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
dato i risultati mi sembra che l'errore provenga da come è trasmesso il post in quanto trovi L al posto di quello che hai trasmesso, cioè L'illusione, mentre sembra che php legga bene il nome.
quindi quello che dice nefyt può essere giusto, l'unico problema è dove applicare addslashes.
sul $_POST
proverei in prima istanza
PHP:
//...
if(isset($_POST['file']) && is_array($_POST['file'])){ 
	$_POST['file']=array_map($_POST['file'], "addslashes");
	//ecc....

oppure, ma non so come ricavi il campo di input, al suo value

counque, ribadisco: è meglio modificare il nome dell'immagine e non usare nei nomi caratteri particolari
 

DeltaMachine

Nuovo Utente
28 Gen 2013
4
0
0
Grazie ad entrambi per l'interessa.

Avevo provato ad utilizzare addslashes con esito negativo.

@borgo
ho inserito lo script che hai inserito ma ricevo questo errore:

Warning: array_map() expects parameter 1 to be a valid callback, array must have exactly two members...

PS - Come mai è meglio non utilizzare i caratteri particolari?

Ho necessita che il cliente possa caricare immagini esattamente con il nome esatto, apostrofo e accenti compresi.

Sbaglio qualcosa?

Questo è lo script con la tua dritta:
PHP:
<?php
    $path = "../../gallery/img/";
    if(isset($_POST['file']) && is_array($_POST['file'])){ 
    $_POST['file']=array_map($_POST['file'], "addslashes");
	foreach($_POST['file'] as $file)
	{	
	unlink($path . $file) or die("Failed to delete file");
	}
	}
?>

grazie ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
PS - Come mai è meglio non utilizzare i caratteri particolari?
per evitare i problemi di cui sopra.
se salvi su un db da una parte salvi i nomi così come sono, per i nomi dei file sostituisci i caratteri
poi guardo array_map
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema inserimento parole con apostrofo nel db PHP 5
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
radioButton Problema inserimento stringa con apostrofo in database sql Database 21
B Problema inserimento dati con apostrofo MySQL 1
P Problema apostrofo su database MySQL... MySQL 0
max_400 Problema apostrofo nella ricezione della variabile per poi scriverla dentro un file PHP 6
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0
G Problema update di un database PHP 0

Discussioni simili