Bonjour,
Je tente de déployer mon site et j'ai quelques soucis avec les formulaires:
Lorsque j'envoie un formulaire (en `POST`), les données sont correctement envoyées. Je remarque en regardant l'outil de debug de mon navigateur (F12) que:
- la requête est bien envoyée en `POST`
- l'état est bien `200 OK`
- les données sont bien envoyées puisque ceci est marqué sous "Requête":
```
email: test@example.com
password: pass
```
Or, si je fais un `var_dump($_POST)` sur la page de réception, il m'indique que le tableau est vide (`array { }`).
Mon code marche en local (j'utilise Linux, donc inutile de chercher du côté de la casse). J'ai trouvé plusieurs messages sur ce forum et sur d'autres qui ne m'ont pas aidé. Certains m'ont donné comme piste que ça pourrait être htaccess, mais je ne vois pas comment.
Des idées?
Merci d'avance à ceux qui prennent le temps de répondre.
Hébergements Web - [Problème résolu] La variable $_POST est toujours vide
Related questions
- Connexion à mon compte client
150794
13.02.2019 09:51
- Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS
124971
03.09.2018 14:46
- reCAPTCHA erreur pour le propriétaire du site : clé de site non valide
109446
14.02.2019 16:17
- [FAQ] Comment mettre à jour mon site pour supporter Apache 2.4 ?
96807
28.07.2017 11:39
- Passage en php 7.4
95955
30.06.2020 05:05
- Augmenter taille PHP Post Max Size sur mutualisé ?
90066
04.12.2019 21:52
- The requested URL / was not found on this server
89336
02.03.2017 18:25
- NextCloud sur mutualisé
89195
07.04.2017 08:42
- Deploy d'un projet Node JS
89169
12.10.2016 20:18
- Ce site est inaccessible Impossible de trouver l'adresse DNS du serveur
89097
16.10.2016 16:24
As-tu créé un dossier session ?
Bonjour,
possible d'avoir le code utilisé ?
Cordialement, janus57
J'utilise un Framework (CodeIgniter 4), donc je n'ai pas créé de dossier session, il s'est créé tout seul (et il se remplit correctement).
Pour le code, voici la vue:
```html
```
Ainsi que le contrôleur:
```php
public function login()
{
$login = $this->request->getPost();
if ($this->request->getMethod() == 'post') {
if ($this->validate('login')) {
$this->auth->login($login);
return redirect()->to('/');
}
}
$this->useTables();
$this->data['email'] = $login['email'] ?? '';
$this->render();
}
```
Pour info, dans le contrôleur: `$this->request->getMethod()` renvoie `post`, mais `$this->request->getPost()` est toujours un tableau vide. J'ai essayé directement avec `$_POST`, même résultat.
Bonjour,
la page s'appel elle même pour le POST ?
Avec ce code (il fait pas que du POST mais ça doit passer) ça marche : https://gist.github.com/janus57/333b8575d9fc049f9b6771fd452eb7af
Cordialement, janus57
Malheureusement, je ne peux pas tester ça, le Framework le bloque. Je reçois cette erreur:
```
Uncaught Error: Undefined constant "CodeIgniter\CLI\STDOUT"
```
La page s'appelle elle-même. Ce n'est pas un problème de code, puisque tout fonctionne en local et les tests unitaires sont bons. De plus, ce sont **tous mes formulaires** qui ont le même problème, alors qu'ils sont sur des pages différentes.
Finalement, j'ai fait un test avec Postman, le résultat est identique: `$_POST` (ou `$this->request->getPost()`) est toujours vide.
Sinon, sympa le script!
Bonjour,
possible d'avoir le lien vers le site/page ?
Cordialement, janus57
Pas de souci.
Pour info, j'ai mené l'enquête un peu plus loin et un script PHP simple fonctionne, le problème vient donc du Framework.
Page fonctionnelle: https://cramine.ch/test.php (si vous lisez ce message après que le problème soit réglé, cette page n'existera plus).
Page ayant un problème: https://cramine.ch/login
Merci à toutes les personnes qui ont essayé, je vais maintenant poser la même question sur le forum de CodeIgniter 4 (le Framework que j'utilise).
Bonjour @SteeveD2
Je te confirme que la méthode **POST** fonctionne très bien en hébergement mutualisé PHP 7 et PHP 8.
Je viens de le vérifier à l'instant.
Pour récupérer le contenu d'une variable passée en POST je fais :
> if (isset($_REQUEST['TOTO'])) $TOTO = $_REQUEST['TOTO'];
Merci pour la précision, je ne peux pas utilise `$_REQUEST` car ça contient des données propres au Framework, mais j'ai fait mes tests avec `$_GET` et `$_POST`, je dirais que le souci est quelque part entre CodeIgniter et OVH, une configuration incompatible. Je cherche encore.
Bonjour,
pour informations il y a un truc "chelou" avec la page généré par le framework.
Headers de la page "normale" :
[code]
:~$ curl -I https://cramine.ch/test.php
HTTP/2 200
date: Tue, 19 Oct 2021 08:37:28 GMT
content-type: text/html; charset=UTF-8
server: Apache
x-powered-by: PHP/7.4
vary: Accept-Encoding
[/code]
Headers de la page "framework" :
[code]
:~$ curl -I https://cramine.ch/login
HTTP/2 200
date: Tue, 19 Oct 2021 08:38:41 GMT
content-type: text/html; charset=UTF-8
server: Apache
x-powered-by: PHP/7.4, PHP/7.4
expires: Thu, 19 Nov 1981 08:52:00 GMT, Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate, no-store, max-age=0, no-cache, no-store, max-age=0, no-cache, no-store, no-cache, must-revalidate, no-store, max-age=0, no-cache, no-store, max-age=0, no-cache
pragma: no-cache, no-cache
set-cookie: ci_session=0568eef5341e19c01cfb5042c44527e07ddb1cbd; expires=Tue, 19-Oct-2021 10:38:41 GMT; Max-Age=7200; path=/; HttpOnly; SameSite=Lax
set-cookie: ci_session=13674d14d2c18ac233abce2125a64684d1a58441; expires=Tue, 19-Oct-2021 10:38:41 GMT; Max-Age=7200; path=/; HttpOnly; SameSite=Lax
[/code]
Sur la partie framework, c'est comme si le code été exécuté 2 fois par PHP et renvoyé 2 fois par le serveur PHP, ce qui expliquerais le fait que vos variables POST n'arrivent jamais (car elles arrivent sur la première exécution par exemple, alors que c'est la deuxième qui fait le "vrai" traitement).
Dans le doute je vous conseillerais de vérifier votre code au niveau du framework car vous avez le soucis sur absolument toutes les pages et c’est même pire pour la page d'accueil qui est en "404" :
[code]
:~$ curl -I https://cramine.ch
HTTP/2 404
date: Tue, 19 Oct 2021 08:42:18 GMT
content-type: application/json; charset=UTF-8
server: Apache
x-powered-by: PHP/7.4
cache-control: no-store, max-age=0, no-cache
[/code]
Cordialement, janus57
Bonne piste, merci! Je vais voir par là.
C'était la bonne piste! J'utilise une bibliothèque qui ne s'était pas mis à jour vers la nouvelle version du Framework. J'ai contacté le développeur et édité le code à la main en attendant.
Cette bibliothèque envoyait du contenu à l'utilisateur directement au lieu de passer par le Framework. Du coup, double-envoi!