Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
salut ,
j'ai un probleme avec zend_view , j'utilise zend_paginator alors j'ai besoin de faire le redirection vers le view du paginator :
<?= $this->paginationControl($this->array,'All','../../../default/views/scripts/pagination/pagination.phtml'); ?>
j'ai erreur suivante :
Message: Requested scripts may not include parent directory traversal ("../", "..\" notation)
Hors ligne
Hors ligne
baseUrl
A+JYT
Hors ligne
merci pour vs réponse , mais moi je veux enlever :
$view->setLfiProtection ( false );
il ya pas solution
Hors ligne
Hello,
Un realpath:
<?= $this->paginationControl($this->array,'All', realpath('../../../default/views/scripts/pagination/pagination.phtml')); ?>
A+
Hors ligne
ça marche pas par ce j'ai le view de pagination dans autre module , alors il donne autre erreur :
Warning: Zend_View::include(/../../../../application/modules/front/views/scripts/)
dans le module front que j'utilise le paginator , et le view de paginator existe dans autre module default.
Dernière modification par devkaty (06-05-2009 12:32:10)
Hors ligne
ln -sfn ../../../default/views/scripts/pagination/pagination.phtml
Si t'es sous linux biensur..
Hors ligne
Attention à la sémantique de ../ ou ./
. et ../ sont relatif au script qui s'exécute pas relatif au fichier qui contient l'instruction.
ex :
WWW/ a.php dir2/ b.php dir3/ c.php
dans b.php je fais
echo 'hello b';
dans c.php je fais
include '../b.php';
et dans a.php je fais
include './dir2/dir3/c.php';
si j'appelle l'URL
http://host/dir2/dir3/c.php j'obtiens 'hello b'
par rapport au script qui s'exécute soit donc c.php j'inclus dans le dossier supérieur le fichier b.php qui affiche 'hello b'
maintenant si j'appelle
http://host/a.php
celui-ci inclus ./dir2/dir3/c.php soit donc le fichier c.php qui est dans dir3 lui-même placé dans le dossier dir2 qui est dans le même dossier que le script qui s'exécute soit a.php
jusqu'ici rien de particulier
maintenant le fichier c.php inclus ../b.php soit donc le fichier b.php situé dans le dossier parent du script qui s'exécute soit donc le parent du dossier contenant a.php (ce n'est c.php qui est exécuté il n'est qu'inclus) donc le parent de WWW et là ça plante.
en fait dans c.php on voulait le dossier parent de celui contenant c.php lui-même.
une solution écrire les chemin en dur
chose que je déconseille vivement.
realpath ne fonctionne pas car il travaille comme le moteur zend et on obtient le même comportement.
la solution s'appelle dirname et __FILE__
__FILE__ est toujours le nom du fichier qui le contient
dirname est une fonction retournant le chemin du dossier contenant le fichier dont on donne le chemin
pour faire simple
si on veut ./ par raport au fichier dans lequel on l'écrit alors écrire dirname(__FILE__)
si on veut ../ par raport au fichier dans lequel on l'écrit alors écrire dirname(dirname(__FILE__))
dans notre fichier c.php on remplace
include '../b.php';
par
include dirname(dirname(__FILE__)) . '/b.php';
et tout rentre dans l'ordre.
dans ZF le fichier qui s'exécute est index.php celui qui ce trouve dans le dossier htdocs
tous les chemins relatif en . et .. le sont par rapport à lui
A+JYT
Dernière modification par sekaijin (06-05-2009 15:33:10)
Hors ligne