Ciao sapete darmi dei consigli su come possa fare a cancellare dei file usando i checkbox...
tipo come succede su altervista con i messaggi...^^
Ciao sapete darmi dei consigli su come possa fare a cancellare dei file usando i checkbox...
tipo come succede su altervista con i messaggi...^^
per utilizzare checkbox in php, per esempio scrivi un input nel form html:
poi effettui il controllo in php:Codice HTML:<form method='post' action='<? echo $phpself; ?>' name='messaggi'> //prelevi i messaggi dalla tabella del db dove sono memorizzati e per ogni messaggio //crei la casella da spuntare per la cancellazione <input type="checkbox" name="delete" value=""/> Cancella il messaggio //completi il form con i bottoni invio, ecc... </form>
Codice PHP:
if ($_POST["delete"] == true) //cancella il messaggio
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
Si ma lui come capisce quale file o cartella cancellare poi se sono più di uno....
Quello che dici tu non centra perchè le cose che devo cancellare sono sul mio sito
perchè usoCodice:Codice PHP:
glob('../*');
Funzioni phpCodice PHP:
<form name="Form" action="">
<input name="checkbox1" type="checkbox">File1
<input name="checkbox1" type="checkbox">File2
<input name="checkbox1" type="checkbox">File3
</form>
Cancella la cartella:
Cancella il file:Codice PHP:
function Cancella_Cartella($dir){
if(is_dir($dir)){
if(rmdir($dir)){
$cancella = 'La Directory è stato cancellata';
}else{
$cancella = "Impossibile cancellare La Directory";
}}else{
$cancella = 'La Directory non esiste';
}
return $cancella;
}
Codice PHP:
function Cancella_File($file){
if(file_exists($file)){
if(unlink($file)){
$cancella = "Il File è stato cancellato";
}else{
$cancella = "Impossibile cancellare il File";
}}else{
$cancella = 'Il File non esiste';
}
return $cancella;
}
Ma lui ha detto checkbox multipli:
Codice PHP:
foreach($_POST['delete'] as $file) { // con dovuti controlli su file, non vorrai farti cancellare altri file..
unlink($file);
}
Ultima modifica di javascripter : 02-06-2010 alle ore 15.00.11
si pero vorrei fare che se e un file chiama la funzionese e un cartella chiama la funzioneCancella_FileCancella_Cartella
il mio era solo un esempio per i messaggi, per messaggi multipli, con un id per ogni messaggio:
Codice PHP:
<form method="post" action="<? echo $phpself; ?>">
<?
//connessione al db
$messaggi=mysql_query("select * from messaggi");
while($array=mysql_fetch_array($messaggi)){
echo "<tr>";
echo"<td><input type=\"checkbox\" name=\"item[]\" value=\"$array[id]\"></td>";
echo"<td>$array[messaggio]</td>";
echo "</tr>";
}
?>
<input type="submit" value="cancella">
</form>
<?
$item=$_POST['item'];
//connessione al db
foreach ($item as $id){
if(strlen($id)>0){
$query="delete from messaggi where id='$id'";
$messaggi=mysql_query("$query");
if($messaggi) echo"elminazione di $id eseguita<br>";
else echo"elminazione non eseguita<br>";
}
}
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
io non devo cancellare dei messaggi sul db...
ma devo cancellare dei file e cartelle tramite la selezione dei checkbox...
tramite il db memorizzi gli id di ogni file che salvi in una cartella con la funzione copy o
move_uploaded_file, e dai all'id la data.
oppure all'id dai il nome del file....
quindi richiami l'id di ogni file stampando per ogni file il checkbox e il file name
per cancellare il file utilizzi la funzione @unlink
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
perchè devo usare il db in questo modo...
io uso la funzione glob che mi dice tutti i file che sono sul mio sito...
vorrei fare che cliccando sui vari checkbox e poi su un pulsante...
mi cancella i file e le directory usando quelle funzioni che prima ho postato....
senza usare il db, ho fatto così e funziona, tu puoi modificare inserendo le tue funzioni...
per vedere come funziona, per una dimostrazione:
http://eurosalute.altervista.org/rotating_banner/
per caricare altre immagini
http://eurosalute.altervista.org/rotating_banner/admin
il codice php della pagina index.php, dove ho inserito il codice con il checkbox multipli:
Codice PHP:
<?
$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
$cartella="images/";
echo "<p></p>Lista File presenti nella cartella ==> ".$cartella."<p></p>";
if ($_POST['cancella'])
{
$check=$_POST['check'];
foreach ($check as $file_name)
{
if (file_exists($cartella.$file_name))
{
if (unlink($cartella.$file_name)) echo "<br>Il File è stato cancellato ==> ".$file_name;
else echo "<br>Impossibile cancellare il File";
}
else echo "<br>Il File non esiste";
}//end foreach
}//end $_POST['cancella']
function visualizzafile($cartella,$ext_ammesse){
$array_file=Array();
if(file_exists($cartella)){
$handle = opendir($cartella);
while (false !== ($file = readdir($handle))) {
if(is_file($cartella.$file)){
$estensione = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
if(in_array($estensione,$ext_ammesse)){
array_push($array_file,$file);
}
}
}
$handle = closedir($handle);
}
shuffle($array_file); //mescola ordine array in modo casuale
return $array_file;
}
//$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
//$cartella="images/";
$array_file=visualizzafile($cartella,$ext_ammesse);
$n_elementi=count($array_file); //se si vogliono visualizzare tutte le immagini contenute nella cartella: $n_elementi=count($array_immagini);
?>
<p></p>
<form action="index.php" method="post">
<?
for($a=0;$a<$n_elementi;$a++){
?>
<table>
<tr><td width="200px"><img src="<?=$cartella.$array_file[$a]?>" border="0">
</td><td><input type='checkbox' name='check[]' value='<?=$array_file[$a]?>'>
</td></tr></table>
<p></p>
<?
}
?>
<input type="submit" value="Cancella" name="cancella">
</form>
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
@EuroSalute: Il tuo script non è per niente sicuro, sono riuscito a cancellarti il file index.php (della cartella rotating_banner). Siccome non sono cattivo, non sono andato oltre ! E in un certo senso, ti ho salvato il sito da ulteriori attacchi
Ultima modifica di javascripter : 03-06-2010 alle ore 13.47.32
mi spieghi come hai fatto a cancellarlo???
e quali misure di sicurezza dovrei adottare?
grazie
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
penso di sapere non so se la stessa cosa che penso io.....
?choice=delete&bannerid=
si ma questi file non sono protetti, sono solo pagine di prova.....
o poi perchè cancellarli....
Ti va bene il codice di esempio? sei riuscito a fare quello che volevi?
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
si ce lo fatta in un altro modo...^^
ma ti spiego cosa devo fare io....
Ho un elenco di file e cartelle ognuno di loro ad un checkbox...
cliccando su una serie di checkbox e poi cliccando su cancella...
Dovrebbe fare che prima di cancellare i file chieda una conferma con elenco dei file da cancellare e un pulsante per poi cancellarli....
avete dei consigli su come possa fare...
Mi è bastato modificare il valore di una checkbox, selezionarla e inviare i dati.
Secondo me il modo migliore per difendersi è creare un array dei file da mostrare/far cancellare ( glob() ) e poi usare in_array.
P.S. Poi c'è anche un altro metodo, inviare con le cURL/fsockopen dati via POST: nel tuo caso check (check[]=file&check[]=altro)Codice PHP:
$files = glob('images/*.*');
foreach($_POST['check'] as $file) {
if(!in_array($file, $files)) {
continue; // salta il loop
}
@unlink($file);
}
Ultima modifica di javascripter : 03-06-2010 alle ore 18.25.55
come devo fare a fare in quel modo....
@javascript ti ricordi quella cosa ce qualche soluzione...^^
grazie dei consigli Javascripter,
penso di aver fatto bene adesso, se puoi controlla!?
per hotmailpower, ho fatto il controllo di conferma per i checkbox con javascript....funziona!!!
codice pagina index.php:
Codice PHP:
<html>
<head>
<script>
function conferma() {
if (document.getElementById('valida').checked) {
if (confirm('Sei sicuro?')){
return true;
}
else {
alert ("Richiesta Annullata!");
window.location = "index.php";
return false;
}
}//end checked
}
</script>
</head>
<body>
<!-- codice rotating banner -->
<?
$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
$cartella="images/";
$attempt=false;
echo "<p></p>Lista File presenti nella cartella ==> ".$cartella."<p></p>";
if ($_POST['cancella']) {
if ( is_array($_POST) ) {
$check='';
$check=$_POST['check'];
if (!empty($check)) {
?>
<?
//$files = glob($cartella.'*.*');
$files=glob(''.$cartella.'*.*')?glob(''.$cartella.'*.*'):array();
foreach (glob(''.$cartella.'*.*') as $file_name) {
echo "$file_name size ==> " . filesize($file_name) . "<br>";
//array_push($array_lista_file,$file_name);
}
}//end !empty
else echo "Non hai selezionato alcun file!";
foreach ($check as $file_name)
{
//$file_name non è array
//array_push($array_file_name,$file_name);
if(in_array($cartella.$file_name, $files)) {
if (file_exists($cartella.$file_name))
{
if (unlink($cartella.$file_name)) echo "<br>Il File è stato cancellato ==> ".$file_name;
else echo "<br>Impossibile cancellare il File";
}
else echo "<br>Il File non esiste";
}//end in_array
else $attempt=true;
}//end foreach
}//end is_array
else $attempt=true;
}//end $_POST['cancella']
if (!$attempt) {
function visualizzafile($cartella,$ext_ammesse){
$array_file=Array();
if(file_exists($cartella)){
$handle = opendir($cartella);
while (false !== ($file = readdir($handle))) {
if(is_file($cartella.$file)){
$estensione = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
if(in_array($estensione,$ext_ammesse)){
array_push($array_file,$file);
}
}
}
$handle = closedir($handle);
}
shuffle($array_file); //mescola ordine array in modo casuale
return $array_file;
}
//$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
//$cartella="images/";
$array_file=visualizzafile($cartella,$ext_ammesse);
$n_elementi=count($array_file); //se si vogliono visualizzare tutte le immagini contenute nella cartella: $n_elementi=count($array_immagini);
?>
<p></p>
<form action="index.php" method="post" name="delform">
<?
for($a=0;$a<$n_elementi;$a++){
?>
<table>
<tr><td width="200px"><img src="<?=$cartella.$array_file[$a]?>" border="0">
</td><td><input type='checkbox' name='check[]' value='<?=$array_file[$a]?>' id='valida'>
</td></tr></table>
<p></p>
<?
}
?>
<input type="submit" value="Cancella" name="cancella" onclick="javascript: return conferma();">
</form>
<?
}
else echo "Hack Attempt!";
?>
</body>
</html>
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
grazie dei consigli Javascripter,
penso di aver fatto bene adesso, se puoi controlla!?
per hotmailpower, ho fatto il controllo di conferma per i checkbox con javascript....funziona!!!
codice pagina index.php:
Codice PHP:
<html>
<head>
<script>
function conferma() {
if (document.getElementById('valida').checked) {
if (confirm('Sei sicuro?')){
return true;
}
else {
alert ("Richiesta Annullata!");
window.location = "index.php";
return false;
}
}//end checked
}
</script>
</head>
<body>
<!-- codice rotating banner -->
<?
$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
$cartella="images/";
$attempt=false;
echo "<p></p>Lista File presenti nella cartella ==> ".$cartella."<p></p>";
if ($_POST['cancella']) {
if ( is_array($_POST) ) {
$check='';
$check=$_POST['check'];
if (!empty($check)) {
//$files = glob($cartella.'*.*');
$files=glob(''.$cartella.'*.*')?glob(''.$cartella.'*.*'):array();
foreach (glob(''.$cartella.'*.*') as $file_name) {
echo "$file_name size ==> " . filesize($file_name) . "<br>";
//array_push($array_lista_file,$file_name);
}
}//end !empty
else echo "Non hai selezionato alcun file!";
foreach ($check as $file_name)
{
//$file_name non è array
//array_push($array_file_name,$file_name);
if(in_array($cartella.$file_name, $files)) {
if (file_exists($cartella.$file_name))
{
if (unlink($cartella.$file_name)) echo "<br>Il File è stato cancellato ==> ".$file_name;
else echo "<br>Impossibile cancellare il File";
}
else echo "<br>Il File non esiste";
}//end in_array
else $attempt=true;
}//end foreach
}//end is_array
else $attempt=true;
}//end $_POST['cancella']
if (!$attempt) {
function visualizzafile($cartella,$ext_ammesse){
$array_file=Array();
if(file_exists($cartella)){
$handle = opendir($cartella);
while (false !== ($file = readdir($handle))) {
if(is_file($cartella.$file)){
$estensione = strtolower(substr($file, strrpos($file, "."), strlen($file)-strrpos($file, ".")));
if(in_array($estensione,$ext_ammesse)){
array_push($array_file,$file);
}
}
}
$handle = closedir($handle);
}
shuffle($array_file); //mescola ordine array in modo casuale
return $array_file;
}
//$ext_ammesse=array('.jpg','.jpeg','.gif','.png');
//$cartella="images/";
$array_file=visualizzafile($cartella,$ext_ammesse);
$n_elementi=count($array_file); //se si vogliono visualizzare tutte le immagini contenute nella cartella: $n_elementi=count($array_immagini);
?>
<p></p>
<form action="index.php" method="post" name="delform">
<?
for($a=0;$a<$n_elementi;$a++){
?>
<table>
<tr><td width="200px"><img src="<?=$cartella.$array_file[$a]?>" border="0">
</td><td><input type='checkbox' name='check[]' value='<?=$array_file[$a]?>' id='valida'>
</td></tr></table>
<p></p>
<?
}
?>
<input type="submit" value="Cancella" name="cancella" onclick="javascript: return conferma();">
</form>
<?
}
else echo "Hack Attempt!";
?>
</body>
</html>
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE
Ho controllato e mi da "hacking attemp".
Nel codice hai fatto un pò di disordine, ti basta usare glob per estrarre i files senza usare opendir -> readdir
il controllo che vorrei fare io e come quello che usa tipo altervista quando cancelli un file....
non è che ho fatto confusione, è che ho lasciato opendir e readdir, ricordo che è un file di prova...
nel javascript di conferma cancellazione però non funziona in parte il controllo checked dell'input type=checkbox, per l'appunto questa riga di codice:
funziona solo spuntando la prima casella del primo file che visualizza....Codice HTML:if (document.getElementById('valida').checked) { ....ecc. e nell'input: <input type='checkbox' name='check[]' value='<?=$array_file[$a]?>' id='valida'>
javascripter hai qualche soluzione?
ho trovato questa soluzione:
Codice HTML:function conferma() { //if (document.getElementById('valida').checked) { var checkboxes = document.delform.elements['check[]']; //array di checkboxes for (i=0;i<checkboxes.length;i++) { if (checkboxes[i].checked==true) { if (confirm('Sei sicuro di cancellare i file selezionati?')){ return true; } else { alert ("Richiesta Annullata!"); window.location = "index.php"; return false; } }//end checked else if (i == checkboxes.length-1) alert ("Non hai selezionato alcun file!"); }//end for }
Ultima modifica di EuroSalute : 06-06-2010 alle ore 13.22.23 Motivo: dovrei aver risolto....
LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org
VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
FAI IL TEST CON L'ANALISI VINCITE