Bonjour,
L'an dernier j'ai créé un formulaire PHP (enquête de satisfaction client) qui, bien que n'étant probablement pas fait dans les règles de l'art (premier projet PHP depuis bien longtemps), fonctionne bien.
L'arborescence de mon projet, hébergée sur un ServerA, me semble correcte :
-htdocs
|--projet
| |--formulaire.php
| |--submitForm.php
| |--invalide.php
| |--succes.php
| |--echec.php
|--endpoint.php
Basiquement, le fonctionnement est :
- j'envoie une URL du style [https]://enquete.domainA.com/enquete/formulaire.php?cle=ABC.
- quand on accède à la page, formulaire.php teste la clé. Si elle est invalide (déjà utilisée ou inconnue), je redirige vers la page invalide.php au moyen d'une commande header
header("Location: invalide.php?cle=ABC");
- si la clé est valide, on remplit puis valide le formulaire. Au submit, j'appelle submitForm.php qui reteste la clé (pour éviter les doubles réponses), avec redirection en cas de clé invalide. Si la clé est toujours valide, on tente de sauvegarder les réponses via endpoint.php (qui gère la connectivité avec ma db), et selon le résultat du SQL, on redirige vers succes.php ou echec.php, toujours avec des commandes header.
Tout ceci est stocké sur un ServerA et utilisé depuis un DomainA, ça fonctionne comme attendu depuis un an.
Mes fichiers PHP sont des bases HTML avec des inclusions de blocs PHP quand c'est nécessaire, rien que du classique je pense.
Mais aujourd'hui, je dois séparer mes requêtes en 2 parties car ma compagnie a 2 entités distinctes, et il ne veulent plus que les clients de l'entité B reçoivent des mails contenant une URL appartenant au DomainA.
Le formulaire en lui-même reste le même (il gère déjà les spécificités des 2 entités, logo et liens divers), mais les clients A doivent maintenant avoir une URL [https]://enquete.domainA.com/enquete/formulaire.php?cle=ABC, et les clients B doivent avoir une URL [https]://enquete.domainB.com/enquete/formulaire.php?cle=ABC. Et c'est là que je galère.
Je pensais pouvoir simplement router mes 2 URLs vers le même set de fichiers PHP via DNS, mais pour une raison qui m'échappe, ça n'est pas possible avec mon hébergeur actuel (et je ne peux pas le changer). Mes connaissances dans ce domaine sont limitées, je ne sais pas en dire plus et je n'ai pas plus d'explications côté hébergeur.
Mon ServerA a accès à ma db, mais mon ServerB (qui héberge mon DomainB) ne peut pas l'avoir car serveur externe, donc je ne peux pas juste dupliquer mon projet complet sur le second serveur.
J'ai essayé de faire des appels CURL entre ServerB et ServerA.
Code PHP de formulaire.php sur ServerA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <!DOCTYPE html>
<?php
include "../endpoint.php";
$sCle = $_GET['cle'];
$bInvalid = verifCle($sCle);
if ($bInvalid) {
header("Location: invalide.php?cle=$sCle");
exit();
}
?>
<html>
<head>
...
</head>
<body>
...
</body>
</html> |
Code PHP de formulaire.php sur ServerB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php
function get_url($request_url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$sSurveyId = $_GET['survey'];
$sLang= $_GET['lang'];
$sURL = "https://enquete.domainA.com/enquete/formulaire.php?cle=ABC";
$sRes = get_url($sURL);
echo "$sRes";
?> |
Ça fonctionne bien pour charger le formulaire, mais ça ne fonctionne pas en cas de redirection, j'obtiens dans ce cas une page blanche. Je n'ai du coup pas testé le submit, je suppose que ça fera la même chose.
Pour raison de sécurité, je ne peux pas non plus inclure mon endpoint du ServerA dans mes fichiers PHP du ServerB (mauvaise pratique, à éviter autant que possible).
La dernière idée qui me vient est de remplacer mes différentes pages existantes par un générateur de code HTML dynamique, comme ça je n'aurais plus qu'un point d'entrée sur mon ServerA, et ce générateur retournera tout simplement un code HTML complet selon la validité de la clé ou de la sauvegarde. Ca supprimerait les redirections et donc les pages blanches dans mon DomainB. C'est quelque chose que j'ai déjà fait et qui normalement devrait fonctionner (j'ai quand même un léger doute avec le submitform.php, sauf que je me fasse un petit poC vite fait pour valider).
Mais avant de tout convertir sous cette forme, je me demande si il n'y aurait pas une solution plus académique de gérer ce genre de cas. Toute idée est la bienvenue.
J'espère que mes explications sont assez claires, et merci d'avance pour votre aide.
Partager