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.046
150
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.046
150
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.046
150
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
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
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

Discussioni simili