11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Comme l'indique le titre, j'envoie un formulaire et il arrive vide. J'ai essayé deux php complètement différents et j'obtiens le même résultat.
Inutile de préciser que je ne connais pas grand-chose au php Smiley lol

Le php
<?php
$mail = "arthurmaniet@mac.com";

$sujet = $POST['sujet'];
$message = $POST['message'];
$maill = $POST['mail'];

$contenu = ''.$maill.'
'.$message.'';

mail($mail, $sujet, $contenu, "from:site_info_2");
header("Location: quelque-part");
?>


Le formulaire
<form id="formulaire" method="post" action="http://cours.eiverseau.be/test/send.php" enctype="application/x-www-form-urlencoded" onsubmit="return Verif()">
	<p>
		<label for="sujet">Sujet :<br />
			<input type="text" name="sujet" id="sujet" size="30" />
		</label>
	</p>
	<p>
		<label for="message">Message :<br />
			<textarea name="message" id="message" rows="10" cols="30"></textarea>
		</label>
	</p>
	<p>
		<label for="mail">Votre adresse mail (pas obligatoire) :<br />
			<input type="text" name="mail" id="mail" size="30" />
		</label>
	</p>
	<p>
		<input class="input_send" type="submit" value="Envoyer" />
	</p>
</form>

Modifié par Whisno (17 Mar 2008 - 11:45)
On en déduit qu'il n'affiche pas tous les messages d'erreurs ou qu'il a display_errors dans php.ini qui est sur Off. Normalement, si t'accèdes à une variable pas initialisée, il râle, ce qui n'est étrangement pas le cas ici...
Corrigé (quand je dis que je débute Smiley lol )

Mais ça ne marche toujours pas Smiley ohwell C'est peut-être le serveur qui est bizarre, il m'a déjà posé un problème avec un attaché.

FlorentG, tu semble parler un dialecte étrange de quelque contrée qui m'est inconnue. Tu veux dire que le serveur a un problème avec les messages d'erreur?
Oui, apparemment il n'est pas configuré pour afficher certaines erreurs (ce qui est normal en production, mais pas en développement). Il faut aller voir du côté du fichier php.ini, voir si display_errors est bien sur "on" par exemple
Ben regarder le php.ini, y'a tout dedans Smiley confus Comme je l'ai dis, il faut regarde l'option de configuration "display_errors"
Pour certaines options de configuration, on peut les modifier en cours de route avec ini_set(). Mais ça ne fonctionne pas pour toutes les options. Normalement, il vaut mieux les mettre en tout tout début de script.

Alors la liste des options est trouvable dans le manuel : liste des options

Alors t'as plusieurs choix :
- PHP_INI_USER : peut-être défini par ini_set()
- PHP_INI_PERDIR : définissable par dossier (via .htaccess)
- PHP_INI_SYSTEM : uniquement dans le php.ini
- PHP_INI_ALL : partout où on le veut

Alors pour display_errors, c'est PHP_INI_ALL, donc c'est bon Smiley biggrin
ini_set('display_errors', 1);

Essaye aussi d'activer toutes les erreurs :
ini_set('error_reporting', E_ALL);

Et essaye maintenant d'utiliser un truc qui n'existe pas comme $POST, normalement il devrait y avoir une erreur d'affichée...
Oublie pas aussi qu'en production, vaut mieux masquer toutes les erreurs. J'ai déjà vu des messages d'erreur montrant des requêtes SQL entières, dévoilant parfoit des failles, parfois des infos que personnes ne devrait voir Smiley lol
J'écris ce code en première ligne de mon fichier php? Qu'entends-tu par en production?

Désolé de ne pas avoir pu répondre plus vite, j'avais plus accès à internet Smiley ohwell
Oui, en première ligne.

Sinon :
Serveur de développement : là où tu développes et testes ton site (en général en local)
Serveur de production : là où le site est mis en ligne
Pour ne garder que l'essentiel,
que ce soit $_POST, $POST ou $_4154CR34710N5 (pas pris au hasard ^^) il ne réagit pas (ce qui explique tout jusqu'ici).

Il n'a aucune réaction à
ini_set('display_errors', 1);
ou
ini_set('error_reporting', E_ALL);

(logique puisque il, dans ce cas, est censé s'appliqué à $POST)
<?php
ini_set('error_reporting', E_ALL);
$mail = "arthurmaniet@mac.com";

$sujet = $_4154CR34710N5['sujet'];
$message = $POST['message'];
$maill = $POST['mail'];

$contenu = ''.$maill.'
'.$message.'';

mail($mail, $sujet, $contenu, "from:site_info_2");
header("Location:   http://homepage.mac.com/arthurmaniet/info_2/9_1.html");
 
?>

(j'ai quand même essayé de supprimer la page de redirection et ça n'a plus marché, j'aurais eu l'air idiot de modifier un code pour en tester un autre ^^)

Si tu a un serveur, tu veux bien héberger le php pour faire un essai s'il te plait? Ça me clarifierait les idées Smiley biggrin
Je sais (ma mémoire n'est pas limitée à ce point, quoi qu'il en paraisse Smiley biggrin ) mais il n'y réagit pas non plus Smiley rolleyes
Je disais ça parce que dans ton code tu avais laissé $POST Smiley smile

Essaye peut-être avec $HTTP_POST_VARS à la place de $_POST, c'est l'ancienne version de la variable.

Sinon essaye de faire un :

<?php
     print_r($_POST);
     print_r($HTTP_POST_VARS);

     $mail = "arthurmaniet@mac.com";
     $sujet = $_4154CR34710N5['sujet'];
     $message = $POST['message'];
     $maill = $POST['mail'];
     $contenu = ''.$maill.'                   // pas compris cette ligne
     '.$message.'';                            // celle-la non plus [cligne]

     mail($mail, $sujet, $contenu, "from:site_info_2");

     // header("Location:    http://homepage.mac.com/arthurmaniet/info_2/9_1.html");
 
?>


Et regarde s'il affiche quelque chose Smiley smile
Si oui, ça pourra peut-être venir de la fonction mail.
Si non, le problème se complique quelque peu Smiley sweatdrop
 $contenu = ''.$maill.'
'.$message.'';

Signifie (ou en tout cas c'est l'idée Smiley lol ) qu'on fait une variable dont la valeur est : variable maill retout à la ligne variable message. J'ai essayé de l'enlever et d'afficher comme contenu "contenu" mais ça n'a rien changé.

$HTTP_POST_VARS n'a pas marché non plus.

print_r($_POST);
print_r($HTTP_POST_VARS);

pas mieux Smiley decu

$sujet = $_POST['sujet'];

est correct pour faire appel au contenu d'un input si le php est séparé?