40 votes

comment passer une variable à travers la fonction require() ou include() de php ?

Quand je l'utilise :

require("diggstyle_code.php?page=$page_no");

L'avertissement est le suivant : "Impossible d'ouvrir le flux : Aucune erreur dans C:\xampp\htdocs\4ajax\gallery_core.php sur la ligne 198

et l'erreur est :

Failed opening required 'diggstyle_code.php?page=1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\4ajax\gallery_core.php on line 198

valeur de la variable $page_no est collectée au préalable.

Mais si j'omets le '?page=$page_no part' de l'argument de la fonction require, alors aucune erreur ou avertissement n'est affiché.

Je dois passer la variable lorsque j'utilise la fonction require().

1voto

Tormy Van Cool Points 391

Si j'ai bien compris, ce dont vous avez besoin est d'appeler le fichier diggstyle_code.php en passant un argument, afin que personne ne puisse appeler ce fichier et le faire fonctionner, plutôt que votre fichier principal. Est-ce que j'ai raison ?

Ainsi, supposons que votre "main.php" comporte les lignes suivantes

require("diggstyle_code.php?page=$page_no");

ça veut dire que : si quelqu'un appelle "main.php" obtient diggstyle_code.php courant. Mais si quelqu'un, de quelque manière que ce soit, appelle directement diggstyle_code.php il/elle ne devrait rien avoir.

Si j'ai bien compris, une façon d'y parvenir est d'inclure dans le fichier principal une variable ou une constante, qui sera évaluée par diggstyle_code.php

Par exemple : "main.php".

<?php
define("_VERIFICATION_", "y");
require("diggstyle_code.php");
?>

et maintenant diggstyle_code.php

<?php
if ( _VERIFICATION_ == "y" ) {
//Here the code should be executed
} else {
// Something else
}
?>

1voto

linepogl Points 5110

require() ne fait pas d'appel HTTP. Tout ce qu'il fait, c'est ouvrir le fichier à partir du disque et inclure le code dans la position de l'appel. De simples variables locales sont donc suffisantes.

-1voto

krtek Points 15497

Require, require_once, include et include_once essaient d'inclure des fichiers du système de fichiers dans le fichier courant.

Comme il n'y a pas de fichier nommé diggstyle_code.php?page=1, il est tout à fait logique que PHP ne le trouve pas.

Vous ne pouvez pas passer des valeurs de cette façon, cependant, toute variable déclarée dans le fichier courant sera accessible dans les fichiers inclus.

-3voto

user3420355 Points 3

J'ai eu ce problème et j'ai remarqué que si vous utilisez http:// dans votre url, cela ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X