Autore Topic: [Risolto] Stampare codice eseguibile con echo  (Letto 331 volte)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
[Risolto] Stampare codice eseguibile con echo
« il: 04 Giu 2019, 15:23:16 »
Buongiorno

Devo scansionare i file di una directory e ricavarne del codice per mostrare una galleria.

Parto da un semplice elenco di link ai file  .jpg scansionati.
Con questo codice ottengo la lista dei file .jpg
Codice: [Seleziona]
<?php
if ($handle opendir('directory-da-scansionare'))
{
   while (
false !== ($file readdir($handle)))
   {
echo htmlspecialchars ("<h2><a href=\"$file\">file</a>"."<br><h2>");
   }
   
closedir($handle);
}

Lista che però non mi rende il risultato come link ma come testo,
<h2><a href="DSC_0031.jpg">file[/url]
<h2><h2><a href="DSC_0048.jpg">file[/url]
, ecc.

Come faccio ad ottenere una lista file come link?
« Ultima modifica: 06 Giu 2019, 09:01:09 da tomtomeight »
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline danielecr

  • Abituale
  • ****
  • Post: 1254
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #1 il: 04 Giu 2019, 15:39:51 »
Credo tu debba scrivere anche il template base html se non l'hai già fatto.Il problema è htmlspecialchars, che non renderizza il contenuto.Visto che non è l'utente a mandare codice il rischio di xss si riduce anche senza usare htmlspecialchars.
Prova a partire da qua:

Codice: [Seleziona]
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if ($handle opendir('/Applications/MAMP/htdocs/scan/'))
{
   while (
false != ($file readdir($handle)))

   {
if(exif_imagetype('/Applications/MAMP/htdocs/scan/'.$file) == IMAGETYPE_JPEG){
echo '<h2><a href=/scan/';
echo $file;
echo '>file</a><br></h2>';
}
   }
   
closedir($handle);
}
?>

</body>
</html>
« Ultima modifica: 04 Giu 2019, 16:38:09 da danielecr »

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #2 il: 04 Giu 2019, 16:40:10 »
Ciao

Sì certo quel codice sta in un file .php non da solo.

Avevo iniziato con l'ottenere il codice di un elenco di link immagini per poi ampliare per ottenere la visualizzazione delle immagini come mosaico responsive.
Il file funziona già con codice di visualizzazione per ogni  immagine ma essendo moltissime immagine volevo automatizzare il processo a partire da una directory.
Puoi vedere il file funzionante a https://sisinternational.net/mosaico/gallery-responsive.php
e quello con elenco a https://sisinternational.net/mosaico/gallery.php
Poi cercherò di trasformare il tutto n un modulo joomla.
« Ultima modifica: 04 Giu 2019, 16:43:58 da tomtomeight »
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #3 il: 04 Giu 2019, 17:13:37 »
Credo di aver capito.
Dato che  c'è un div display none e un htmlspecialchars di troppo.
Ovviamente se inserisco il codice sopra al div ottengo l'elenco dei link.
Ora dovrò costruire con echo tutto il codice di una singola immagine che poi verrà ripetuto per tutte le immagini presenti.
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #4 il: 04 Giu 2019, 17:50:19 »
Ci sono quasi.
Mi visualizza solo una miniatura mentre visualizza tutte quelle dello slider quando si ingrandisce la prima.

Codice corrente:

Codice: [Seleziona]
<div id="gallery" style="display:none;">
<?php
if ($handle opendir('mini'))
{
   while (
false !== ($file readdir($handle)))
   {

echo "<a href=\"#\">
<img alt=\"\"
src=\"mini/
$file\"
data-image=\"zoom/
$file\"
data-description=\"\"
style=\"display:none\">
</a>"
   ;
   }
   
closedir($handle);
}

?>


</div>
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #5 il: 04 Giu 2019, 18:47:22 »
Non ci posso credere le miniature vengono posizionate una dietro l'altra, eppure fra queste due pagine:

https://sisinternational.net/mosaico/galleria.php
https://sisinternational.net/mosaico/gallery-responsive.php

i due html del 'visualizza sorgente pagina' sono identici (salvo il numero delle img)
ma il primo non gira come il secondo.

Ok in attesa di risolvere passo a trasformarlo in un modulo joomla.
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Stampare codice eseguibile con echo
« Risposta #6 il: 05 Giu 2019, 10:18:00 »
Aggiornamento:

Questo codice php di scansione directory sembra non funzionare:
Codice: [Seleziona]
<?php

if (
$handle opendir('mini'))
{
   while (
false !== ($file readdir($handle)))
   {

echo"
<a href=\"#\">,
<img alt=\"\",
src=\"mini/
$file\",
data-image=\"zoom/
$file\",
data-description=\"\",
style=\"display:none\">,
</a>
"
;
   }
   
closedir($handle);
}
?>

Mi crea come risultato html dei frame vuoti in più

Codice: [Seleziona]
<a href="#">,
<img alt="",
src="mini/DSC_0131.jpg",
data-image="zoom/DSC_0131.jpg",
data-description="",
style="display:none">,
</a>

<a href="#">,
<img alt="",
src="mini/.",
data-image="zoom/.",
data-description="",
style="display:none">,
</a>

<a href="#">,
<img alt="",
src="mini/DSC_0087.jpg",
data-image="zoom/DSC_0087.jpg",
data-description="",
style="display:none">,
</a>

che poi danno errore nella visualizzazione delle miniature.
Dove sbaglio?
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 30280
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:[Risolto] Stampare codice eseguibile con echo
« Risposta #7 il: 06 Giu 2019, 09:07:20 »
C'è sempre da imparare qualcosa, ho scoperto che i due file in più che mi listava erano i "." e ".." che fanno parte di una directory.
Mi è bastato filtrare i file con estensione .jpg per eliminarli e risolvere.
Riporto il codice finale con i commenti, prelevato e adattato ovviamente dalla rete.

Codice: [Seleziona]
<?php
 
//Impostiamo dove andiamo a leggere, in questo caso la cartella immagini dentro al nostro progetto 
 
$dir_immagine = new DirectoryIterator('mini');

 
//scorriamo tutta la directory
 
foreach ($dir_immagine as $fileIMG){
 
     
//determiniamo che sia un file(togliamo i puntini inutili)
     
if($fileIMG->isFile()) {

         
//recuperiamo nome e percorso da passare al template    
         
$nome=$fileIMG->getFilename();
        
         

         
//Stampiano il nome dei file ed il percorso del file...
         
echo"
         <a href=\"#\">,
             <img alt=\"\",
             src=\"mini/
$nome\",
             data-image=\"zoom/
$nome\",
             data-description=\"\",
             style=\"display:none\">,
         </a>
         "
;
        
     }
 }  

?>

</div>

lascio il link al risultato provvisorio in attesa di trasformarlo in modulo joomla.

https://sisinternational.net/mosaico/scandir.php

elimino tutti gli altri link sotto per pulizia.
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.8.x - DEMO Gestione Magazzino

 

Host

Torna su