8768 sujets

Développement web côté serveur, CMS

Bonjour,
Je développe actuellement un espace client pour un site, l'espace est 100% opérationnel !

Depuis j'utilise un router PHP (AltoRouter).

J'ai déplacé toutes mes pages et scripts à l'extérieur de l'arborescence web ('www/pages/public' sur l'image ci-dessous) :

upload/1604998532-66749-capture.png

Et donc maintenant mes scripts ne fonctionnent plus malgré les changements d'URLs..

Exemple pour le formulaire d'inscription :
Mon espace client se trouve à la racine dans le dossier 'public' et est accessible sur le web via 'http://citel.dev/mon-esapce/inscription' son script est lui dans 'www/pages/public/espace_client'

Comme pour l'inscription le script est directement sur la page l'attribut action de la balise form est vide.

Mais dès que je soumets le formulaire je suis redirigé vers la page 404 par mon router.

J'ai essayé de mettre l'URL en dur mais sans succès..

Alors d'abord je me pose une question est-ce possible de traiter un formulaire avec un script hors de 'www/public'
et si oui comment y accéder..

Merci.
Modifié par mstaudt (10 Nov 2020 - 10:18)
Modérateur
Bonjour,

1) php est disponible sur ton serveur ?
2) si tu mets une page de test (de préférence en php) contenant par exemple
<?php
phpinfo();
?>
dans 'www/pages/public/espace_client', est-ce que tu arrives à l'afficher dans un navigateur ?

Amicalement,
parsimonhi a écrit :
Bonjour,

1) php est disponible sur ton serveur ?
2) si tu mets une page de test (de préférence en php) contenant par exemple
&lt;?php
phpinfo();
?&gt;
dans 'www/pages/public/espace_client', est-ce que tu arrives à l'afficher dans un navigateur ?

Amicalement,


Bonjour, oui PHP est bien disponible sur mon serveur !

Et je peux accéder à n'importe quel page en configurant l'adresse au router :
Ma page de test est donc disponible à 'http://citel.dev/mon-espace/test'

Voilà comment est configuré mon router :

<?php session_start(); 
require '../libs/AltoRouter/AltoRouter.php';
require '../includes/public/functions.php';
require '../includes/public/sql.php';
$inc_head = "../includes/public/head.php";
$inc_header = "../includes/public/header.php";
$inc_secondary_nav = "../includes/public/secondary_navigation.php";
$inc_page_header = "../includes/public/page_header.php";
$inc_footer = "../includes/public/footer.php";

$uri = $_SERVER['REQUEST_URI'];
$router = new AltoRouter();

$router->map('GET', '/', 'page_accueil', 'home');

//Page de test phpinfo
$router->map('GET', '/mon-espace/test', 'espace_client/test', 'test');

//Espace client (si connecté)
$router->map('GET', "/mon-espace/inscription", 'espace_client/inscription/index', 'inscription');
$router->map('GET', "/mon-espace/activation", 'espace_client/activation/index', 'activation');
$router->map('GET', "/mon-espace/connexion", 'espace_client/connexion/index', 'connexion');
$router->map('GET', "/mon-espace/mot-de-passe-oublie", 'espace_client/mot-de-passe-oublie/index', 'mot-de-passe-oublie');

//Espace client (si deconnecté)
$router->map('GET', "/mon-espace", 'espace_client/accueil/index', 'accueil');
$router->map('GET', "/mon-espace/compte", 'espace_client/compte/index', 'compte');
$router->map('GET', "/mon-espace/alertes", 'espace_client/alertes/index', 'alertes');
$router->map('GET', "/mon-espace/deconnexion", 'espace_client/deconnexion/index', 'deconnexion');
$router->map('GET', "/mon-espace/suppression", 'espace_client/suppression/index', 'suppression');

$match = $router->match();

if (is_array($match)) {

require "../pages/public/{$match['target']}.php";
    
} else {
require "../pages/public/404.php";
}
Modérateur
Bonjour,

1) Ton formulaire d'inscription utilise la method "GET" ou bien "POST" ? (ce n'est probablement pas ça le problème, mais c'est juste pour savoir au cas où)

2) Quand tu dis que tu as essayé de mettre l'URL en dur mais sans succès, tu as essayé ça où (en utilisant l'attribut "action" du formulaire) ?

3) Quelle URL en dur as-tu mis ?

Amicalement,
parsimonhi a écrit :
Bonjour,

1) Ton formulaire d'inscription utilise la method "GET" ou bien "POST" ? (ce n'est probablement pas ça le problème, mais c'est juste pour savoir au cas où)

2) Quand tu dis que tu as essayé de mettre l'URL en dur mais sans succès, tu as essayé ça où (en utilisant l'attribut "action" du formulaire) ?

3) Quelle URL en dur as-tu mis ?

Amicalement,


1) J'utilise la method POST

2) Oui, dans l'attribut action du formulaire

3) J'en ai essayé plusieurs :
- '/mon-espace/inscription'
- 'http://citel.dev/mon-espace/inscription'
- 'index.php' (router)

Merci
Modérateur
Bonjour,

Je ne vois pas de $router->map('POST',...) dans les configurations de ton routeur.

Pourquoi ?

Amicalement,
parsimonhi a écrit :
Bonjour,

Je ne vois pas de $router-&gt;map('POST',...) dans les configurations de ton routeur.

Pourquoi ?

Amicalement,


J'avais aussi essayé $router-&gt;map('POST',...) mais mes pages ne s'affichent plus..
mstaudt a écrit :


J'avais aussi essayé $router-&amp;gt;map('POST',...) mais mes pages ne s'affichent plus..


Je viens d'essayer en ajoutant POST :

$router->map('GET|POST', "/mon-espace/inscription", 'espace_client/inscription/index', 'inscription');


Et miracle cela fonctionne Smiley eek

Merci d'avoir pris le temps de m'aider.
A bientôt Smiley smile