8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila, c'est très étrange. J'ai un formulaire basique qui fonctionne tres bien en local mais pas du tout en ligne.
Pourtant tous mes fichiers sur le serveur sont à jour. Et je n'ai aucun message d'erreur sur ma page php de soumission de formulaire. Juste une page blanche.

Comment faites-vous pour connaitre l'erreur ?
Est-ce que c'est arrivé à l'un d'entre vous ?

Lien

Code (au cas où) de mon form HTML :
<form action="<?= _CONTROL.'form.php?lang='.$lang ?>" method="post">
      <div class="message">
      <?php if($msg_erreur != false)
      { ?>
         <p class="<?php echo $text; ?>"><?php echo constant($error_constant); ?></p><?php
      } ?>
      </div>
      <div id="validationMessage"></div>
<input class="champs" id="name" name="name" type="text" required value="<?php echo $contact['name']['value']; ?>" placeholder="<?php echo _FORM_NAME.' *'; ?>" class="<?php if($contact['name']['class']=='') { echo 'valid'; } elseif($contact['name']['value']== _FORM_NAME.' *' ) { echo 'error'; } else { echo $contact['name']['class']; } ?>" />

<input class="champs" id="email" name="email" type="email" required value="<?php echo $contact['email']['value']; ?>" placeholder="<?php echo _FORM_EMAIL.' *'; ?>" class="<?php if($contact['email']['class']=='') { echo 'valid'; } elseif($contact['email']['value']== _FORM_EMAIL.' *') { echo 'error'; } else { echo $contact['email']['class']; } ?>" />

<textarea id="message" name="message" required placeholder="<?php echo _FORM_MSG.' *'; ?>" class="<?php if($contact['email']['class']=='') { echo 'valid'; } elseif($contact['message']['value']== _FORM_MSG.' *') { echo 'error'; } else { echo $contact['message']['class']; } ?>"><?php echo $contact['message']['value']; ?></textarea>

<div class="g-recaptcha" data-sitekey="6LeK1BUTAAAAAAxz4culMlucVoaUczmNislfSGwz"></div>

<input type="submit" value="Send" />
</form>


Code de ma page form.php
<?php session_start();
require '../config/config.inc.php';
require_once 'recaptchalib.php';

$contact_retour = array();
$valid_form = true;
$lang = get_get_var('lang');

$siteKey = "***";
$secret = "***";
$resp = null;
$error = null;
$reCaptcha = new ReCaptcha($secret);
$captcha_rep = get_post_var('g-recaptcha-response');

if($captcha_rep)
{
    $resp = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]);
}

// Récupération des noms des champs dans le tableau
$contact_champs = array(
	'name' 	=> 'NOTNULL', 
	'email' 	=> 'NOTNULL', 
	'message' => 'NOTNULL'
);

foreach($contact_champs as $champ => $obligatoire)
{
	$contact_post[$champ] = get_post_var($champ, $obligatoire);
	if(!empty($contact_post[$champ])) {
		$contact_post[$champ] = verif_champs($champ, $contact_post[$champ]);
	}
	
	if(is_bool($contact_post[$champ]) && !$contact_post[$champ]) {
		$contact_retour[$champ]['value'] = $_POST[$champ];
		$contact_retour[$champ]['class'] = 'error';
		$valid_form = false;
	}
	else {
		$contact_retour[$champ]['value'] = $contact_post[$champ];
		$contact_retour[$champ]['class'] = 'valid';
	}
}

if(!$valid_form)
{
	$_SESSION['tab_contact'] = $contact_retour;
	$_SESSION['msg_erreur'] = array("constant" => "_FORM_NOT_VALIDE", "class" => "error");
}
else
{
	// Vérif du captcha
	if ($resp != null && $resp->success)
	{
		$object     = utf8_decode("CONTACT");
		$to            = "adresse@email.com";
		$entete     = "From: ".$contact_post['email']."\n";
		$entete	   .= "Content-type: text/html; charset= utf8";
		
		$message    = "Langue : ".$lang."<br />";
		$message   .= "Date : ".date('d-m-Y')."<br />";
		$message   .= "Nom : ". ucfirst(strtolower($contact_post['name']))."<br />";
		$message   .= "Email : ".$contact_post['email']."<br />";
		$message   .= "Message : <br />".stripcslashes(nl2br($contact_post['message']));
		
		$envoi_mail = send_mail($object, $to, $entete, $message);
		
		if($envoi_mail)
		{
			$_SESSION['msg_erreur']	= array("constant" => "_FORM_VALIDE", "class" => "valid");
		}
		else
		{
			$_SESSION['msg_erreur']	= array("constant" => "_FORM_ERROR", "class" => "error");
		}
	}
	else
	{
		$_SESSION['tab_contact'] = $contact_retour;
		$_SESSION['msg_erreur']	= array("constant" => "_CAPTCHA_NOT_GOOD", "class" => "error");
	}
}
header("location: " . _HOST_DIR .'contact#form' ); ?>

Modifié par fanny95 (22 Jan 2016 - 14:43)
Modérateur
Bonjour,

Je pencherai pour une erreur de chemin (mais n'ayant ni accès au serveur, ni au contenu des fichiers inclus dans form.php, impossible à distance de faire le diagnostic. Par contre, toi, tu peux).

EDIT : ou bien une erreur de syntaxe (même si j'y crois moins dans la mesure où ça marche en local). Ou bien la conjonction des deux.

Pour faire le diagnostic, tu commences par remplacer le code de form.php sur ton serveur par un truc du genre :
echo "coucou";
S'il t'affiche "coucou", déjà c'est un pas de fait.

Une fois que ça, ça marche, tu remets ton code initial dans form.php. il faut ensuite t'assurer que les fichiers inclus dans ta page form.php le sont bien. Il faut vérifier les chemins, et éventuellement remplacer (provisoirement le temps du test) le code des fichiers inclus par un echo "coucou"; pour voir s'ils sont bien trouvés et exécutés ou pas. Dans form.php tu peux après chaque ligne testée ajouter un exit(); qui stoppe le script à cet endroit là. Une fois que c'est bon pour cette ligne là, tu déplaces ton exit() après la ligne suivante et ainsi de suite.

EDIT : Pour être certain que l'exécution a bien été jusqu'au exit() sans erreur, tu peux ajouter juste avant le exit() un print "coucou"; ou tout autre instruction de trace.

Amicalement,
Modifié par parsimonhi (22 Jan 2016 - 13:00)
Bonjour,

+1 avec parsimonhi, fait du debug pas à pas.
NB: attention à l'adresse email dans le message => spam en perspective !
Merci a vous pour votre aide. J'ai deja fais les tests et rien ne s'affiche sur ma page form.php.
Meme si je met un echo a la premiere ligne avec un exit juste apres. Aucune erreur Smiley decu

Comment faire dans ce cas la ?
fanny95 a écrit :
Meme si je met un echo a la premiere ligne avec un exit juste apres. Aucune erreur Smiley decu

Aucune erreur, mais tu vois quand même ton echo ou pas ?
Modérateur
Bonjour,

Remplace aussi le <?= _CONTROL.'form.php?lang='.$lang ?> que tu as dans la première page (celle où est le formulaire) par <?php _CONTROL.'form.php?lang='.$lang ?>.

Amicalement,
Modifié par parsimonhi (22 Jan 2016 - 15:24)
Modérateur
SolidSnake a écrit :
Aucune erreur, mais tu vois quand même ton echo ou pas ?


+1

Rien ne nous sera épargné ! Smiley cligne mais on finira par trouver !

Amicalement,
En changeant mes premieres lignes avec ca, ca m'affiche le A et pas le B avec. Du coup ca doit etre le fichier la qui foire. Mais pourtant il est bien sur mon serveur. Et j'utilise le meme code sur un autre site ca fonctionne aussi.

<?php require '../config/config.inc.php';
echo 'a';
require_once 'recaptchalib.php';
echo 'b'; exit(); ?>


Que je mette require ou require_once pour l'appel de mon fichier, aucun des deux ne fonctionnent.
Et meme si je change l'adresse du fichier en :
require_once '../controleur/recaptchalib.php';

Cela ne fonctionne pas.

Comment je peux faire ?
J'ai mis un echo C a la derniere ligne de mon fichier recaptchalib.php et il me l'affiche bien.
Je ne sais plus quoi faire Smiley decu
Vous pensez que ca peut venir du serveur de mon client sur lequel est le site ? Je vois que ca comme solution, vu que ca fonctionne en local..
Modérateur
Salut,

Au début de ton fichier, as tu essayé d'éditer ton fichier en faisant ceci ?


<?php
error_reporting(E_ALL);
ini_set("display_startup_errors", 1);
ini_set('display_errors', 1);

require '../config/config.inc.php';
echo 'a';
require_once 'recaptchalib.php';
//etc..
?>
Merci de ton aide. J'avais besoin de cette fonction PHP pour connaitre les erreurs. Mais ca ne m'avance pas vraiment.

L'erreur signalée est la suivante :
"Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /demo/controleur/recaptchalib.php on line 38"

Et à la ligne 38, j'ai un tout simple public $success;

Ce qui est bizarre dans tout ca, c'est que ce meme fichier la, j'utilise le même pour le captcha de Google lors de l’intégration du même formulaire sur un autre site et ca fonctionne tres bien ! Alors j'ai copie le fichier recaptchalib.php de mon ancien site et coller sur le nouveau. Ca me met toujours cette erreur.

L'un d'entre vous c'est si cela provient d'une erreur de serveur peut etre ?