Formulaire en PHP et IIS

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 10:03

Bonjour,

je souhaiterais installer un formulaire simple sur un serveur IIS, mais j'ai un résultat assez particulier.
Ce formulaire fonctionne chez un hébergeur (levillage), mais pas sur mon serveur IIS.
Sur ce même serveur, j'ai actuellement un PHPBB2 qui fonctionne bien.

Voivi le résultat de mon formulaire.
Image

Quelque'un aurait il une idée?

Merci d'avance pour votre aide

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 10:15

Regarde dans ton php.ini. les short open tags sont activés (il permettent l'usage de <? au lieu de <?php )

ceci dit, il est conseillé d'utiliser la version "normale" <?php , et donc de changer tous tes <? en <?php
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 10:39

Je viens de faire les deux essais.

Remplacer tous mes <? par <?php --> Aucun changement
Passer les short open tags de OFF à ON --> aucun changement



Je viens finalement d'y arriver, j'ai un autre souci, je ne sais pas si c'est lié, je regarde.

Merci en attendant pour cette aide.

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 10:57

Juste pour être sur, mais tu as redémarré le serveur après modification du php.ini ?

Sinon, y'a moyen de jeter un oeil a ton code, pour ce formulaire?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 11:18

Mon nouveau message est Envoi du formulaire impossible

Pour le code, le voici
<?php

// On vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}

// Vérifier que le formulaire a été envoyé...
if (isset($_POST['envoi'])) {


//On commence une session pour enregistrer les variables du formulaire...

session_start();

$_SESSION['champ1'] = $_POST['champ1'];
$_SESSION['champ2'] = $_POST['champ2'];
$_SESSION['champ3'] = $_POST['champ3'];
$_SESSION['champ4'] = $_POST['champ4'];
$_SESSION['champ5'] = $_POST['champ5'];
$_SESSION['zone_email1'] = $_POST['zone_email1'];

//Enregistrement des zones de texte...
$_SESSION['zone_texte1'] = $_POST['zone_texte1'];

// Définir l\'icone apparaissant en cas d\'erreur...


// Définir sur 0 pour afficher un petit x de couleur rouge.
// Définir sur 1 pour afficher l\'image d\'une croix rouge telle que celle utilisée dans l\'assistant
// Si vous utilisez l\'option 1, l\'image de la croix rouge \'icone.gif\' doit se trouver dans le répertoire \'images\',
// ce dernier devant se trouver au même niveau que votre formulaire...
$flag_icone = 0;

// On vérifie si $flag_icone est défini sur 0 ou 1...
if ($flag_icone == 0) {
$icone = "<b><font size=\"3\" face=\"Arial, Verdana, Helvetica, sans-serif\" color=\"#CC0000\">x</font></b>";
} else {
$icone = "<img src=\"images/icone.gif\"";
}

// Définir l'indicateur d'erreur sur zéro...
$flag_erreur = 0;
// N'envoyer le formulaire que s'il n'y a pas d'erreurs...
if ($flag_erreur == 0) {					

// Addresse de réception du formulaire
$email_dest = "[email protected]";
$sujet = "Demande d'étude";
$entetes ="MIME-Version: 1.0 \n";
	$entetes .="From: Société<[email protected]>\n";
	$entetes .="Return-Path: Société<[email protected]>\n";
	$entetes .="Reply-To: Société<[email protected]>\n";
	$entetes .="Content-Type: text/html; charset=iso-8859-1 \n";
	$partie_entete = "<html>\n<head>\n<title>Formulaire</title>\n<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n</head>\n<body bgcolor=#FFFFFF>\n";


//Partie HTML de l'e-mail...
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Nom = " . $_SESSION['champ1'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Prénom = " . $_SESSION['champ2'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Société = " . $_SESSION['champ3'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Téléphone = " . $_SESSION['champ4'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Type de PLV récherchée = " . $_SESSION['champ5'] . "</font><br>\n";
$partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Adresse Email = " . $_SESSION['zone_email1'] . "</font><br>\n";
$partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre demande = " . $_SESSION['zone_texte1'] . "</font><br>\n";
					

					// Fin du message HTML
					$fin = "</body></html>\n\n";
					
					$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_listes . $partie_boutons . $partie_cases . $partie_zone_texte . $fin;


					// Send the e-mail
					if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
					echo("Envoi du formulaire impossible");
					exit();
					} else {

                    // Rediriger vers la page de remerciement
                    header("Location:http://www.monsite.com/merci.php");
                    exit();
                  } // Fin else
			    } // Fin du if ($flag_erreur == 0) {
			} // Fin de if POST
?>
<html>
<!-- 
Assistant de création de formulaires PHP pour les nuls - Version gratuite 1.6
Auteur : Frédéric Ménard ([email protected])
Site : http://www.f1-fantasy.net/assistant
 -->
<head>
<title>Formulaire</title>

<script language="JavaScript">


function verifSelection() {


if (document.mail_form.champ1.value == "") {
alert("Merci de nous communiquer votre Nom")
return false
} 

if (document.mail_form.champ3.value == "") {
alert("Merci de nous communiquer le nom de votre société")
return false
} 

if (document.mail_form.champ4.value == "") {
alert("Merci de nous communiquer votre numéro de portable")
return false
} 

if (document.mail_form.zone_email1.value == "") {
alert("Merci de nous communiquer une adresse Email valide")
return false
}

invalidChars = " /:,;'"

for (i=0; i < invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.mail_form.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email1.focus()
return false
}
}

atPos = document.mail_form.zone_email1.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (document.mail_form.zone_email1.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

periodPos = document.mail_form.zone_email1.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (periodPos+3 > document.mail_form.zone_email1.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

} // Fin de la fonction
</script>
</head><body><form name="mail_form" method="post" action="<?php echo $_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong>Formulaire
    de contact</strong></font></div><br><table align="center" width="566" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="16"><div align="center">
  <font color="#CC0000" size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong><?php
if ($erreur_champ1) {
	  echo(stripslashes($erreur_champ1));
	  } else {
if ($erreur_champ2) {
	  echo(stripslashes($erreur_champ2));
	  } else {
if ($erreur_champ3) {
	  echo(stripslashes($erreur_champ3));
	  } else {
if ($erreur_champ4) {
	  echo(stripslashes($erreur_champ4));
	  } else {
if ($erreur_champ5) {
	  echo(stripslashes($erreur_champ5));
	  } else {
if ($erreur_email1) {
	  echo(stripslashes($erreur_email1));
	  } else {
if ($erreur_texte1) {
	  echo(stripslashes($erreur_texte1));
	  } else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>
    </strong></font>
    </div></td>
      </tr>
    </table>
<p align="center"></p><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Nom</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ1) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ1" type="text" value="<?php echo stripslashes($_SESSION['champ1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Prénom</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ2) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ2" type="text" value="<?php echo stripslashes($_SESSION['champ2']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Société</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ3) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ3" type="text" value="<?php echo stripslashes($_SESSION['champ3']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Téléphone</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ4) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ4" type="text" value="<?php echo stripslashes($_SESSION['champ4']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Type de PLV récherchée</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ5) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ5" type="text" value="<?php echo stripslashes($_SESSION['champ5']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Adresse Email</font></div></td>
      <td width="30" align="center" valign="middle">
	  <?php
	  if ($erreur_email1) {
	  echo($icone);
	  }
	  ?>
	  </td>
      <td><input name="zone_email1" type="text" value="<?php echo stripslashes($_SESSION['zone_email1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140" valign="top"><div align="right"><font face="Verdana" size="2">Votre demande</font></div></td>
      <td width="30" align="center" valign="top">
	  <?php
	  if ($erreur_texte1) {
	  echo($icone);
	  }
	  ?>
	  </td>
      <td><textarea name="zone_texte1" cols="45" rows="10"><?php echo stripslashes($_SESSION['zone_texte1']);?></textarea></td>
    </tr></table><table width="566" border="0" align="center"><tr>
<td valign="top"><div align="center"> 
          <input type="reset" name="Reset" value=" Effacer ">
            
          <input type="submit" name="envoi" value="Envoyer">
        </div></td></tr></table><div align="center"><input name="nbre_fichiers" type="hidden" id="nbre_fichiers" value=""></div></form></body></html>

Dans mon PHP.ini j'ai bien mon error_reporting à E_ALL &~E_NOTICE

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 12:03

Tu entends quoi par "mon nouveau message est etc.." ?

Que le problème est résolu mais qu'un autre a fait surface ? Pour ce qui est du dialogue clair et explicite, on repassera.. :roll:


Sinon, change cette ligne :
if (@!mail($email_dest,$sujet,$sortie,$entetes)) { 
en
if (!mail($email_dest,$sujet,$sortie,$entetes)) { 
L'arobase empêche php de lancer des messages d'erreur, peu importe ce qui est configuré dans le php.ini. Ce qui n'est pas la meilleure des méthodes pour débuger..

Et comme il s'agit d'un script qui est censé fonctionner ailleurs, tu as pensé à adapter les données de connexion ? serveur smtp et tout ça ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 12:16

Excuses moi...

Mon premier souci est résolu grâce au remplacement de tous les <? par <?php.

Maintenant, quand je valide mon formulaire, j'ai le message d'erreur suivant Envoi du formulaire impossible

J'ai enlevé l'arobase, pas de changement.

Dans mon script je n'ai pas d'information de connexion à configurer, je ne vois pas ce qu'il faudrait que je modifie.

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 14:18

C'est que "mail" est incorrectement configuré chez toi:
http://be.php.net/manual/fr/mail.configuration.php

Les données de connexion (smtp, etc..) se retrouvent dans le php.ini .
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 15:33

Je viens de tout contrôler et tout semble correct.

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 15:49

L'hôte smtp est bien défini par rapport à ton FAI ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 16:14

En fait au début j'avais mis l'adresse IP de mon serveur exchange, maintenant j'ai mis le smtp de orange.

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 16:19

Et ? ça marche pas ? Et en essayant un simple petit script, en dehors du formulaire (histoire de confirmer que le problème ne se situe pas sur mail() ?

Ceci, en modifiant par ton adresse mail, devrait t'envoyer un email d'essai:
<?php
     // Le message
     $message = "Line 1\nLine 2\nLine 3";

     // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
     $message = wordwrap($message, 70);

     // Envoi du mail
     mail('[email protected]', 'Mon Sujet', $message);
?>
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 16:20

Bon je viens de faire le test, ça ne fonctionne pas sur mon serveur, en revanche le script fonctionne très bien chez un autre hébergeur. :?

ViPHP
ViPHP | 4039 Messages

13 oct. 2008, 18:45

C'est bizarre.. ton serveur tourne sous quel OS ?
Et il ne faut pas un nom d'utilisateur et un mot de passe pour envoyer sous orange ?
Il n'y a aucun message d'erreur, rien, njet ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 11 Messages

13 oct. 2008, 18:50

Non pas de message d'erreur, la page reste blanche (comme chez l'autre hébergeur) et je ne reçois pas de mail.

Mon serveur est sous 2003 server.

Dans les paramètres j'ai :
- smtp = smtp.orange.fr
- smtp_port = 25
- sendmail_from = monadresse_email

Je ne trouve aucun autre paramètre