Ip filter con ip presi da tabella

6 views
Skip to first unread message

Michele Bassanini

unread,
Mar 18, 2016, 3:54:54 AM3/18/16
to yii...@googlegroups.com
Ciao a tutti,
devo implementare un ip filter a livello di tutta l'app e pensavo di implementare l'access rules sul controller che poi estendo per tutti gli altri controller

public function accessRules()
    {  
        return array(
                array('allow',
                        'ips'=>array('xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx'),
                       
                ),
                array('deny',
                        'deniedCallback'=>array($this, 'noAccess'),
                ),
        );
    }

...e funziona, ma ho bisogno di recuperare gli IP da tabella, ma facendo la query

        $ips= Yii::app()->db->createCommand()
                        ->select('IP')
                        ->from('TBL_IPS')
                        ->where("ABIL='S'")
                        ->queryAll();

mi esce un array associativo a due livelli:
array(2) {
  [0]=>
  array(1) {
    ["IP"]=>
    string(13) "193.204.40.87"
  }
  [1]=>
  array(1) {
    ["IP"]=>
    string(13) "193.204.35.89"
  }
}
e ho provato ad elaborarlo in qualsiasi modo ma non riesco ad avere l'array del tipo
array('xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx')
che serve per il parametro 'ips'

Qualcuno ha suggerimenti?

Grazie!

Michele

Luca Bracchi - BLU.IS

unread,
Mar 18, 2016, 4:18:12 AM3/18/16
to yii...@googlegroups.com
sicuramente ci sono soluzioni più veloci ed eleganti, comunque prova:


$elencoip=array();
foreach(  $ips as $singoloip){
    $elencoip[]=$singoloip['IP'];
}

ora $elencoip dovrebbe contenere gli ip nel modo in cui ti servono..

Luca
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "yii-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a yii-it+un...@googlegroups.com.
Per postare in questo gruppo, invia un'email a yii...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/yii-it.
Per altre opzioni visita https://groups.google.com/d/optout.

Michele Bassanini

unread,
Mar 18, 2016, 5:38:07 AM3/18/16
to yii...@googlegroups.com
Il 18/03/2016 09:18, Luca Bracchi - BLU.IS ha scritto:
$elencoip=array();
foreach(  $ips as $singoloip){
    $elencoip[]=$singoloip['IP'];
}
Sì esatto funziona... ma ci avevo già provato con
$b=array();
foreach($ips as $ip) {
            array_push($b, $ip['IP']);
}
che fa la stessa cosa e non andava probabilmente perché avevo dimenticato un refuso nell'assegnazione alla regola
'ips'=>array($b),
e quindi non andava e ho dato la colpa al fatto che un array così strutturato
array(2) {
  [0]=>
  string(13) "xxx.xxx.xxx.xxx"
  [1]=>
  string(13) "xxx.xxx.xxx.xxx
"
}
 non fosse un input corretto.

Grazie,
Michele
Reply all
Reply to author
Forward
0 new messages