email sous condition

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 : email sous condition

par Chile » 21 avr. 2006, 18:45

désolé la fonction email marchait tres bien !
par contre mon hebergeur(ovh), a qlqs problemes de saturations, et coupe par moment la fonction mail() :evil:

par jpaul » 20 avr. 2006, 23:45

A ta place, je ferais :
echo "<BR>Envoi mail":
echo "<BR>email=".$email;
echo "<BR>sujet=".$sujet;
echo "<BR>msg=".$msg;
echo "<BR>Headers=".$Headers;
  if (mail($email, $sujet, $msg, $Headers))
     {
     echo "<BR>Message accepté";
     }
     else
     {
     echo "<BR>Erreur à l'envoi";
     }
Pour vérifier

par FuR[i]OuS » 20 avr. 2006, 22:52

essaye peut etre de commenter

Code : Tout sélectionner

header(sprintf("Location: %s", $updateGoTo));
peut etre que la redirection coupe l'envoi ? (si tu as testé ailleurs ton code et que ça marche l'erreur vient de ce qu'il y a autour...)

par Chile » 20 avr. 2006, 22:27

voici le script (partie haute)
pour les variables, elles sont bonnes je pense, car ca fonctionne si je pose sur une autre page)
<?php
// Les variables
$visiteur=$row_Recordset3['visiteur'];
$sujet=$row_Recordset4['sujet'];

$msg="<html>";
$msg .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em>Question visiteur</em></strong><br />";
$msg .= "<br />";
$msg .= "<strong><em>Client:</em></strong>:<br />";
$msg .= "\t$visiteur\n<br />";
$msg .= "<strong><em>Sujet:</em></strong>:<br />";
$msg .= "\t$sujet\n<br />";
$msg .="<html>";

$email="[email protected]";
$sujet="Question";

$Headers  = "Content-Type:text/html;charset=iso-8859-1\n";
$Headers .= "Content-Transfer-Encoding: 8bit\n";

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s",
                       GetSQLValueString($_POST['adresse'], "text"),
                       GetSQLValueString($_POST['clave'], "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mail($email, $sujet, $msg, $Headers);

  mysql_select_db($database_Clients, $Clients);
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());

  $updateGoTo = "clientes_repmajemail.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

par FuR[i]OuS » 20 avr. 2006, 22:12

Salut,

Montre peut etre le code au dessus... ?

Es tu sur que les variables passées dans mail() sont bonnes ?

:roll:

par Chile » 20 avr. 2006, 21:08

arghhhhhh.... :?
je craque !!! j'essaye un peu tout mais rien a faire !!

par Chile » 20 avr. 2006, 15:58

j'ai bien placé ma fonction mail comme ceci :
PHP: 
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s", 
                       GetSQLValueString($_POST['adresse'], "text"), 
                       GetSQLValueString($_POST['clave'], "text"), 
                       GetSQLValueString($_POST['id'], "int")); 

  mail($email, $sujet, $msg, $Headers); 

  mysql_select_db($database_Clients, $Clients); 
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());  
avec mes variables un peu plus haut,
mais aucun envoie d'email se fait ! :cry:
merci de votre aide

par Tictac » 20 avr. 2006, 15:19

oui il te suffit de le mettre apres le code d'insertion dans la base de donnée
.

par jpaul » 20 avr. 2006, 15:18

Effectivement, ça me semble assez propice comme endroit.
D'autant plus que j'ai bien vu l'ouverture d'un bloc après le if et qu'il ne semble pas être encore fermé à la dernière ligne que tu as jointe. C'est donc le bon bloc et si tu ajoutes ta fonction mail juste après le code affiché, ça devrait aller. Tu n'as pas essayé ?

par Chile » 20 avr. 2006, 15:14

salut Jpaul,
Si c'est bien ca :wink:
Je voudrais bien faire l'envoie au moment de l'update, mais comment l'ecrire ?
ou dois je tout simplement l'inserer apres ca ?:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s",
                       GetSQLValueString($_POST['adresse'], "text"),
                       GetSQLValueString($_POST['clave'], "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mysql_select_db($database_Clients, $Clients);
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());

Re: email sous condition

par jpaul » 20 avr. 2006, 07:40

Je ne suis pas sur d'avoir bien compris : j'imagine que ton problème est que l'envoi du mail se fait même si le formulaire n'est pas rempli...

Pourquoi ne fais-tu pas l'envoi du mail au moment de l'update de la base ?

Au moment de la validation du formulaire, le script de traitement (qui enregistre dans la base) est appelé, c'est dans la séquence de code qui enregistre dans la base qu'il faut ajouter l'envoi du mail non ?

email sous condition

par Chile » 20 avr. 2006, 05:32

Bonjour,
Je travaille mon site avec dreamweaver.
J'ai donc une page formulaire qui fait directement l'uptade sur ma base.
Le probleme est que je souhaite integrer une fonction email dans ce genre :
//L'envoi du mail
mail($email, $sujet, $msg, $Headers);
mais sans condition, l'email est envoyé a chaque fois qu'un voisiteur ouvre la page , sans necessairement remplir le formulaire ! :?

Comment puis je integrer ma fonction mail sur cette meme page ?