11
votes

En utilisant une chaîne de requête dans Exigence_once en PHP

sur l'une de mes pages, j'ai un exiger_once ('../ chemin / à / url / page.php'); qui fonctionne sans problèmes. Le moment, j'ajoute une chaîne de requête requier_once ('../ chemin / à / url / page.php? Var = test'); Il n'inclut plus le fichier. C'est juste vide. Quelqu'un a des idées de pourquoi? Pouvez-vous ne pas utiliser de chaîne de requête dans un besoin?

merci, Ryan


2 commentaires

Je peux répondre au problème "C'est juste vide". Normalement, exiger () déclencherait une erreur pour les fichiers non existants (car le paramètre n'est pas traité comme "URL" mais comme nom de fichier brut). Il semble que votre error_rporting () est complètement désactivé. La fermeture des avis est correcte si vous êtes compétent, mais vous devriez certainement quitter E_Errors sur (environnement de développement).


@Mario Vous êtes correct que ERROR_REPORTING () est désactivé et je ne le réalisais tout simplement pas. Merci!


4 Réponses :


1
votes

Exiger des charges d'un fichier (à partir d'un chemin de fichier) à inclure. Il ne demande pas ce fichier via Apache (ou un autre serveur Web), vous ne pouvez donc pas passer des chaînes de requête de cette manière.

Si vous devez transmettre des données dans le fichier, vous pouvez simplement définir une variable PHP standard. P>

Exemple P>

<?php $a_variable = "data"; require_once('../path/to/url/page.php'); ?>


0 commentaires

0
votes

nécessite uniquement accepte les chemins qu'il serait inutile d'ajouter n'importe quelle demande car elle ne fait aucun Il est simple d'inclure le code requis dans le courant actuel


5 commentaires

De quoi parles-tu? Il n'utilise pas du tout.


Eh bien, je suppose qu'il est dans le code de page.php et si je le ferais dans la page qui nécessite ce code mettant à la fin de l'URL Var = quelque chose, il changerait le comportement de la page page.php


Exiger ne fait pas une nouvelle demande, il ne touche donc aucun $ _GET. Il comprend simplement ce code, comme un fopen local (). Aucune demande, non obtient, pas de messages.


et c'est ce que je dis ce que je dis que cela n'inclut que le code et si la définition des variables d'obtention serait inutile et même si elle pouvait être remplacée par l'utilisateur, car il est simple, y compris le code de l'actuel.


Si j'étais vague en décrivant ce que je veux dire mes excuses



19
votes

à l'aide de requir_once ('../ chemin / à / url / page.php? var = test'); , PHP ne fera pas une nouvelle demande à la page.php, elle sera réellement Recherchez le fichier nommé page.php? var = test et y inclure, car dans UNIX, vous êtes autorisé à avoir un tel nom de fichier. Si vous voulez passer une variable à ce script, définissez simplement: $ var = "test" et il sera disponible pour une utilisation dans ce script.


7 commentaires

Ou définir $ _ obtenir ['var'] = 'test';


Il n'y a pas besoin dans cela, cela peut causer des problèmes.


@RUDIE: I Deuxième S3V3N, ne faites certainement pas cela.


"PHP ne fera pas une nouvelle demande à la page.php, elle recherchera réellement le fichier nommé page.php? var = test" - cela a du sens et explique le fait que l'inclusion a échoué. Merci!


Pouvez-vous élaborer pourquoi $ _ obtenir ['var'] = 'test'; apportera des problèmes? Mon problème est que $ _ get ... fonctionne, mais $ var = "test" ne fait pas.


@Christianspecht, qu'essayez-vous de faire?


Exiger / inclure une page PHP avec une chaîne de requête. Mais dans l'intervalle, j'ai découvert que je peux inclure le fichier avec String de requête lorsque j'utilise une URL HTTP, par exemple. inclure ('http://foo.com/bar.php?var=test');



0
votes

Tout répond à vrai. Mais surtout: car $ _ get est un global, il est présent 'dans tous les fichiers inclus également, il n'y a donc absolument aucune utilisation dans la transmission de ces paramètres avec l'inclusion.


1 commentaires

Il n'y a pas non plus besoin de pousser cette variable en $ _get. Vous pouvez simplement le définir.