Page 1 sur 1

Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 09:34
par Teenoo
Bonjour,

suite à une grosse prise de tête avec PHP j'ai pris la douloureuse décision de générer mon formulaire de contact depuis un générateur gratuit. Il semble marcher parfaitement en local (serveur MAMP) mais mis en ligne je n'ai plus accès à mes checkbox et le lien d'envois est inerte.

Ci-joint le script à placer avant le header :
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_1']=array("Particulier","Société");
$list['f_11']=array("Du neuf","De la rénovation");
$list['f_14']=array("Béton ciré","Une résine","Un enduit ","Une chape","Un carrelage","Autre");
if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entrées
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entrées
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
	$f_4=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_4)));
	$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
	$f_6=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_6)));
	$f_7=trim(eregi_replace("[^0-9+]", "", $f_7));
	$f_8=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_8)));
	$f_9=trim(eregi_replace("[^0-9\ +]", "", $f_9));
	$f_10=strip_tags(trim($f_10));
	$f_15=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_15)));
	// Verification des champs
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}
	if(strlen($f_10)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Email &raquo; est vide ou incomplet.</span>";
		$errf_10=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
		$f_10)){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
			$errf_10=1;
		}
	}
	if(strlen($f_16)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
		$errf_16=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:[email protected]\n";
		for($id=0; $id<count($list['f_1']); $id++){
			if($f_1[$id]==1){
				$corps.="Profil : ".$list['f_1'][$id]."\n";
			}
		}
		$corps.="Heures souhaitées : ".$f_2."\n";
		$corps.="Société : ".$f_3."\n";
		$corps.="Nom : ".$f_4."\n";
		$corps.="Prénom : ".$f_5."\n";
		$corps.="Adresse : ".$f_6."\n";
		$corps.="Code Postal : ".$f_7."\n";
		$corps.="Ville : ".$f_8."\n";
		$corps.="Tél : ".$f_9."\n";
		$corps.="Email : ".$f_10."\n";
		for($id=0; $id<count($list['f_11']); $id++){
			if($f_11[$id]==1){
				$corps.="Travaux sur : ".$list['f_11'][$id]."\n";
			}
		}
		$corps.="Sur une surface de : ".$f_12."\n";
		$corps.="Type de pièce : ".$f_13."\n";
		for($id=0; $id<count($list['f_14']); $id++){
			if($f_14[$id]==1){
				$corps.="Réalisation : ".$list['f_14'][$id]."\n";
			}
		}
		$corps.="Autre : ".$f_15."\n";
		$corps.="Message : ".$f_16."\n";
		if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>
Puis le script du formulaire :
<? if($ok_mail=="true"){ ?>
	
		<p></p>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</p>
		&nbsp;
		<tt><?echo nl2br(stripslashes($corps));?></tt>
		<span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span>
	
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' id='contact' name='Form'>

<? if($erreur){ ?><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span><ul><?echo$erreur?></ul><?}?>
<p>Les champs marqué d'un * sont obligatoires</p>
<br />
<label>Profil* :</label>
<? for($id=0;$id<count($list['f_1']);$id++){
if($f_1[$id]==1){$ct="checked";}
print("<input ".$ct." type='checkbox' id='check' name='f_1[$id]' value='1' border='0'></td><td><span class='txtform'>".$list[f_1][$id]."</span>");
unset($ct);
}?>
<br />
<label>Société :</label><input type='text' id="société" style='<?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='30' border='0'>
<br />
<label>Nom* :</label><input type='text' id="nom" style='<?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?echo stripslashes($f_4);?>' size='30' border='0'>
<label>Prénom :</label><input type='text' id="prénom" style='<?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_5' value='<?echo stripslashes($f_5);?>' size='30' border='0'>
<br />
<label>Adresse :</label><input type='text' id="adresse" style='<?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' value='<?echo stripslashes($f_6);?>' size='30' border='0'>
<br />
<label>Code Postal :</label><input type='text' id="cp" style='<?if($errf_7==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_7' value='<?echo stripslashes($f_7);?>' size='30' border='0'>
<label>Ville :</label><input type='text' id="ville" style='<?if($errf_8==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_8' value='<?echo stripslashes($f_8);?>' size='30' border='0'>
<br />
<label>Tél :</label><input type='text' id="tel" style='<?if($errf_9==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_9' value='<?echo stripslashes($f_9);?>' size='30' border='0'>
<label>Email* :</label><input type='text' id="mail" style='<?if($errf_10==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_10' value='<?echo stripslashes($f_10);?>' size='30' border='0'>
<hr />
<label>Travaux sur :</label>
<? for($id=0;$id<count($list['f_11']);$id++){
if($f_11[$id]==1){$ct="checked";}
print("<input ".$ct." type='checkbox' id='check' name='f_11[$id]' value='1' border='0'><span class='txtform'>".$list[f_11][$id]."</span>");
unset($ct);
}?>

<br />
<label>Sur une surface de :</label><input id="nom" style='width:360 <?if($errf_12==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_12' size='30'><?echo$f_12?></input>
<br />
<label>Type de pièce :</label><input id="nom" style='width:360 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' size='30'><?echo$f_13?></input>
<br />
<? for($id=0;$id<count($list['f_14']);$id++){
if($f_14[$id]==1){$ct="checked";}
print("<input ".$ct." type='checkbox' id='check' name='f_14[$id]' value='1' border='0'><span class='txtform'>".$list[f_14][$id]."</span>");
unset($ct);
}?>

<br />
<label>Autre :</label><input type='text' id="nom" style='width:200 <?if($errf_15==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_15' value='<?echo stripslashes($f_15);?>' size='30' border='0'>
<br />
<label>Message* :</label><textarea style='width:360 <?if($errf_16==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_16' rows='10' cols='60'><?echo$f_16?></textarea>
<br />
<label>Heures souhaitées :</label><input type='text' id="nom" style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='30' border='0'>
<input type='submit' name='submit' id="bouton" value='' border='0'>

</form>
<? } ?>
Ayant bidouillé le second script, peut-être ai-je fait une erreur...

Merci beaucoup, beaucoup d'avance pour vos conseils :D

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 09:42
par moogli
salut,

quel est la différence de version de php ?


commence par remplacer les <? par <?php pour le cas où les shorts_tag ne soit pas activés. (avec un editeur de texte digne de ce nom un simple rechercher et remplacer le fait en 1s).

@+

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 10:07
par Teenoo
J'ai tenté de remplacer les <? par le <?php j'ai une belle page d'erreur! J'en conclus que ce n'est pas ça :lol:

Concernant les versions, je tourne en PHP 5 sous MAMP. Me semble pourtant qu'OVH est en PHP 5... En tout cas j'ai rajouté un .htaccess pour le forcer mais ça ne semble pas être la source du problème.

A noter que j'ai souvent des scripts JS qui marchent parfaitement en local et bug en serveur distant. On dirait que MAMP autorise les erreurs, tandis qu'OVH les détecte sur le champ. #-o

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 10:27
par Ez3kiel
Déjà j'ai vu
<?echo$erreur?>
au lieu d'
<? echo $erreur; ?>
Sur ton script formulaire.

Mais il te retourne quoi comme erreur sans les short tags ?
(Nb: Ovh est très pointilleux, sensible à la casse et tout le tralala, si tu mets une majuscule quelques part il faudra obligatoirement qu'elle y soit ailleurs si c'est sur un champ de formulaire, un href, un src, un header, etc)

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 10:46
par Teenoo
Tenté mais en vain... :|

Je n'ai aucune erreur sur ma page, juste mes checkbox invisibles (générées par php) et le lien d'envoie qui tourne dans le vide...

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 10:47
par xTG
Pas d'erreurs ?
J'ai tenté de remplacer les <? par le <?php j'ai une belle page d'erreur! J'en conclus que ce n'est pas ça :lol:
C'est de celle là qu'on parlait...

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 11:20
par Mazarini
Bonjour,

Dans ce genre de cas, il faut regarder le source HTML de la page. Cela te permettra de voir la différence de traitement entre les 2 serveurs et voir exactement à partir d'ou la génération diverge et donc limiter le nombre de ligne de PHP à étudier.

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 12:06
par Teenoo
Pas d'erreurs ?
J'ai tenté de remplacer les <? par le <?php j'ai une belle page d'erreur! J'en conclus que ce n'est pas ça :lol:
C'est de celle là qu'on parlait...
Eh bien tout compte fait en séparant les <? du code et en ajoutant le <?php. Pas d'erreur, mais ça ne marche toujours pas... C'est assez déprimant!

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 15:11
par Teenoo
J'ai peut-être trouvé une piste, vous allez me dire ce que vous en pensez.

Le site que je développe est en HTML5 et j'ai pu constaté que le code bougeait pas mal en partant sur un serveur distant. Sur ce même site, j'avais un script qui ne voulait pas fonctionner. J'ai rapatrié le code et j'ai constaté qu'il était en ligne totale. J'ai fait un copié/collé de celui du voisin qui était propre et là MAGIE (oui là ça tient de la magie) il s'est mis à fonctionner.

J'ai rapatrié mon fichier de formulaire et je constate qu'il est aligné sur une même ligne et que le code se confond avec les commentaires. C'est un beau merdier, normal que ça ne marche pas! Après j'espère le faire fonctionner sans prise de tête mais c'est pas gagné.

Qu'en dites-vous ? Avez-vous constaté ce problème ?

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 15:29
par Teenoo
Désolé pour la suite de message, n'étant pas logguée... Suite à mon message du dessus j'ai pu faire fonctionner mon formulaire. J'ai supprimé tous les commentaires et tout baigne à présent.

Mais si vous avez des idées concernant cette histoire de monoligne avec HTML5... Je suis preneuse.

Re: Script qui marche en local mais pas sur le serveur

Posté : 24 juin 2011, 20:39
par moogli
heu t'aurais pas un editeur qui fait des truc foireux ?

le fichier n'est pas modifier par un transfert FTP (ou alors change directement de client :mrgreen: )

@+