Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #20242 > unrolled thread
| Started by | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| First post | 2016-01-26 04:13 -0800 |
| Last post | 2016-01-27 16:01 +0100 |
| Articles | 17 — 7 participants |
Back to article view | Back to it.comp.www.php
PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-26 04:13 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() RedWiz <redwiz@inwind.it> - 2016-01-26 12:25 +0000
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Alex <tommaso5ita@yahoo.it> - 2016-01-26 13:56 +0100
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-26 09:17 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() fmassei@gmail.com - 2016-01-26 10:30 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() "ciccio" <21669invalid@mynewsgate.net> - 2016-01-26 21:24 +0000
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Alex <tommaso5ita@yahoo.it> - 2016-01-26 19:56 +0100
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-26 12:27 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Alessandro Pellizzari <shuriken@amiran.it> - 2016-01-26 21:54 +0000
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-26 14:47 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-01-27 08:50 +0100
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Alex <tommaso5ita@yahoo.it> - 2016-01-27 12:15 +0100
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-01-27 13:56 +0100
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-27 00:59 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() fmassei@gmail.com - 2016-01-27 06:50 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> - 2016-01-27 05:39 -0800
Re: PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-01-27 16:01 +0100
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-26 04:13 -0800 |
| Subject | PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick() |
| Message-ID | <97839744-9402-43e1-a26c-9861e61667e8@googlegroups.com> |
Salve a tutti,
ho la necessità di rimuovere una cartella con tutti i suoi files all'interno tramite pressione di un tasto "cancel" presente in un form sfruttanto la proprietà onclick().
Il percorso della cartella è memorizzato in una variabile di sessione $_SESSION['del_path_dir'].
Dopo essermi documentato ho compreso che, trattandosi di una pagina mista HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona sfruttando la tecnologia AJAX (che purtroppo non conosco).
Ho cercato di comprenderne il funzionamento e ho preparato il codice che mi permettesse di raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio considerato che non ho fatto altro che sperimentare)!
Chiedo quindi aiuto, con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è che non funziona e/o come rimediare.
Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
[btncftrsm.php] -> il file che contiene il codice dove è presente il pulsante.
<?php
session_start();
?>
<html>
<head>
<script type="text/javascript" src="../jquery/external/jquery/jquery.js"></script>
<script type="text/javascript">
function DelData()
{
var PathDel=$("#Path2Del").val();
$.ajax({
type:'POST',
url:'deltmpfiles.php',
data:PathDel,
success: function(response)
{
rrmdir(PathDel);
}
});
}
</script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<form method="post" action="conferma_2_0.php">
<input type="hidden" name="confermato" value="true">
<input type="hidden" name="Path2Del" id="Path2Del" value="<? echo $_SESSION['del_path_dir']?>" />
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6">
<input type="button" onClick="DelData()" value="Annulla e Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg" tabindex="1">
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<input type="submit" value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg" tabindex="2">
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
[deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere alla cancellazione della cartella e dei files contenuti in essa.
<?php
function rrmdir($strPATH)
{
if (is_dir($strPATH))
{
$objects = scandir($strPATH);
foreach ($objects as $object)
{
if ($object != "." && $object != "..")
{
if (filetype($strPATH."/".$object) == $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
}
}
reset($objects);
rmdir($strPATH);
}
echo "<script type=\"text/javascript\" charset=\"utf-8\">window.self.close()</script>";
}
/*
$percorso = $_POST['percorso'];
rrmdir($percorso);
*/
?>
Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente grato.
Maurizio
[toc] | [next] | [standalone]
| From | RedWiz <redwiz@inwind.it> |
|---|---|
| Date | 2016-01-26 12:25 +0000 |
| Message-ID | <n87ojb$dmv$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20242 |
On Tue, 26 Jan 2016 04:13:29 -0800, WTECH di Maurizio Romano wrote:
> [btncftrsm.php] -> il file che contiene il codice dove è presente il
> pulsante.
>
> <?php session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript"
> src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
le variabili post devono avere una chiave ed un valore, tu stai mandando
solo un valore, guarda gli esempi qui :
http://api.jquery.com/jquery.ajax/
In success stai chiamando una funzione php che risiede sul server (?!),
mentre dovresti chiamare una funzione javascript che avverte l'utente
delle esito dell' operazione (che sta dentro response).
[toc] | [prev] | [next] | [standalone]
| From | Alex <tommaso5ita@yahoo.it> |
|---|---|
| Date | 2016-01-26 13:56 +0100 |
| Message-ID | <n87qg9$14d5$1@adenine.netfront.net> |
| In reply to | #20242 |
WTECH di Maurizio Romano ha pensato forte :
> Salve a tutti,
>
> ho la necessità di rimuovere una cartella con tutti i suoi files all'interno
> tramite pressione di un tasto "cancel" presente in un form sfruttanto la
> proprietà onclick(). Il percorso della cartella è memorizzato in una
> variabile di sessione $_SESSION['del_path_dir'].
>
> Dopo essermi documentato ho compreso che, trattandosi di una pagina mista
> HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona
> sfruttando la tecnologia AJAX (che purtroppo non conosco). Ho cercato di
> comprenderne il funzionamento e ho preparato il codice che mi permettesse di
> raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio
> considerato che non ho fatto altro che sperimentare)! Chiedo quindi aiuto,
> con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è
> che non funziona e/o come rimediare.
>
> Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
>
>
>
> [btncftrsm.php] -> il file che contiene il codice dove è presente il
> pulsante.
>
> <?php
> session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript"
> src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
> </script>
> </head>
> <body>
> <div class="container">
> <div class="row">
> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2
> col-md-offset-3"> <form method="post" action="conferma_2_0.php">
> <input type="hidden" name="confermato" value="true">
> <input type="hidden" name="Path2Del" id="Path2Del" value="<? echo
> $_SESSION['del_path_dir']?>" /> <div class="row">
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="button" onClick="DelData()" value="Annulla e
> Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg"
> tabindex="1"> </div> <div
> class="col-xs-6 col-sm-6 col-md-6"> <input type="submit"
> value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg"
> tabindex="2"> </div> </div>
> </form>
> </div>
> </div>
> </div>
> </body>
> </html>
>
>
>
>
> [deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere
> alla cancellazione della cartella e dei files contenuti in essa. <?php
>
> function rrmdir($strPATH)
> {
> if (is_dir($strPATH))
> {
> $objects = scandir($strPATH);
> foreach ($objects as $object)
> {
> if ($object != "." && $object != "..")
> {
> if (filetype($strPATH."/".$object) ==
> $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
> } }
> reset($objects);
> rmdir($strPATH);
> }
> echo "<script type=\"text/javascript\"
> charset=\"utf-8\">window.self.close()</script>"; }
>
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
> ?>
>
>
>
> Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente
> grato.
>
>
> Maurizio
Ti mando un esempio.
Una chiamata aiax (no jQuery) ad un file AjTest.php
Il metodo è quello più complesso POST ma penso ti basterà usare il
metodo GET eseguendo una analisi in php più semplice dell' arrivo al
server
Ovviamente, il tuo file php deve rileggere la variabile di sessione e
fare le operazioni richieste. Alla fine invierà al browser un ok se
tutto è a posto. Con javascript leggerai la stringa di arrivo, se è ok
o meno e ti regolerai di conseguenza
--- AjTest.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>frammento Ajax</title>
<script type="text/javascript">
function AjTest(){
var a={};
a.testo = document.getElementById('divTest').innerHTML;
a.key = 'keyPagina';
var toServer = JSON.stringify(a);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'AjTest.php');
xhr.setRequestHeader("Content-Type", "text/plain");
xhr.send(toServer);
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200){
document.getElementById('divArrivo').innerHTML = xhr.responseText +
' : !Ok ritorno al browser';
}
};
}
</script>
</head>
<body>
<div style="margin-left: auto; margin-right: auto; margin-top:
25px;width:400px;">
<span>Digita un testo:</span>
<div id="divTest" style="border: 1px solid;width:300px; height:30px;"
contenteditable="true"></div>
<br>
<button id="buttonTest" style="width:150px; clear: left;"
onclick="AjTest();">INVIA</button>
<br>
<div id="divArrivo" style="color:red; margin-top:20px;"></div>
</div>
</body>
</html>
--- AjTest.php
<?php
header('Cache-Control: no-cache, must-revalidate');
$jarrivo=file_get_contents('php://input');
$arrivo = json_decode($jarrivo);
echo 'Server arrivo Ok! : <b>' . $arrivo->testo . ' + ' .
$arrivo->key . '</b>';
Bye. S.E & O.
--
Alex
--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-26 09:17 -0800 |
| Message-ID | <0d88514d-835d-49dc-a3d1-2c8126e240c7@googlegroups.com> |
| In reply to | #20242 |
Il giorno martedì 26 gennaio 2016 13:13:32 UTC+1, WTECH di Maurizio Romano ha scritto:
> Salve a tutti,
>
> ho la necessità di rimuovere una cartella con tutti i suoi files all'interno tramite pressione di un tasto "cancel" presente in un form sfruttanto la proprietà onclick().
> Il percorso della cartella è memorizzato in una variabile di sessione $_SESSION['del_path_dir'].
>
> Dopo essermi documentato ho compreso che, trattandosi di una pagina mista HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona sfruttando la tecnologia AJAX (che purtroppo non conosco).
> Ho cercato di comprenderne il funzionamento e ho preparato il codice che mi permettesse di raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio considerato che non ho fatto altro che sperimentare)!
> Chiedo quindi aiuto, con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è che non funziona e/o come rimediare.
>
> Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
>
>
>
> [btncftrsm.php] -> il file che contiene il codice dove è presente il pulsante.
>
> <?php
> session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript" src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
> </script>
> </head>
> <body>
> <div class="container">
> <div class="row">
> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
> <form method="post" action="conferma_2_0.php">
> <input type="hidden" name="confermato" value="true">
> <input type="hidden" name="Path2Del" id="Path2Del" value="<? echo $_SESSION['del_path_dir']?>" />
> <div class="row">
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="button" onClick="DelData()" value="Annulla e Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg" tabindex="1">
> </div>
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="submit" value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg" tabindex="2">
> </div>
> </div>
> </form>
> </div>
> </div>
> </div>
> </body>
> </html>
>
>
>
>
> [deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere alla cancellazione della cartella e dei files contenuti in essa.
> <?php
>
> function rrmdir($strPATH)
> {
> if (is_dir($strPATH))
> {
> $objects = scandir($strPATH);
> foreach ($objects as $object)
> {
> if ($object != "." && $object != "..")
> {
> if (filetype($strPATH."/".$object) == $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
> }
> }
> reset($objects);
> rmdir($strPATH);
> }
> echo "<script type=\"text/javascript\" charset=\"utf-8\">window.self.close()</script>";
> }
>
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
> ?>
>
>
>
> Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente grato.
>
>
> Maurizio
Buonasera,
do immediato riscontro breve a RedWiz, ringraziandolo e confermandogli che effettivamente sono piuttosto impreparato sull'argomento e che è per questo motivo che sento la necessità di trovare un'anima pia che possa aiutarmi nel risolvere il mio problema.della mia presenza quì.
Grazie per i link; sapevo che la tecnologia va approfondita. Se non fosse per l'urgenza che ho, mi sarei concesso il lusso di studiare per bene prima di ricorrere a determinate soluzioni. Purtroppo la chiamata in causa di AJAX non me l'aspettavo e sono con un sito (già online) che necessità urgentemente di questa funzionalità.
Sono consapevole di aver dato la sensazione di non avere le idee chairissime!
Infatti è così! :-/
Prima di rispondervi, ...ho cercato ancora di approfondire, ...quindi sono consapevole della sciocchezza di chiamare un funzione che sta sul server, tramire success!
Invece, per dare un riscontro ad Alez, che ringrazio, ...dico che ho analizzato con molta attenzione l'esempio che mi ha gentilmente postato. Hai ragione quando affermi che si tratta di un esempio complesso; infatti lo è così tanto (per me) che non sono sicurissimo di essere così bravo da riportarmi al mio problema, riadattando gli spunti sul codice che dovrebbe servire la mia causa.
Per esempio, non ho ben compreso cosa fa
a.key = 'keyPagina';
E ancora, nel tuo esempio, il valore che viaggia verso lo script viene prelevato attraverso
a.testo = document.getElementById('divTest').innerHTML;
Ma nel mio caso, dovrei passare una variabile di sessione
$_SESSION['del_path_dir']
Ma come?
E soprattutto, ...nel file che sta sul server c'è il codice relativo ad una funzione per la cancellazione della cartella con i files che ci stanno dentro! L'argomento come lo passo?
Insomma, ...ho davvero bisogno di un tutor telematico! :-)
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2016-01-26 10:30 -0800 |
| Message-ID | <e8fe7bdf-6903-43a8-b93f-6ad25623a7a4@googlegroups.com> |
| In reply to | #20245 |
On Tuesday, January 26, 2016 at 12:17:09 PM UTC-5, WTECH di Maurizio Romano wrote: > <snip> > Grazie per i link; sapevo che la tecnologia va approfondita. Se non fosse > per l'urgenza che ho, mi sarei concesso il lusso di studiare per bene prima > di ricorrere a determinate soluzioni. Purtroppo la chiamata in causa di AJAX > non me l'aspettavo e sono con un sito (già online) che necessità urgentemente > di questa funzionalità. > Sono consapevole di aver dato la sensazione di non avere le idee chairissime! > Infatti è così! :-/ > <snip> > Visto che hai un urgenza e non sai come fare (e, da quanto scrivi, ti manca ben più della conoscenza di AJAX), cerca un programmatore, fagli fare il lavoro, pagalo e poi (se ti va) leggiti il codice. Tieni presente che, anche tu ce la facessi da solo, quello che scrivi poi lo dovrai pure manutenere. Ciao
[toc] | [prev] | [next] | [standalone]
| From | "ciccio" <21669invalid@mynewsgate.net> |
|---|---|
| Date | 2016-01-26 21:24 +0000 |
| Message-ID | <2016012621245621669@mynewsgate.net> |
| In reply to | #20246 |
fmassei@gmail.com <fmassei@gmail.com> ha scritto: CUT > Visto che hai un urgenza e non sai come fare (e, da quanto scrivi, ti manca > ben più della conoscenza di AJAX), cerca un programmatore, fagli fare il > lavoro, pagalo e poi (se ti va) leggiti il codice. > Tieni presente che, anche tu ce la facessi da solo, quello che scrivi poi > lo dovrai pure manutenere. Quoto.
[toc] | [prev] | [next] | [standalone]
| From | Alex <tommaso5ita@yahoo.it> |
|---|---|
| Date | 2016-01-26 19:56 +0100 |
| Message-ID | <n88fiq$2ira$1@adenine.netfront.net> |
| In reply to | #20245 |
WTECH di Maurizio Romano ci ha detto :
>
> Buonasera,
>
> Invece, per dare un riscontro ad Alez, che ringrazio, ...dico che ho
> analizzato con molta attenzione l'esempio che mi ha gentilmente postato. Hai
> ragione quando affermi che si tratta di un esempio complesso; infatti lo è
> così tanto (per me) che non sono sicurissimo di essere così bravo da
> riportarmi al mio problema, riadattando gli spunti sul codice che dovrebbe
> servire la mia causa. Per esempio, non ho ben compreso cosa fa
>
> a.key = 'keyPagina';
Semplicemente imposta un valore unico, da controllare nel file
AjTest.php in modo da essere sicuri che la chiamata ajax sia legittima.
Queste chiamate posso essere fonte di bei buchi!
>
> E ancora, nel tuo esempio, il valore che viaggia verso lo script viene
> prelevato attraverso
>
> a.testo = document.getElementById('divTest').innerHTML;
>
> Ma nel mio caso, dovrei passare una variabile di sessione
>
> $_SESSION['del_path_dir']
>
> Ma come?
Il piccolo esempio html è solo indicativo. Tu ci metterai il tuo html
con chiamata ajax collegata ad un pulsante se ho capito.
Non ti serve passare una variabile di sessione perché dovrebbe essere
già stata impostata. Devi rileggerla in AjTest.php, però dovresti
davvero passare un id di pagina al server. Se usi ajax con il metodo
GET allora chiamerai AjTest.php?keyPagina=qualcosa
Dopo di che usi (in AjTest.php) il tuo codice php per fare le
cancellazioni.
Quando ha finito controlli che sia tutto a posto e mandi un 'ok' dal
server al browser. Con il javascript lo leggi e ti orienti in base alla
risposta.
Comunque un tantino di pratica è necessaria, specialmente per evitare i
famosi buchi.
L' idea di un programmatore terzo, per questa singola chiamata, non è
malvagia.
Bye
--
Alex
--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-26 12:27 -0800 |
| Message-ID | <9b5b4deb-b9ee-4315-a7bf-c9816f1305e1@googlegroups.com> |
| In reply to | #20242 |
Il giorno martedì 26 gennaio 2016 13:13:32 UTC+1, WTECH di Maurizio Romano ha scritto:
> Salve a tutti,
>
> ho la necessità di rimuovere una cartella con tutti i suoi files all'interno tramite pressione di un tasto "cancel" presente in un form sfruttanto la proprietà onclick().
> Il percorso della cartella è memorizzato in una variabile di sessione $_SESSION['del_path_dir'].
>
> Dopo essermi documentato ho compreso che, trattandosi di una pagina mista HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona sfruttando la tecnologia AJAX (che purtroppo non conosco).
> Ho cercato di comprenderne il funzionamento e ho preparato il codice che mi permettesse di raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio considerato che non ho fatto altro che sperimentare)!
> Chiedo quindi aiuto, con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è che non funziona e/o come rimediare.
>
> Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
>
>
>
> [btncftrsm.php] -> il file che contiene il codice dove è presente il pulsante.
>
> <?php
> session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript" src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
> </script>
> </head>
> <body>
> <div class="container">
> <div class="row">
> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
> <form method="post" action="conferma_2_0.php">
> <input type="hidden" name="confermato" value="true">
> <input type="hidden" name="Path2Del" id="Path2Del" value="<? echo $_SESSION['del_path_dir']?>" />
> <div class="row">
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="button" onClick="DelData()" value="Annulla e Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg" tabindex="1">
> </div>
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="submit" value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg" tabindex="2">
> </div>
> </div>
> </form>
> </div>
> </div>
> </div>
> </body>
> </html>
>
>
>
>
> [deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere alla cancellazione della cartella e dei files contenuti in essa.
> <?php
>
> function rrmdir($strPATH)
> {
> if (is_dir($strPATH))
> {
> $objects = scandir($strPATH);
> foreach ($objects as $object)
> {
> if ($object != "." && $object != "..")
> {
> if (filetype($strPATH."/".$object) == $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
> }
> }
> reset($objects);
> rmdir($strPATH);
> }
> echo "<script type=\"text/javascript\" charset=\"utf-8\">window.self.close()</script>";
> }
>
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
> ?>
>
>
>
> Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente grato.
>
>
> Maurizio
Buonasera a tutti,
Vi ringrazio per i suggerimenti, le indicazioni, i consigli e la pazienza dimostratami.
Spero di sfruttare al massimo i preziosi spunti giunti in questa discussione.
Saluti.
Maurizio
Maurizio
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-01-26 21:54 +0000 |
| Message-ID | <dgq899Ftao2U1@mid.individual.net> |
| In reply to | #20242 |
Il Tue, 26 Jan 2016 04:13:29 -0800, WTECH di Maurizio Romano ha scritto:
Premettendo che stai cancellando file sul server passando il path dal
client, che è una delle cose più pericolose che puoi fare, e che quindi ti
consiglio anche io di rivolgerti a un programmatore, ma MOLTO esperto.
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
AJAX non funziona così.
AJAX funziona mandando una richiesta HTTP al server, ma non ti "torna" lo
script PHP. Solo il suo output.
Questo per dire che la funzione rrmdir non la devi chiamare dentro
javascript, ma dentro PHP.
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
Cioè esattamente quello che hai commentato qui. :P
Come ti hanno già detto, poi, hai già la variabile in sessione sul server,
non serve (ed è pericoloso) mandarla a client per farsela rimandare
indietro.
Ti basta un rrmdir($_SESSION['del_path_dir'])
Ora capisco l'urgenza e la necessità di imparare (per questo te l'ho
spiegato), ma ripeto: se sbagli qualcosa chiunque potrà cancellare
qualsiasi file sul tuo server, quindi fai esperimenti in privato su un
server che puoi permetterti di perdere e dover formattare, ma non usare
quello che ti ho detto in produzione.
Bye.
[toc] | [prev] | [next] | [standalone]
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-26 14:47 -0800 |
| Message-ID | <4136c11b-9069-4bd8-bc23-80b85d27749f@googlegroups.com> |
| In reply to | #20250 |
Ciao Alessandro, Ringrazio anche te, per la pazienza con la quale ti sei soffermato nel rispondermi. In effetti, le porzioni di codice che ho postato, alcune delle quali commentate (te ne sei accorto), sono la risultante di modifiche e modifiche apportate ad un codice che inizialmente era più' pulito e forse anche più' vicino ai risultati che devo, al più' presto, raggiungere. Inizialmente, infatti, l'approccio era più' prossimo a quanto da te rimarcato (anche se non privo di errori), ma poi, assenza di risultati, disperazione e scarsa conoscenza, mi hanno portato a rendere il codice quel che hai visto anche tu. Preziose le precisazioni che voluto darmi; ...rivedro' il codice tenedone conto e prestero' massima attenzione alla sicurezza (non pensavo che rimuovere una cartella temporanea sul server mi esponesse cosi' tanto). Quindi, ...il nodo sta nello script ajax con il quale devo impartire l'ordine al server di eseguire il codice presente nel file.php che lo contiene senza preoccuparmi di passare il path (visto che una variabile di sessione lo contiene, anche se per un brevissimo momento)! E fare in modo di innescare questo meccanismo sruttando l'evento on click di un pulsante "annulla". Speriamo bene. Ancora grazie.
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-01-27 08:50 +0100 |
| Message-ID | <n89sri$lf5$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20251 |
On 2016-01-26 22:47:58 +0000, WTECH di Maurizio Romano said: > e forse anche più' vicino ai risultati che devo, al più' presto, raggiungere. "Prima di ieri perché ho premura" Puoi spiegare il problema vero alla bas? Non intendo "devo cancellare una directory sul server premendo…" che è come l'hai riassunto ma quello a monte che ti fa pensare che "devi cancellare una directory". Magari è un XY e qualcuno ti indica una strada migliore. Per la cronaca hai fatto una domanda _molto_ migliore di tante altre che compaiono spesso sul gruppo e che con PHP non c'entrano una fava - tipo i database o le configurazioni varie dei webserver, dalla cache a redirect- perché almeno hai postato il codice a cui sei arrivato dopo qualche sforzo, ed esr riposa contento. -- Andrea
[toc] | [prev] | [next] | [standalone]
| From | Alex <tommaso5ita@yahoo.it> |
|---|---|
| Date | 2016-01-27 12:15 +0100 |
| Message-ID | <n8a8v0$nn3$1@adenine.netfront.net> |
| In reply to | #20251 |
WTECH di Maurizio Romano ha spiegato il 26/01/2016 : > Ciao Alessandro, > E quindi il codice del sito l'hai scritto tu e ci tieni a completarlo tu. Comprensibile. Beh, con un po' di pazienza e un certo numero di prove inquadrerai ajax e ne verrai a copo. Nel caso ti servisse (non oneroso) un ambiente di sviluppo, dove inserire un robots.txt che vieta l'indirizzamento ai bot, fammelo sapere. Bye -- Alex --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-01-27 13:56 +0100 |
| Message-ID | <n8aepp$6bd$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20254 |
On 2016-01-27 11:15:34 +0000, Alex said: > Nel caso ti servisse (non oneroso) un ambiente di sviluppo, dove > inserire un robots.txt che vieta l'indirizzamento ai bot, fammelo > sapere. Eh? -- Andrea
[toc] | [prev] | [next] | [standalone]
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-27 00:59 -0800 |
| Message-ID | <303047ae-3ae6-46fa-9eea-fbf267c4232c@googlegroups.com> |
| In reply to | #20242 |
Il giorno martedì 26 gennaio 2016 13:13:32 UTC+1, WTECH di Maurizio Romano ha scritto:
> Salve a tutti,
>
> ho la necessità di rimuovere una cartella con tutti i suoi files all'interno tramite pressione di un tasto "cancel" presente in un form sfruttanto la proprietà onclick().
> Il percorso della cartella è memorizzato in una variabile di sessione $_SESSION['del_path_dir'].
>
> Dopo essermi documentato ho compreso che, trattandosi di una pagina mista HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona sfruttando la tecnologia AJAX (che purtroppo non conosco).
> Ho cercato di comprenderne il funzionamento e ho preparato il codice che mi permettesse di raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio considerato che non ho fatto altro che sperimentare)!
> Chiedo quindi aiuto, con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è che non funziona e/o come rimediare.
>
> Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
>
>
>
> [btncftrsm.php] -> il file che contiene il codice dove è presente il pulsante.
>
> <?php
> session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript" src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
> </script>
> </head>
> <body>
> <div class="container">
> <div class="row">
> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
> <form method="post" action="conferma_2_0.php">
> <input type="hidden" name="confermato" value="true">
> <input type="hidden" name="Path2Del" id="Path2Del" value="<? echo $_SESSION['del_path_dir']?>" />
> <div class="row">
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="button" onClick="DelData()" value="Annulla e Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg" tabindex="1">
> </div>
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="submit" value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg" tabindex="2">
> </div>
> </div>
> </form>
> </div>
> </div>
> </div>
> </body>
> </html>
>
>
>
>
> [deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere alla cancellazione della cartella e dei files contenuti in essa.
> <?php
>
> function rrmdir($strPATH)
> {
> if (is_dir($strPATH))
> {
> $objects = scandir($strPATH);
> foreach ($objects as $object)
> {
> if ($object != "." && $object != "..")
> {
> if (filetype($strPATH."/".$object) == $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
> }
> }
> reset($objects);
> rmdir($strPATH);
> }
> echo "<script type=\"text/javascript\" charset=\"utf-8\">window.self.close()</script>";
> }
>
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
> ?>
>
>
>
> Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente grato.
>
>
> Maurizio
C.mo Andrea, buongiorno anche a te.
Intanto grazie per la considerazione e per la tua incoraggiante pazienza.
Effettivamente chiedi bene ed io cercherò di risponderti in maniera dettagliata, sapendo che approfitterò del tuo prezioso tempo. Sorry!
Ho realizzato un applicazione in PHP (già funzionante e regolarmente utilizzata dagli utenti) che in alcune fasi di calcolo, genera delle cartelle con all'interno dei files.
A seconda dell'esito dell'elaborazione (il risultato è al vaglio dell'utente tramite la visualizzazione di una preview all'interno di una popup) queste cartelle, se il risultato non soddisfa l'utente, potrebbero diventare inutili e quindi andrebbero eliminate.
Ed eccoci giunti al mio ostacolo: nella popup con la preview ho due pulsanti (Annulla/Modifica) e (Accetta/Trasmetti).
Sul primo dovrei incentrare le funzionalità per rimuovere la ormai famosa ed odiata cartella con i files al suo interno! :-/
Vincolato dal metodo POST per un eventuale conferma dell'elaborazione (guardando il codice noterai che i due pulsanti fanno parte di un banale FORM), pensavo di appoggiarmi sull'evento OnClick del primo pulsante così da rimuovere i dati dell'elaborazione.
Ho la sensazione che la soluzione del mio problema sia più semplice di come mi stia sembrando e che il nodo sta solo nell'esatta impostazione dello script AJAX con il quale devo poter indirizzare l'ordine al server per eseguire il codice utile ad eliminare la cartella.
Tutto quì.
Ancora grazie per l'attenzione. Ti auguro una serena giornata e buon lavoro.
Maurizio.
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2016-01-27 06:50 -0800 |
| Message-ID | <999ec5d5-214c-4f40-a0dc-80394e2b2e44@googlegroups.com> |
| In reply to | #20253 |
On Wednesday, January 27, 2016 at 3:59:25 AM UTC-5, WTECH di Maurizio Romano > Ho realizzato un applicazione in PHP (già funzionante e regolarmente > utilizzata dagli utenti) che in alcune fasi di calcolo, genera delle > cartelle con all'interno dei files. > A seconda dell'esito dell'elaborazione (il risultato è al vaglio dell'utente > tramite la visualizzazione di una preview all'interno di una popup) queste > cartelle, se il risultato non soddisfa l'utente, potrebbero diventare inutili > e quindi andrebbero eliminate. > Ed eccoci giunti al mio ostacolo: nella popup con la preview ho due pulsanti > (Annulla/Modifica) e (Accetta/Trasmetti). > Sul primo dovrei incentrare le funzionalità per rimuovere la ormai famosa ed > odiata cartella con i files al suo interno! :-/ > Vincolato dal metodo POST per un eventuale conferma dell'elaborazione > (guardando il codice noterai che i due pulsanti fanno parte di un banale > FORM), pensavo di appoggiarmi sull'evento OnClick del primo pulsante così da > rimuovere i dati dell'elaborazione. > Ho la sensazione che la soluzione del mio problema sia più semplice di come > mi stia sembrando e che il nodo sta solo nell'esatta impostazione dello > script AJAX con il quale devo poter indirizzare l'ordine al server per > eseguire il codice utile ad eliminare la cartella. > Tutto quì. > Fermo restando quello che ho scritto sopra... Non ti serve necessariamente Ajax, puoi fare anche una pagina come tutte le altre. Ajax in questo caso servirebbe solo per rendere l'interfaccia più interattiva, ma niente ti vieta di mettere un bottone o un link ad una seconda pagina che effettua la cancellazione, scrive "ok, ho cancellato" e un link "torna indietro". Per punti bonus: collegandosi a quello che ha scritto Alessandro, visto che le tue cartelle vengono da un processo residente sul server, non c'è bisogno di trasmettere (o di far vedere, per questo) all'utente il path di suddetta cartella; se l'utente vuole cancellare "i file di preview del processo tal-de-tali" il server già sà di quale cartella si tratta. Ciao!
[toc] | [prev] | [next] | [standalone]
| From | WTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com> |
|---|---|
| Date | 2016-01-27 05:39 -0800 |
| Message-ID | <ab47d7f3-5f27-47a0-8107-97b686fe5896@googlegroups.com> |
| In reply to | #20242 |
Il giorno martedì 26 gennaio 2016 13:13:32 UTC+1, WTECH di Maurizio Romano ha scritto:
> Salve a tutti,
>
> ho la necessità di rimuovere una cartella con tutti i suoi files all'interno tramite pressione di un tasto "cancel" presente in un form sfruttanto la proprietà onclick().
> Il percorso della cartella è memorizzato in una variabile di sessione $_SESSION['del_path_dir'].
>
> Dopo essermi documentato ho compreso che, trattandosi di una pagina mista HTML/PHP, dovevo necessariamente ricorrere ad una chiamata asincrona sfruttando la tecnologia AJAX (che purtroppo non conosco).
> Ho cercato di comprenderne il funzionamento e ho preparato il codice che mi permettesse di raggiungere l'obiettivo; ...purtoppo senza successo (non mi meraviglio considerato che non ho fatto altro che sperimentare)!
> Chiedo quindi aiuto, con la speranza che qualcuno di voi possa illuminarmi per comprendere cos'è che non funziona e/o come rimediare.
>
> Qui di seguito le porzioni di codice relative ai due file chiamati in causa:
>
>
>
> [btncftrsm.php] -> il file che contiene il codice dove è presente il pulsante.
>
> <?php
> session_start();
> ?>
> <html>
> <head>
>
> <script type="text/javascript" src="../jquery/external/jquery/jquery.js"></script>
>
> <script type="text/javascript">
> function DelData()
> {
> var PathDel=$("#Path2Del").val();
> $.ajax({
> type:'POST',
> url:'deltmpfiles.php',
> data:PathDel,
> success: function(response)
> {
> rrmdir(PathDel);
> }
> });
> }
> </script>
> </head>
> <body>
> <div class="container">
> <div class="row">
> <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
> <form method="post" action="conferma_2_0.php">
> <input type="hidden" name="confermato" value="true">
> <input type="hidden" name="Path2Del" id="Path2Del" value="<? echo $_SESSION['del_path_dir']?>" />
> <div class="row">
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="button" onClick="DelData()" value="Annulla e Modifica" id="Annulla e Modifica" class="btn btn-primary btn-block btn-lg" tabindex="1">
> </div>
> <div class="col-xs-6 col-sm-6 col-md-6">
> <input type="submit" value="Conferma e Trasmetti" class="btn btn-primary btn-block btn-lg" tabindex="2">
> </div>
> </div>
> </form>
> </div>
> </div>
> </div>
> </body>
> </html>
>
>
>
>
> [deltmpfiles.php] -> il file dove è presente il codice che dovrebbe provedere alla cancellazione della cartella e dei files contenuti in essa.
> <?php
>
> function rrmdir($strPATH)
> {
> if (is_dir($strPATH))
> {
> $objects = scandir($strPATH);
> foreach ($objects as $object)
> {
> if ($object != "." && $object != "..")
> {
> if (filetype($strPATH."/".$object) == $strPATH) rrmdir($strPATH."/".$object); else unlink($strPATH."/".$object);
> }
> }
> reset($objects);
> rmdir($strPATH);
> }
> echo "<script type=\"text/javascript\" charset=\"utf-8\">window.self.close()</script>";
> }
>
> /*
> $percorso = $_POST['percorso'];
> rrmdir($percorso);
> */
> ?>
>
>
>
> Se qualcuno avesse un po' di tempo da dedicarmi, gliene sarei infinitamente grato.
>
>
> Maurizio
@Alex.
Grazie - ricevuto - ne terrò conto.
@Andrea.
Quel tuo "Eh?" è rivolto ad Alex?
Oppure è rivolto a me? (La mia isposta alla tua domanda di ieri, sta immediatamente prima dell'ultimo intervento di Alex).
Saluti a tutti e due...
[toc] | [prev] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-01-27 16:01 +0100 |
| Message-ID | <n8am3h$d3d$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20257 |
On 2016-01-27 13:39:31 +0000, WTECH di Maurizio Romano said: > Quel tuo "Eh?" è rivolto ad Alex? > Oppure è rivolto a me? (La mia isposta alla tua domanda di ieri, sta > immediatamente prima dell'ultimo intervento di Alex). Non ho idea di dove sia perché uso un newsreader online (e comunque mette le ultime risposte in cima). Se rispondi a qualcuno devi rispondere al messaggio in questione, non ad un altro. I messaggi di usenet hanno un riferimento al messaggio genitore, è questo che costruisce l'albero della discussione. E comunque non riportare una parte completamente inutile alla discussione, come hai fatto ora con la tua domanda iniziale, vedi <https://en.wikipedia.org/wiki/Posting_style#Trimming_and_reformatting>. -- Andrea
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web