IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Compatibilité avec register_globals=off


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Points : 65
    Points
    65
    Par défaut [Mail] Compatibilité avec register_globals=off
    Bonjour,

    Je cherche a securiser un script de newsletter. J ai passé le serveur en register_globals=off et tout fonctionne maintenant...excepté ce script d envoi de newsletter...

    Pourriez vous me dire ce qui est faux dans ma portion de code car je ne vois vraiment d'ou vient l'erreur! Lorsque je suis en register_globals=on tout fonctionne et en "off" cela ne m envoi pas le mail...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php 
    include ('dbconnect.php');
     
    //sujet du mail
    $typedemande =  mysql_real_escape_string($_POST['typedemande']);
     
    $choixnewsletter =  mysql_real_escape_string($_POST['choixnewsletter']);
     
    //message du mail
    $message =  mysql_real_escape_string($_POST['message']);
     
    //verification valeur int:
    for ( $i = 1; $i <= 21 ; $i++ )
    $int[$i] = mysql_real_escape_string($_POST['int'.$i]);
     
    //header des mails
    $Destinataire = ''.$data['email'].'';
    $Sujet = "$typedemande";
    $entetemail = "From: xxx.fr <webmaster@xxx.fr> \n"; // Adresse expéditeur
    $entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
    $entetemail .= "MIME-Version: 1.0\r\n"; 
    $entetemail .= "Content-type: text/html; charset=iso-8859-1"; 
    $msg = "$message \n";
     
    if ($int1 == '1')
    { 
    $sql=mysql_query('SELECT email FROM membres') or die(mysql_error());
     
    while($data = mysql_fetch_array($sql))
    {
    mail($Destinataire,$typedemande,$msg,$entetemail);
    }
    echo 'Le mail a été envoyé à tous les membres de la base'; 
    }
    //Envoi au mail de test
    if ($int2 == '1')
    { 
    {
    $Destinatair = "xxxx@hotmail.fr";
    mail($Destinatair,$typedemande,$msg,$entetemail);
    }
    echo 'Le mail de test a été envoyé à xxxx@hotmail.fr'; 
    }
     
    if ($int3 == '1')
    { 
    $sql=mysql_query("SELECT email FROM tempmail")or die(mysql_error());
    while($data = mysql_fetch_array($sql))
    {
    mail($Destinataire,$typedemande,$msg,$entetemail);
    }
    sql=mysql_query("TRUNCATE TABLE tempmail")or die(mysql_error());
    echo 'Le mail a été envoyé aux membres présent dans la table tempmail'; 
    }
     
    if ($int4 == '1')
    { 
    $sql=mysql_query("SELECT email FROM membres WHERE jeuxenligne = '1' AND newsletter='$choixnewsletter'")or die(mysql_error());
     
    while($data = mysql_fetch_array($sql))
    {
    mail($Destinataire,$typedemande,$msg,$entetemail);
    }
    echo 'Le mail a été envoyé aux membres ayant pour centre d intérêt les jeux en ligne'; 
    }
     
    //Puis je continue jusqu a int21 avec la meme portion que $int4 mais en choisissant un centre d interet different à chaque fois...
     
    // on ferme la connexion à mysql
    mysql_close(); 
    ?>
    merci

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Déjà je me pose la question suivante : D'où provient :
    Puis, ce ne serait pas :
    Au lieu de :
    ?

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu peux modifier register_globals à partir d'un fichier .htaccess si tu as les droits nécessaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php_value register_globals On
    Cela te permet de réactiver les register_globals pour un seul répertoire, sans affecter le reste du site.

    Cela dit, la meilleure solution est de choisir un autre script de newsletter, qui serait mieux prévu pour la sécurité.

    [Edit] J'oubliais la réponse

    Le problème vient des $int1 $int2 etc., qui reposent effectivement sur register_globals à On.
    La solution est de les remplacer par :
    • $_POST['int1']
    • $_POST['int2']
    • etc.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Comme le dit Yougi, le principal "problème" de passe de register_global ON à OFF est de définir la provenance des variables !

    Les variables par URL de type : ma_page?maVar1=x&maVar2=y sont réccupérablent par
    $_GET["maVar1"] et $_GET["maVar2"]

    au lieu de : $maVar1 et $maVar2

    il en est de même pour le reste (dans un formulaire method="post" par exemple )
    $_POST["maVar"]

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/09/2009, 18h02
  2. [JDOM] Compatibilité avec DOM
    Par Righetto Dominique dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 14/01/2005, 14h30
  3. Réponses: 5
    Dernier message: 12/01/2005, 10h55
  4. []Compatibilité avec XP
    Par anne22 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/09/2003, 15h56
  5. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo