8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,
J'ai une erreur sur require_once. J'ai un fichier qui est appelé à 2 moments par 2 pages différentes situées dans différents dossiers du projet.

Dossier FAQ
faq.php
...Dossier controller
controller_generic.php
...Dossier model
model_db.php

Les dossiers Controller et model sont dans le dossier FAQ

Premier appel à partir de faq.php
faq--->controller_generic--->model_db
chemin == ./model/model_db.php

Deuxième appel à partir de controller_generic.php
controller_generic--->model_db
chemin == ../model/model_db.php

Du coup il ne faut pas mettre le même chemin selon la page de provenance.
Peux t-on mettre une condition dans controller_generic en mettant un <input type="hidden"> dans faq.php?
<?php
if (isset($_POST['faqhidden'])){
    require "./model/model_db.php";
}else{
    require "../model/model_db.php";
}


faq.php:
<form action="./controller/controller_generic.php" method="post">
	<input type="hidden" id="faqhidden" value="faqhidden" ></input>
	<input type="submit" style="display:none" />
	</input>
	</form>


Pouvez-vous m'aider s'il vous plaît. Si c'est faisable avec <input type="hidden"> , faut-il le placer tout en haut du fichier pour qu'il soit lu avant la redirection sur controller_generic?
Sinon il y a la possibilité de position absolue avec l'ensemble de l'adresse C:\... mais elle pose d'autres problèmes (différences entre windows et serveur linux...).
J'aimerai comprendre les principes de l'échange avec hidden, c'est tellement utile!

Merci beaucoup pour vos réponses
Mathilde
Salut

je pense que la meilleur solution pour toi est d'utilise $_SERVER
tu as $_SERVER['REQUEST_URI'] qui te permet d'avoir l'host, et du coup d'éviter les problèmes de c://
Merci pour ta réponse Jencal.
J'ai réussi. En fait j'avais placé le <input type="hidden"> au mauvais endroit et l'information n'était pas envoyée.
J'ai regardé pour $_SERVER et ça va m’être utile!