Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #20242 > unrolled thread

PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick()

Started byWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
First post2016-01-26 04:13 -0800
Last post2016-01-27 16:01 +0100
Articles 17 — 7 participants

Back to article view | Back to it.comp.www.php


Contents

  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

#20242 — PHP/HTML/AJAX: eliminazione cartella/files attraverso OnClick()

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-01-26 04:13 -0800
SubjectPHP/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]


#20243

FromRedWiz <redwiz@inwind.it>
Date2016-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]


#20244

FromAlex <tommaso5ita@yahoo.it>
Date2016-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 + 
'&nbsp;: !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! : &nbsp;<b>' . $arrivo->testo . ' + ' . 
$arrivo->key . '</b>';


Bye.  S.E & O.

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20245

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-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]


#20246

Fromfmassei@gmail.com
Date2016-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]


#20249

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-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]


#20247

FromAlex <tommaso5ita@yahoo.it>
Date2016-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]


#20248

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-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]


#20250

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-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]


#20251

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-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]


#20252

FromAndrea D'Amore <anddam+NOSPAM@brapi.net>
Date2016-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]


#20254

FromAlex <tommaso5ita@yahoo.it>
Date2016-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]


#20255

FromAndrea D'Amore <anddam+NOSPAM@brapi.net>
Date2016-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]


#20253

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-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]


#20258

Fromfmassei@gmail.com
Date2016-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]


#20257

FromWTECH di Maurizio Romano <maurizio.romano.wtech@gmail.com>
Date2016-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]


#20260

FromAndrea D'Amore <anddam+NOSPAM@brapi.net>
Date2016-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