Déplacer un fichier avant la racine

Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code.

J'utilise un formulaire AMP avec :

<form method="post" action-xhr="https://MONSITE.COM/form-xhr.php" target="_blank">

si mon fichier form-xhr.php se trouve dans /Public (root) tout se passe bien.

<?phpheader('Content-Type: application/json');header('Access-Control-Allow-Origin: https://'.$_SERVER['HTTP_HOST']);header('Access-Control-Allow-Credentials: true');header('Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin');header('AMP-Access-Control-Allow-Source-Origin: https://'.$_SERVER['HTTP_HOST']);$data = array();$data['name'] = $_POST['name'];echo json_encode($data);?>

par contre si je veux déplacer form-xhr.php dans un dossier avant la racine (root), cela ne marche plus pourtant c'est le même fichier ???

/Code/form-xhr.php

la seule différence c'est que tout passe par index.php

.htaccess
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

index.php
if( $_SERVER['REQUEST_URI'] === '/form-xhr') {require_once dirname( __DIR__ ) . '/Code/form-xhr.php';}

la seule différence c'est que
<form method="post" action-xhr="https://MONSITE.COM/form-xhr.php" target="_blank">

devient (form-xhr sans le .php pouisque c'est index.php qui va la charger)
<form method="post" action-xhr="https://MONSITE.COM/form-xhr" target="_blank">

Le problème c'est qye cela ne marche plus

Si form-xhr.php est à la racine (/Public) cela fonctionne
Si form-xhr.php est dans /Code cela ne fonctionne plus
Pire si form-xhr.php dans /Public devient juste require_once dirname( __DIR__ ) . '/Code/form-xhr.php'; cela fonctionne !!! alors que cela charge /Code/form-xhr.php le fameux fichier qui ne marche pas si je l'appelle en passant par index.php en faisant if( $_SERVER['REQUEST_URI'] === '/form-xhr') {require_once dirname( __DIR__ ) . '/Code/form-xhr.php';}

Je ne comprend plus rien

4 Réponse

197283
,

Hello ! Alors si tu déplaces ton fichier "form-xhr.php" dans un endroit par exemple (www/tonsite/tondossieroutuveuxmettretonfichier=>form-xhr.php), il faudra que tu indiques dans ton formulaire ou se trouve ce fichier. Cela est normal que si tu déplaces ton fichier dans un dossier ou autre part mais que tu gardes la même URL (ou chemin) d'indication, cela ne fonctionne pas. En gros par exemple c'est comme si tu disais "va me chercher ce fichier vers www/monsite/monfichier alors que ton fichier serait dans un dossier en plus par exemple un fichier "Code"". Du coup le formulaire n'arriverais pas a trouver ton chemin et cela ne fonctionnerai pas ^^ ! Cela est juste une indication de chemin :)

Default
,

Je lui indique le chemin par le fichier index.php puisque tout passe par index.php
if( $_SERVER['REQUEST_URI'] === '/form-xhr') {require_once dirname( __DIR__ ) . '/Code/form-xhr.php';}

Default
,

Etape 1 : tout à la racine cela fonctionne
https://scam.alwaysdata.net/form1

Etape 2 : le formulaire dans /Code et action-xhr à la racine cela fonctionne
https://scam.alwaysdata.net/form2

Etape 3 : le formulaire dans /Code et action-xhr à la racine mais avec un require vers /Code cela fonctionne
https://scam.alwaysdata.net/form3

Etape 4 : le formulaire et action-xhr dans /Code cela NE fonctionne PLUS
https://scam.alwaysdata.net/form4

J'ai découpé étape par étape, mais impossible de comprendre ce qui bloque.

Les fichiers format ZIP
https://scam.alwaysdata.net/Test.zip

197283
,

A l'étape 4 essaye de mettre dans ton form

en gros indique le chemin dans ton formulaire. Je pense que c'est juste une histoire de chemin qui bloque en fait (peut-être que je me trompe). En gros dans ton étape 1 a 3 tu indiques que ton action de formulaire se déroule à la racine. Dans ton étape 4 tu indiques toujours qu'il se trouve à la racine hors il n'est plus