Back to top

Autore Topic: [RISOLTO] Rilevare la sezione visualizzata da php  (Letto 3510 volte)

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
[RISOLTO] Rilevare la sezione visualizzata da php
« il: 13 Apr 2011, 14:26:27 »
Ciao a tutti.. mi chiedevo come si può fare per rilevare la sezione visualizzata da joomla per effettuare delle modifiche in index.php al fine di selezionare le immagini da passare ad un jscript che le visualizza in sequenza..
L'idea sarebbe di personalizzare l'image rotator in uso in funzione delle sezioni...
Ho provato a vedere un po'se l'argomento è già stato trattato ma non ho trovato post che mi aiutano..
Qualche suggerimento ?

Grazie
« Ultima modifica: 20 Apr 2011, 18:29:53 da Val40 »

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Rilevare la sezione visualizzata da php
« Risposta #1 il: 13 Apr 2011, 17:18:56 »
Non so se ho fatto una domanda troppo semplice o troppo difficile.. comunque ho risolto con
questa funzione:


        function MysectionID()
        {
              if (JRequest::getVar('view') == 'frontpage')
                  return 'home';

              if (JRequest::getVar('view') == 'section')
                  return 'section';

              if (JRequest::getVar('view') == 'category')
                  return 'category';

              if (JRequest::getVar('view') == 'article')
                  return (JRequest::getVar('Itemid'));
        }

Se sono in frontpage, in una sezione o una categoria restituisco delle stringhe standard, se sono
in un'articolo restituisco l'ID dell'articolo in formato stringa..
In index.php poi invoco la funzione e attuo la modifica delle immagini come segue:


   <? if ($view->MysectionID()== 'home') { ?>
     <img src="templates/<?php echo $this->template ?>/images/slidea.jpg" alt="image1" />
     <img src="templates/<?php echo $this->template ?>/images/slideb.jpg" alt="image2" />
     <img src="templates/<?php echo $this->template ?>/images/slidec.jpg" alt="image3" />
  <?php } ?>

  <? if ($view->MysectionID() == '30' ){ ?>
     <img src="templates/<?php echo $this->template ?>/images/slideaa.jpg" alt="image1" />
     <img src="templates/<?php echo $this->template ?>/images/slidebb.jpg" alt="image2" />
     <img src="templates/<?php echo $this->template ?>/images/slidecc.jpg" alt="image3" />
  <?php } ?>

Ovviamente basta inserire qualunque altra azione per utilizzare la funzione per altri scopi..

Ciao di nuovo a tutti

Offline keyascii

  • Appassionato
  • ***
  • Post: 495
  • Sesso: Maschio
    • Mostra profilo
Re:Rilevare la sezione visualizzata da php
« Risposta #2 il: 13 Apr 2011, 19:33:18 »
Non sai che problemone hai risolto anche a me con il tuo post. Qui e qui ma ancora non ne ero venuto a capo.
GRASSSSSSSSSSIIIEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEE

P.S.
Prima che te lo dica qualcuno "più in alto"... metti risolto al post. Grazie ancora
Se io e te abbiamo una cosa e ce la scambiamo, io e te abbiamo ancora una cosa, ma se io e te abbiamo un'idea e ce la scambiamo, tu hai 2 idee e io ho due idee!

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Rilevare la sezione visualizzata da php
« Risposta #3 il: 20 Apr 2011, 18:13:26 »
Bhe visto che qualcuno apprezza (poi gli invio un bonifico  ;) ) pubblico la funzione definitiva che ho
adottato...
Questa funzione l'ho elaborata da un'altra pubblicata sul web che lavorava con le sezioni, questa invece
funziona con le categorie..


        /*******************************************************************
         * Funzione per rilevare ID della categoria visualizzata
         * Se visualizzo una sezione ritorno null
         * Se visualizzo una categoria ritorno ID categoria
         * Se visualizzo un articolo ritorno ID categoria
         * Se visualizzo altro ritorno null                                   
         ******************************************************************/
        function mycategory()
        {
        $db = &JFactory::getDBO();
        $id = JRequest::getVar('id');
 
        if ( $id ) {
        if ( JRequest::getVar('view') == 'section' ) {
              $sectionid = '';
            } elseif ( JRequest::getVar('view') == 'category' ) {
              $sectionid = $id;
            } elseif ( JRequest::getVar('view') == 'article' ) {
              $query = 'SELECT catid FROM #__content WHERE id = ' . (int) $id;
              $db->setQuery($query, 0, 1);
              $sectionid = $db->loadResult();
            }
        } else {
          $sectionid = '';
        }
        return $sectionid;
        }

In index PHP ho invece inserito la funzione di selezione delle immagini utilizzando un select case
di modo da avere sempre una selezione attiva per le categorie non definite..


              <?php switch($view->mycategory()) {
                  case 5:
                  echo '<img src="templates/miotemplate/images/SlideG1.jpg" alt="image1" />
                           <img src="templates/miotemplate/images/SlideG2.jpg" alt="image2" />
                           <img src="templates/miotemplate/images/SlideG3.jpg" alt="image3" />' ;
                  break;
                  case 13:
                  echo '<img src="templates/miotemplate/images/SlideL1.jpg" alt="image1" />
                           <img src="templates/miotemplate/images/SlideL2.jpg" alt="image2" />
                           <img src="templates/miotemplate/images/SlideL3.jpg" alt="image3" />' ;
                  break;
                  case 8:
                  echo '<img src="templates/miotemplate/images/SlideP1.jpg" alt="image1" />
                           <img src="templates/miotemplate/images/SlideP2.jpg" alt="image2" />
                           <img src="templates/miotemplate/images/SlideP3.jpg" alt="image3" />' ;
                  break;
                  case 2:
                  echo '<img src="templates/miotemplate/images/SlideR1.jpg" alt="image1" />
                           <img src="templates/miotemplate/images/SlideR2.jpg" alt="image2" />
                           <img src="templates/miotemplate/images/SlideR3.jpg" alt="image3" />' ;
                  break;
                  default:
                  echo '<img src="templates/miotemplate/images/Slide1.jpg" alt="image1" />
                           <img src="templates/miotemplate/images/Slide2.jpg" alt="image2" />
                           <img src="templates/miotemplate/images/Slide3.jpg" alt="image3" />' ;
              } ?>

I numeri 5,8,2 etc sono gli ID delle categorie con immagini dedicate, default sono le tre immagini
pubblicate in caso di null restituito dalla funzione precedente..

Ciao A tutti

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:Rilevare la sezione visualizzata da php
« Risposta #4 il: 20 Apr 2011, 18:24:09 »
VAl credo che il 90% di noialtri siamo (come me) semplici praticoni di joomla,  ma se voialtri  utenti avanzati voleste davvero usare questa sezione per questi ed altri dialoghi/problemi simili, almeno io sarei qui a lurkare per diverso tempo cercando di rubacchiare qualche nozione..
« Ultima modifica: 20 Apr 2011, 18:25:46 da 56francesco »
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[RISOLTO] Rilevare la sezione visualizzata da php
« Risposta #5 il: 20 Apr 2011, 18:38:53 »
Volentieri (nessuno mi aveva mai dato dell' "avanzato"!!  ;D ) ...
Comunque non ho particolari competenze in php, programmo tutt'altro e ogni tanto mi diletto con joomla
per fare qualche sito..  se c'è interesse ogni qualvolta mi imbatto in qualche problema 'posto', e se trovo
soluzioni 'posto' anche quelle..

Salutoni a tutti

mau_develop

  • Visitatore
Re:[RISOLTO] Rilevare la sezione visualizzata da php
« Risposta #6 il: 20 Apr 2011, 19:57:44 »
$id = JRequest::getVar('id');

...quando fai queste cose fai sempre un casting ... arrivi a $sectionid senza un controllo...

M.

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[RISOLTO] Rilevare la sezione visualizzata da php
« Risposta #7 il: 21 Apr 2011, 01:56:29 »
Bene, ti riferisci alla tipizzazione della variabile..
Perchè non posti un esempio riferito alla funzione.. così ne approfittiamo tutti della miglioria..

Ciao  :)

mau_develop

  • Visitatore

Offline Val40

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:[RISOLTO] Rilevare la sezione visualizzata da php
« Risposta #9 il: 21 Apr 2011, 10:51:48 »
Ok, visitato il link aggiorno la funzione come segue:

$id = JRequest::getVar('id','0','get','int');

Per evitare inconvenienti aggiungo alla richiesta il valore di default, il metodo e il tipo di dato da recuperare..

Dovrebbe essere tutto in ordine..  :)

Ciao

mau_develop

  • Visitatore
Re:[RISOLTO] Rilevare la sezione visualizzata da php
« Risposta #10 il: 21 Apr 2011, 18:49:01 »
mooolto meglio di prima.

deve essere per forza un numero quindi escludi moltissimi tipi di iniezione
deve essere preso SOLO dalla get e ha un default che evita che se fosse null nel get io possa arbitrariamente passarlo dal post

ma più che per il caso specifico è un meccanismo da usare sempre, il 99% delle vulnerabilità sfruttate derivano da questa cosa le altre variabili sono abbastanza protette dall'incapsulazione del codice, sono quelle passate dall'esterno che fanno danni.

M.

 



Web Design Bolzano Kreatif