Livre d'or & envoi mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Livre d'or & envoi mail

par spirou » 02 déc. 2005, 07:23

C'est résolu, enfin :D

On m'a conseillé de fermer mysql juste après ma requête et en faisant ça, je n'ai plus de message d'erreur.

par spirou » 01 déc. 2005, 21:56

Bonsoir !!

J'ai résolu mon 1er problème en faisant une redirection, mais j'ai toujours celui du message d'erreur.

Je reçois bien le mail envoyé de la page, mais il y a toujours ce message d'erreur indiqué en dessous.
$connect = mysql_connect($base, $user, $passe);
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in ... on line 89

Ligne 89 qui est bien sûr :
mysql_close($connect);
Voilà :?

j'ai ensuite encore un truc qui ne fonctionne pas, les sauts de lignes dans mon textarea.
J'ai fais :
$message = $_POST['texte'];
$message = nl2br($message);
Mais lors de l'enregistrement dans ma base, les sauts de lignes sont respectés, mais pas d'affichage de <br>.
Par contre j'ai essayé par mail, et là les <br> sont bien envoyés.

<edit>
Résolu !!
J'avais fais une petite erreur dans mon code :oops:
Me reste plus que le message d'erreur.
</edit>

Merci, si vous avez une soluce.

par Invité » 01 déc. 2005, 01:04

En fait si j'enlève la deuxième connection, voici les messages :

Warning: mysql_query(): A link to the server could not be established in ... on line 164

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line 165

Warning: mysql_close(): no MySQL-Link resource supplied in ... on line 180

164 : mysql_connect($base, $user, $passe);
165 : mysql_select_db('base');
180 : }

Par contre, j'avais oublié, dans ma partie formulaire, je réouvre une balise php pour faire juste un echo d'une variable.
Ca peut avoir une incidence ?

par spirou » 01 déc. 2005, 00:35

Bah en fait, je l'ai réouverte une seconde fois, car j'avais un message me disant que mes variables de connection n'étaient pas définies.

Donc, j'ai remis l'include et réouvert la connection.
Quant à te dire pourquoi j'ai été obligé de le faire deux fois, je ne sais pas ...

par Xenon_54 » 01 déc. 2005, 00:20

Pourquoi as-tu plusieurs connexions au serveur MySQL?

De plus, en regardant la documentation, la fonction mysql_close() prend un argument facultatif qui correspond à la ressource que l'on désire fermer. Dans ton cas, il faudrait dire quelle connexion tu désires fermer ou alors réduire à les connexions à une.

Livre d'or & envoi mail

par spirou » 01 déc. 2005, 00:04

Bonsoir !!

Encore moi :D

Je suis de nouveau confronté à quelques problèmes.

J'ai fais un formulaire qui fonctionne presque parfaitement avec deux options un envoi par mail, et un affichage comme livre d'or, seuls bémols :

- Lors de l'envoi du formulaire pour le faire afficher en dessous, il m'affiche une page blanche, comment faire pour qu'il revienne à la page actualisée du nouveau message.

- Lors de l'essai de l"envoi par mail, il m'affiche carrément un message d'erreur :

Warning: mysql_close(): no MySQL-Link resource supplied in / .... on line 182

Je ne comprends pas puisque je ferme bien ma connection à la fin de mon code php.

Voici le code :
<?php 

if(!empty ($_POST['nom']) and !empty($_POST['mail']) and !empty($_POST['texte']))
{ 
	  if (isset($REMOTE_ADDR))
	  { 
	  		$ip = $REMOTE_ADDR;
	  }
	  else
	  {
	  		$ip = "";
	  }
	  $date = date("d/m/Y");
	  $heure = date("H:i");
	  $mail = htmlentities($_POST['mail']);
	  $nom = htmlentities($_POST['nom']);
	  $message = $_POST['texte'];
	
	  // vérification de l'e-mail 
	  $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]';    // caractères autorisés avant l'arobase
	  $domain = '([a-z]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
	  											
	  $regex = '^' . $atom . '+' .    // Une ou plusieurs fois les caractères autorisés avant l'arobase
	  '(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
	                                  // séparés par des caractères autorisés avant l'arobase
	  '@' .                           // Suivis d'un arobase
	  '(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
	                                  // séparés par des points
	  $domain . '{2,63}$';            // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
	  
	  // test de l'adresse e-mail
	  if (eregi($regex, $mail))
	  {
	  		$avis = htmlentities($_POST['texte']);
			  if($_POST['butMessage'] == 'avis')
  			{
  					include('../inclusion/loupe.inc');
  					mysql_connect($base, $user, $passe);
  					mysql_select_db('base');
  					mysql_query("INSERT INTO commentaires VALUES('', '$date', '$heure', '$nom', '$ip', '$avis')");
			  }
			  else
				{
						$to = 'mon mail';
						$sujet = 'message de'.$nom;				
						mail($to, $sujet, $mail);
				}
		}
  	else
    {		
    		echo "<p>L'adresse e-mail $mail n'est pas valide</p>";
    }
} 
else 
{


?>
  
// affichage du formulaire

<?php

		include('../inclusion/loupe.inc');
		mysql_connect($base, $user, $passe);
		mysql_select_db('ma base');
		$listage = mysql_query("SELECT * FROM commentaires");
		while($affichage = mysql_fetch_array($listage))
		{		
				echo'
				<div class="messageInter">
					<div class="hautMessage"><p class="hautMessageD"></p>
					<span>Message posté par '.$affichage["nom"].'</span>
					<span> Le '.$affichage["date"].' à '.$affichage["heure"].'</span>
					</div>
					<p class="messageCorps">'
					.$affichage["message"].
					'</p>
				</div>';
		}		
}

mysql_close();	

?>
Ps: j'avais aperçu sur le forum une autre façon de vérifier une adresse mail, mais je ne trouve plus le lien, si vous savez où est ce topic, merci :P