Le fuseau horaire est UTC+2 heures




Publier un nouveau sujet Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 1 message ] 
 

Auteur Message
Message Publié : 03 Sep 2008, 19:50 
Debutant
Hors-ligne

Inscription : 13 Juil 2007, 13:52
Message(s) : 59
Voilà,
je teste mes scripts en local avant de les mettre en ligne et j'ai un serveur SMTP en local qui fonctionne très bien.

Cependant, je débute dans le php, avant, je reprenais les codes des autres et je les modifiais comme je le pouvais et je n'était pas satisfait des résultats.

Alors depuis 1 bon mois, je code moi-même mes petits scripts.

Cependant, j'ai un soucis avec mes fonctions et je ne trouve pas l'erreur.



Voici le fichier Index.php
Code :
<?php

echo "<p> </p>";

if (file_exists("./functions.php"))
{
  include ("./functions.php");
}
else
{
  echo "<span class='error'>Erreur interne, le serveur ne peux exécuter votre demande</span><br />";
}

echo $conf['charset'];

echo "<style>
      .error
      {
        color: red;
      }
      .online
      {
        color: green;
      }
      </style>";

if (!$error = @captcha_generator())
{
  if (!isset($_POST['recover']) and !isset($_GET['code']) and !isset($_GET['account']))
  {
    formulaire("recover");
  }
  else
  {
    if (!isset($_GET['code']) and !isset($_GET['account']))
    {
      if (!$error = verify_form("recover"))
      {
        if (!$error = verify_data("recover"))
        {
            if (!$error = mail_user("recover"))
            {
              unset_all();
            }

          }

        }

      }

    else
    {
      if (!$error = check_received_mail("recover"))
      {
        if (!$error = mail_user("recover"))
        {
          unset_all();
        }

      }

    }

  }

}

if ($error)
{
  unset_all();
  echo $conf['goback'];
}

echo "<p> </p>";

?>

Maintenant, le fichier functions.php
Code :
<?php

if (file_exists("./conf.php"))
{
  include("./conf.php");
}

function error($code)
{

  global $conf;
 
  $error = true;

  switch($code)
  {
    case 1:
      echo "<span class='error'>Erreur de connection à la  base de données<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1056</p></span>";
    break;

    case 2:
      echo "<span class='error'>Erreur interne, le serveur ne peut exécuter votre demande<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1048</p></span>";
    break;

    case 3:
      echo "<span class='error'>Erreur de connection à la base de données<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1040</p></span>";
    break;

    case 4:
      echo "<span class='error'>Vous avez échoué à la vérification anti-spam</span><br />";
    break;

    case 5:
      echo "<span class='error'>La case Login est vide</span><br />";
    break;

    case 6:
      echo "<span class='error'>Vous devez lire et accepter les règles de Talyon Renaissance avant de créer un compte!</span><br />";
    break;

    case 7:
      echo "<span class='error'>Le compte ".$_POST['login']." n'existe pas</span><br />";
    break;

    case 8:
      echo "<span class='error'>Veuillez fournir le mot de passe pour le compte ".$_POST['login']."</span><br />";
    break;

    case 9:
      echo "<span class='error'>Vous devez confirmer votre mot de passe</span><br />";
    break;

    case 10:
      echo "<span class='error'>Les mots de passe fournis ne correspondent pas!</span><br />";
    break;

    case 11:
      echo "<span class='error'>Le mot doit être différent du login!</span><br />";
    break;

    case 12:
      echo "<span class='error'>Veuillez indiquer un email</span><br />";
    break;

    case 13:
      echo "<span class='error'>Vous devez confirmer votre email</span><br />";
    break;

    case 14:
      echo "<span class='error'>L'adresse: ".$_POST['email']." semble ne pas être une adresse email correcte</span><br />";
    break;

    case 15:
      echo "<span class='error'>Les emails ne correspondent pas!</span><br />";
    break;

    case 16:
      echo "<span class='error'>Cet email est déjà utilisé pour un autre compte</span><br />";
    break;

    case 17:
      echo "<span class='error'>Nom de compte trop petit, le minimum est de ".$conf['minlog']." caractères</span><br />";
    break;

    case 18:
      echo "<span class='error'>Nom de compte trop grand, le maximum est de ".$conf['maxlog']." caractères</span><br />";
    break;

    case 19:
      echo "<span class='error'>Le mot de passe est trop petit,le minimum est de ".$conf['minpass']." caractères</span><br />";
    break;

    case 20:
      echo "<span class='error'>Le mot de passe est trop grand, le maximum est de ".$conf['maxpass']." caractères</span><br />";
    break;

    case 21:
      echo "<span class='error'>Le nom de compte ".$_POST['login']." existe déjà, veuillez en choisir un autre</span><br />";
    break;

    case 22:
      echo "<span class='error'>Erreur interne l'email n'a pas pu être envoyé<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1072</p></span>";
    break;

    case 23:
      echo "<span class='error'>Votre compte n'a pas pu être validé<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1064</p></span>";
    break;

    case 24:
      echo "<span class='error'>Il n'y a pas d'activation en attente pour le compte ".$_GET['account']."</span><br />";
    break;

    case 25:
      echo "<span class='error'>La clé d'activation est incorrecte</span><br />";
    break;

    case 26:
      echo "<span class='error'>Ce compte est en attente de validation<br />Veuillez cliquer sur le lien fourni dans le mail reçu lors de l'inscription</span><br />";
    break;

    case 27:
      echo "<span class='error'>Vous ne pouvez pas récupérer les informations d'un compte GM</span><br />";
    break;

    case 28:
      echo "<span class='error'>Le mail ".$_POST['email']." ne correspond pas au compte ".$_POST['login']."</span><br />";
    break;

    case 29:
      echo "<span class='error'>Il est impossible de vous envoyer votre mot de passe, veuillez contacter un administrateur<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1024</p></span>";
    break;

    case 30:
      echo "<span class='error'>Il est impossible de vérifier votre clé de validation car elle est vide</span><br />";
    break;

    case 31:
      echo "<span class='error'>Impossible de vérifier la clé de validation, aucun compte n'a été fourni</span><br />";
    break;

    case 32:
      echo "<span class='error'>Erreur interne <p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1032</p>Veuillez avertir la personne de référence: Lereyn via le forum</span><br />";
    break;

    case 33:
      echo "<span class='error'>Erreur de conenction à la base de données!<p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1024</p>Veuillez prévenir le personne de référence: Lereyn via le forum.</span><br />";
    break;

    case 34:
      echo "<span class='error'>Erreur de connection à la base de données <p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1016</p><br />Veuillez avertir la personne de référence: Lereyn via le forum</span><br />";
    break;
   
    case 35:
      echo "<span class='error'>Il est impossible de vous envoyer votre mot de passe, veuillez contacter un administrateur <p style='font-weight: bold; text-decoration: underline;'>Erreur numéro 1072</p></span>";
    break;
   
    case 37:
      echo "<span class='error'>Vous ne pouvez pas récupérer les informations du compte ".$_GET['account']."</span><br />";
    break;
   
    case 38:
      echo "<span class='error'>Le compte ".$_GET['account']." à déjà été activé, il n'y a plus besoin de cliquer sur le lien reçu lors de l'inscription</span><br />";
    break;

  }

  return $error;

}

function formulaire($name)
{

  switch($name)
  {
    case "recover":
      echo "<form action='' method='post'><p>";
      echo "<table class='login'><tr><td><label for='login'>Compte</label></td><td><input type='text' name='login' id='login' value='' /></td>
            </tr><tr><td><label for='email'>Email</label></td><td><input type='text' name='email' id='email' value='' /></td>
            </tr><tr><td><label for='email2'>Confirmation</label></td><td><input type='text' name='email2' id='email2' value='' /></td>
            </tr><tr><td><label for='spam'>".PtitCaptchaHelper::generateImgTags("../")."".PtitCaptchaHelper::generateHiddenTags()."</label></td><td>"
            .PtitCaptchaHelper::generateInputTags()."</td>
            </tr><tr><td> </td></tr></table><br /><input type='submit' name='recover' value='Envoyer' /></p></form><p> </p>";
    break;

    case "register":
    echo "<p> </p>
          1) Si ce n'est déjà fait, veuillez télécharger le client LineageII <a href='http://www.talyon.org/telechargements/'>ICI</a><p> </p><br /><br />
          2) Veuillez modifier votre host (C:WindowsSystem32driversetc) comme ceci:<br /><br />
          <br /><p>127.0.0.1       localhost</p>
          #Serveur Talyon<br />
          91.121.145.87 L2authd.lineage2.com<br />
          91.121.145.87 L2testauthd.lineage2.com<br />
          #Talyon GameGuard<br />
          91.121.145.87 nprotect.lineage2.com<br />
          91.121.145.87 update.nProtect.com<br />
          91.121.145.87 update.nProtect.net<br />
          <p> </p><br />
          3) Veuillez indiquer votre futur nom de compte et mot de passe
          <br /><form action='' method='post'><p>
          <table class='login'><tr><td><label for='login'>Compte</label></td><td><input type='text' name='login' id='login' value='' /></td>
          </tr><tr><td><label for='pass1'>Mot de passe</label></td><td><input type='password' name='pass1' id='pass1' value='' /></td>
          </tr><tr><td><label for='pass2'>Confirmation  </label></td><td><input type='password' name='pass2' id='pass2' value='' /></td>
          </tr><tr><td><label for='email1'>Email</label></td><td><input type='text' name='email1' id='email1' value='' /></td>
          </tr><tr><td><label for='email2'>Confirmation</label></td><td><input type='text' name='email2' id='email2' value='' /></td>
          </tr><tr><td><label for='rules'>J'ai lu et j'accèpte <a href='http://www.talyon.org/regles-du-serveur/' onclick='window.open(this.href); return false;' >les règles de Talyon renaissance</a></label></td><td><input type='radio' name='rules' value='true'></td>
          </tr><tr><td><label for='spam'>".PtitCaptchaHelper::generateImgTags("../")."".PtitCaptchaHelper::generateHiddenTags()."</label></td><td>".PtitCaptchaHelper::generateInputTags()."</td>
          </tr><tr><td> </td>
          </tr></table><br /><input type='submit' name='submit' value='Envoyer' /></p></form><p> </p>";
    break;

    case "change":
    echo "<form action='' method='post'><p>";
    echo "<table class='login'><tr><td><label for='login'>Compte</label></td><td><input type='text' name='login' id='login' value='' /></td>
          </tr><tr><td><label for='email'>Email</label></td><td><input type='text' name='email' id='email' value='' /></td>
          </tr><tr><td><label for='mdp'>Mot de passe</label></td><td><input type='password' name='mdp' id='mdp' value='' /></td>
          </tr><tr><td><label for='mdp2'>Confirmation</label></td><td><input type='password' name='mdp2' id='mdp2' value='' /></td>
          </tr><tr><td><label for='newmdp'>Nouveau Mot de passe</label></td><td><input type='text' name='newmdp' id='newmdp' value='' /></td>
          </tr><tr><td><label for='spam'>".PtitCaptchaHelper::generateImgTags("../")."".PtitCaptchaHelper::generateHiddenTags()."</label></td><td>"
          .PtitCaptchaHelper::generateInputTags()."</td>
          </tr><tr><td> </td></tr></table><br /><input type='submit' name='recover' value='Envoyer' /></p></form><p> </p>";
    break;

  }

}

function getIp($ip)
{

  if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else
  {
    $ip = $_SERVER['REMOTE_ADDR'];
  }           

  return $ip;

}

function encode_password($password)
{
  return base64_encode(pack('H*', sha1(utf8_encode($password))));
}

function admin_to_warn($mailno)
{

  global $conf;

  switch ($mailno)
  {
    case 1:
      $email = $conf['mail_eru'];
    break;

    case 2:
      $email = $conf['mail_eddy'];
    break;

  }

  return $email;

}

function email_admin($case,$pass,$newpass)
{

  global $conf;

  switch($case)
  {
    case "create":
      for ($mailno = 1; $mailno <= $num; $mailno++)
      {
        $mailsubject = "Création de compte sur ".$conf['sitename'];
        $warnoncreation = "new-accounts@talyon.org";
        $mailbody = "Bonjour,rnVous avez demandé à être avertit en cas de création de compte de jeu sur le serveur Lineage II ".$sitename."rn
                    Le compte a été créé à ".$conf['hour']."
                    Login: ".$_GET['login']."rn
                    Le mot de passe est: ".trim($pass)."rn
                    L'ip utilisée est: ".$ip."rn
                    Bien à vous";
        $mailheaders = "From: ".$conf['account_created']."n";
        $mailheaders .=   "Content-Type: text/plain; charset=UTF-8"."n";
        $mailto = admin_to_warn($conf['mailno']);

      }
    break;

    case "change":
      for ($mailno = 1; $mailno <= $num; $mailno++)
      {
        $mailsubject = "Création de compte sur ".$conf['sitename'];
        $warnoncreation = "new-accounts@talyon.org";
        $mailbody = "Bonjour,rnVous avez demandé à être avertit en cas de modification d'un compte de jeu sur le serveur Lineage II ".$sitename."rn
                    Le compte a été modifié à ".$conf['hour']."
                    Login: ".$_GET['login']."rn
                    Le mot de passe était: ".trim($pass)."rn
                    Le nouveau mot de passe est: ".trim($newpass)."
                    L'ip utilisée est: ".$conf['ip']."rn
                    Bien à vous";
        $mailheaders = "From: ".$conf['account_created']."n";
        $mailheaders .=   "Content-Type: text/plain; charset=UTF-8"."n";
        $mailto = admin_to_warn($conf['mailno']);

      }

    break;

    @mail($mailto,$mailsubject,$mailbody,$mailheaders);

  }

}

function generate_key($login,$pass,$email)
{
  global $conf;
 
  return md5($login.$pass.$email.$conf['securitykey']);
}

function define_gm($numgm)
{

  switch ($numgm)
  {

    case 1:
      $gm_account = "erudecionf";
    break;

    case 2:
      $gm_account = "virus";
    break;

    case 3:
      $gm_account = "riku";
    break;

    case 4:
      $gm_account = "saulot";
    break;

    case 5:
      $gm_account = "leafah";
    break;

    case 6:
      $gm_account = "lars";
    break;

  }

  return $gm_account;

}

function check_gm($numgm)
{

  if ($_POST['login'])
  {
    $login = strtolower($_POST['login']);
  }
  else
  {
    $login = strtolower($_GET['account']);
  }

  for ($no=1; $no <= $numgm; $no++)
  {

    $gm_account = define_gm($no);

    if ($login == $gm_account)
    {
      $error = true;
      return $error;
    }

  }

}

function unset_all()
{
  unset($_POST);
  unset($_SESSION);
}

function captcha_generator()
{
  if (file_exists("./image.php"))
  {
    require("./image.php");
  }
  else
  {
    $error = error(2);
  }

  return $error;

}

function verify_form($form)
{

  global $conf;
 
  switch($form)
  {
    case "recover":
      if (PtitCaptchaHelper::checkCaptcha())
      {
        if (empty($_POST['login']))
        {
          $error = error(5);
        }
        else
        {
          if (empty($_POST['email']))
          {
            $error = error(12);
          }
          else
          {
            if (empty($_POST['email2']))
            {
              $error = error(13);
            }
            else
            {
              if ($_POST['email'] != $_POST['email2'])
              {
                $error = error(15);
              }
              else
              {
                if (!preg_match($conf['validate'],$_POST['email']))
                {
                  $error = error(14);
                }

              }

            }

          }

        }

      }
      else
      {
        $error = error(4);
      }
    break;

    case "register":
   
    break;

    case "change":
   
    break;

  }

    return $error;

}

function verify_data($form)
{

  global $conf;
 
  if (@mysql_connect($conf['dbhost'],$conf['dbuser'],$conf['dbuserpass']))
  {
    @mysql_select_db($conf['dblogin']);
    $account = @mysql_query("SELECT `login`,`password`,`email`,`activated` FROM `".$conf['temp_account']."` WHERE `login` = '".$_POST['login']."'");
    $account = @mysql_fetch_array($account);

    switch($form)
    {
      case "recover":
        if (empty($account['login']))
        {
          $error = error(7);
        }
        else
        {
          if (check_gm($conf['numgm'],$account['login']))
          {
            $error = error(27);
          }
          else
          {
            if ($account['activated'] == 0)
            {
              $error = error(26);
            }
            else
            {
              if ($account['email'] != $_POST['email'])
              {
                $error = error(28);
              }
              else
              {
                if ($account['email'] == "rien@rien.rien")
                {
                  $error = error(29);
                }
                else
                {
                  if ($account['password'] == "pas de pw")
                  {
                    $error = error(35);
                  }

                }

              }

            }         

          }

        }

    break;

    case "register":

    break;

    case "change":

    break;

    }

  }
  else
  {
    $error = error(1);
  }

  return $error;

}

function mail_user($form)
{

  global $conf;
 
  if (@mysql_connect($conf['dbhost'],$conf['dbuser'],$conf['dbuserpass']))
  {

    @mysql_select_db($conf['dblogin']);

    if ($_POST)
    {
      $account = @mysql_query("SELECT `login`,`password`,`email` FROM `".$conf['temp_account']."` WHERE `login` = '".$_POST['login']."'");
    }
    else
    {
      $account = @mysql_query("SELECT `login`,`password`,`email` FROM `".$conf['temp_account']."` WHERE `login` = '".$_GET['account']."'");
    }

    $account = @mysql_fetch_array($account);

    $key = generate_key($account['login'],$account['password'],$account['email'],$conf['securitykey']);

    switch($form)
    {
      case "recover":
        $mailto = $account['email'];
        $mailsubject = "Confirmation de récuperation des accès";
        $mailbody    = "Bonjour,

                        Vous, ou une autre personne se faisant passez pour vous, avez demandé la récuperation de vos accès sur le serveur Lineage II Talyon

                        Veuillez cliquer sur le lien ci-dessous afin de confirmer la demande:

                        http://www.talyon.org/recuperer-mot-de-passe/?code=".$key."&account=".$login."

                        Vous recevrez ensuite vos accès à votre compte sur le serveur Lineage II Talyon.nn

                        NB: Vous ne recevrez pas vos accès si vous ne cliquez pas sur le liennn

                        Si vous n'avez pas demandé la récupération de votre mot de passe ignorez ce message.";

        $mailheaders = $conf['verify_account'];
        $mailheaders .=    "Content-Type: text/plain; charset=UTF8n";

        $mailsent = "<span class='online'>Un email de confirmation viens d'être envoyé à l'adrsesse ".$account['email']."";

      break;
     
      case "register":
     
      break;
     
      case "change":
     
      break;

    }

    // Erreur: Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient: lereyn@live.be in /www/include/functions.php on line 622
    $mail = mail($account['email'], $mailsubject, $mailbody, $mailheaders);

    if ($mail)
    {
      echo $mailsent;
    }
    else
    {
      $error = error(22);
    }

  }
  else
  {
    $error = error(1);
  }

  return $error;

}

function check_received_mail($form)
{

  if (empty($_GET['code']))
  {
    $error = error(30);
  }
  else
  {
    if (empty($_GET['account']))
    {
      $error = error(31);
    }
    else
    {

      global $conf;

      if (@mysql_connect($conf['dbhost'],$conf['dbuser'],$conf['dbuserpass']))
      {
        @mysql_select_db($conf['dblogin']);

        $account = @mysql_query("SELECT `login`,`password`,`email`,`activated` FROM `".$conf['temp_account']."` WHERE `login` = '".$_GET['account']."'");
        $account = @mysql_fetch_array($account);

        $key = generate_key($_GET['account'],$account['password'],$account['email'],$conf['securitykey']);
       
        if ($key != $_GET['code'])
        {
          $error = error(25);
        }
        else
        {
          if (check_gm($conf['numgm'],$_GET['account']))
          {
            $error = error(37);
          }
          else
          {
            if (empty($account['login']))
            {
              $error = error(24);
            }
            else
            {
              switch ($form)
              {
                case "recover":
                  if ($account['activated'] == 0)
                  {
                    $error = error(26);
                  }
                break;
               
                case "register":
                  if ($account['activated'] == 1)
                  {
                    $error = error(38);
                  }

              }

            }

          }

        }

      }
      else
      {
        $error = error(1);
      }

    }

  }

  return $error;

}

?>

Ensuit, le fichier conf.php
Code :
<?php

$conf = array(
'charset' => header("Content-type: text/html; Charset=ISO-8859-1"),
'dbhost' => 'localhost',
'dbuser' => '...',
'dbuserpass' => '...',
'dblogin' => '...',
'temp_account' => '...',
'accounts' => '...',
'minlog' => 4,
'maxlog' => 12,
'minpass' => 4,
'maxpass' => 12,
'accesslevel' => 0,
'activated' => 1,
'notactivated' => 0,
'mailno' => 2,
'numgm' => 6,
'sitename' => 'Site Name',
'mail_eru' => 'xxx@xxx.com',
'mail_eddy' => 'xxx@xxx.com',
'validate' => '!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}.[a-zA-Z]{2,4}$!',
'verify_account' => 'From: verify-accounts@xxx.xxxn',
'account_created' => 'From: new-accounts@xxx.xxxn',
'account_info' => 'From: accounts@xxx.xxxn',
'lastactive' => time()*1000,
'securitykey' => '[:-83}wALp)9z(v;:$8y)nR.T[=@OY8h',
'ip' => getIp($_SERVER['REMOTE_ADDR']),
'hour' => date('H:i:s'),
'goback' => '<p> </p><a href="./">Retour</a>'
);

?>

et pour terminer le fichier image.php (captcha qui n'est pas de moi)
Code :
<?php

/**
 * Ptitcaptcha : simple php captcha system
 *
 * @author Jean-Pierre Morfin
 * @license Creative Commons By
 * @license http://creativecommons.org/licenses/by/2.0/fr/
 */

define("PTITCAPTCHA_ENTROPY","J&#+~;z`eh=4BZ1t.rKy|^be.Qp;A=9kesyf6c^g$<X!)5=g&2");
 
define("PTITCAPTCHA_LENGTH",6);
 
$GLOBALS["ptitcaptcha_akey"] = md5(uniqid(rand(), true));
 
class PtitCaptchaHelper
{

   function generateImgTags($baseuri)
   {
      return "<img border="0" alt="captcha" title="Captcha"".
         " src="".$baseuri."image.php?pck=".$GLOBALS['ptitcaptcha_akey'].""".
         " id="ptitcaptcha"".
         " onclick="javascript:this.src='".$baseuri."image.php?pck=".
         $GLOBALS['ptitcaptcha_akey'].
         "&z='+Math.random();return false;" />n";
   }
   

   function generateHiddenTags()
   {
      return "<input type="hidden" name="ptitcaptcha_key" value="".$GLOBALS['ptitcaptcha_akey'].""/>";
   }
   

   function generateInputTags()
   {
      return "<input type="text" name="ptitcaptcha_entry" value=""/>";
   }
 
   function checkCaptcha()
   {
      if(   isset($_POST['ptitcaptcha_entry']) &&
         $_POST['ptitcaptcha_entry'] == PtitCaptchaHelper::_getDisplayText($_POST['ptitcaptcha_key']))
      {
         return true;
      }
      return false;
   }
   
   function _getDisplayText($pck)
   {
      $src=md5(PTITCAPTCHA_ENTROPY.$pck);
      $txt="";
      for($i=0;$i<PTITCAPTCHA_LENGTH;$i++)
         $txt.=substr($src,$i*32/PTITCAPTCHA_LENGTH,1);
      return $txt;
   }
}   
 
 
if(basename($_SERVER["SCRIPT_NAME"])=="image.php" && isset($_GET["pck"]))
{
   $width = PTITCAPTCHA_LENGTH*10+10;
   $height = 30;
 
   $image = imagecreatetruecolor($width, $height);
   $bgCol = imagecolorallocate($image, rand(128,255), rand(128,255), rand(128,255));
   imagefilledrectangle($image,0,0,$width,$height,$bgCol);
      
   $txt = PtitCaptchaHelper::_getDisplayText($_GET["pck"]);
         
   for($c=0;$c<PTITCAPTCHA_LENGTH*2;$c++)
   {
      $bgCol = imagecolorallocate($image, rand(100,255), rand(100,255), rand(100,255));
      $x=rand(0,$width);
      $y=rand(0,$height);
      $w=rand(5,$width/2);
      $h=rand(5,$height/2);
      imagefilledrectangle($image,$x,$y,$x+$w,$y+$h,$bgCol);
      imagecolordeallocate($image,$bgCol);
   }
   for($c=0;$c<PTITCAPTCHA_LENGTH;$c++)
   {
      $txtCol = imagecolorallocate($image, rand(0,128) , rand(0,128), rand(0,128));
      imagestring($image,5,5+10*$c,rand(0,10),substr($txt,$c,1),$txtCol);
      imagecolordeallocate($image,$txtCol);
   }
 
   header("Content-type: image/png");
   imagepng($image);
   imagedestroy($image);
}

?>

L'erreur qui m'est retournée est la suivante:
Code :
 Erreur: Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient: un_email@domaine.com in /www/include/functions.php on line 622

Ce que le script est censé faire:
1) Il récupère un utilisateur de la base de données, celui fourni via le formulaire.

2) Il vérifie que cet utilisateur existe et que le mail fourni corresponde a celui fourni lors de l'inscription.

3) Il vérifie que quelqu'un n'essaye pas de récupérer les informations d'un compte administrateur

4) Envoi d'une clé de confirmation par mail

5) Quand l'utilisateur a cliqué sur le mail la clé et le login sont vérifié et si tout est OK il envoi par mail les informations du compte (login, pass)




J'ai cherché des heures durant l'erreur sans rien trouver.
Le script précédent ne fonctionne pas pour l'envoi de mail mais le suivant fonctionne
Code :
<?php

header("Content-type: text/html; Charset=ISO-8859-1");

echo "<p> </p>";

echo "<style>
      .error
      {
        color: red;
      }
      .online
      {
        color: green;
      }
      </style>";

$host = "localhost";
$user = "...";
$userpass = "...";
$base = "...";
$accounts = "...";
$temp_accounts = "...";

$goback = "<a href='./'>Retour au formulaire</a><br />";
$gosite = "<a href='../'>Direction le Site</a><br />";
$goforum = "<a href='forums'>Direction le Forum</a><br />";

$securitykey = "$(~X3Z6kflr<Ixr=}e4o1=N-,r;_7Fe8le#:";

$numgm = 6;

$connect = @mysql_connect($host, $user, $userpass);

function error($code)
{

  $error = True;

  switch($code)
  {

    case 1:
      echo "<span class='error'>Connection à la base de données impossible</span><br />
                <p>Nous vous prions de poster un message sur le forum dans la
                <a href='forums'>section Bugs</a></a>,
                en précisant le code d'erreur (1056),
                pour nous prévenir de ce problème, merci.</p><br />";
    break;

    case 2:
      echo "<span class='error'>Le serveur ne peut exécuter votre demande</span><br /><p>Veuillez, s'il vous plaît,
               prévenir les Administrateurs en créant un post dans la section
               <a href='forums'>Bugs</a>, en précisant le code d'erreur (1048),
               pour nous prévenir de ce problème, merci</p><br />";
    break;

    case 3:
      echo "<span class='error'>Veuillez fournir un Login</span><br />";
    break;

    case 4:
      echo "<span class='error'>La case 'email' est vide!</span><br />";
    break;

    case 5:
      echo "<span class='error'>Vous devez confirmer votre email</span><br />";
    break;

    case 6:
      echo "<span class='error'>Les mails fournis ne correspondent pas</span><br />";
    break;

    case 7:
      echo "<span class='error'>Le mail: ".$_POST['email']." semble ne pas être un email valide</span><br />";
    break;

    case 8:
      echo "<span class='error'>Le compte ".$_POST['login']." n'existe pas</span><br />";
    break;

    case 9:
      echo "<span class='error'>Vous ne pouvez pas récupérer les informations d'un compte GM!</span><br />";
    break;

    case 10:
      echo "<span class='error'>L'email '".$_POST['email']."' ne correspond pas au compte '".$_POST['login']."</span><br />";
    break;

    case 11:
      echo "<span class='error'>le compte '".$_POST['login']."' n'a pas encore été validé, veuillez cliquer sur le
                lien dans le mail reçu lors de l'inscription</span><br />";
    break;

    case 12:
      echo "<span class='error'>Il est impossible de vous envoyer votre mot de passe, vous ne pouvez que le modifier</span><br />";
    break;

    case 13:
      echo "<span class='error'>le mail n a pas pu etre envoye</span><br />";
    break;

    case 14:
      echo "<span class='error'>Impossible de verifier votre clé car elle est vide!</span><br />";
    break;

    case 15:
      echo "<span class='error'>Impossible de vérifier la clé, aucun compte n'a été fourni</span><br />";
    break;

    case 16:
      echo "<span class='error'>La clé de confirmation est incorrecte</span><br />";
    break;

    case 17:
      echo "<span class='error'>Vous avez échoué à la vérification anti-spam</span><br />";
    break;
   
    case 18:
      echo "<span class='error'>Le compte ".$_GET['account']." n'existe pas</span><br />";
    break;

  }

  return $error;

}

function define_gm($numgm)
{

  switch ($numgm)
  {

    case 1:
      $gm_account = "erudecionf";
    break;

    case 2:
      $gm_account = "virus";
    break;

    case 3:
      $gm_account = "riku";
    break;

    case 4:
      $gm_account = "saulot";
    break;

    case 5:
      $gm_account = "leafah";
    break;

    case 6:
      $gm_account = "lars";
    break;

  }

  return $gm_account;

}

function check_gm($numgm,$login)
{

  $login = strtolower($login);

  for ($no=1; $no <= $numgm; $no++)
  {

    $gm_account = define_gm($no);

    if ($login == $gm_account)
    {
      $error = True;
      return $error;
    }

  }

}

function unset_all()
{
  unset($_POST);
  unset($_SESSION);
}

if (file_exists("image.php"))
{
  require("image.php");
}
else
{
  $error = error(2);
}

if (!$error)
{

  if ($connect)
  {

    if (!isset($_POST['recover']) and !isset($_GET['code']) and !isset($_GET['account']))
    {

      echo "<form action='' method='post'><p>";
      echo "<table class='login'><tr><td><label for='login'>Compte</label></td><td><input type='text' name='login' id='login' value='' /></td>
            </tr><tr><td><label for='email'>Email</label></td><td><input type='text' name='email' id='email' value='' /></td>
            </tr><tr><td><label for='email2'>Confirmation</label></td><td><input type='text' name='email2' id='email2' value='' /></td>
            </tr><tr><td><label for='spam'>".PtitCaptchaHelper::generateImgTags("./")."".PtitCaptchaHelper::generateHiddenTags()."</label></td><td>"
            .PtitCaptchaHelper::generateInputTags()."</td>
            </tr><tr><td> </td></tr></table><br /><input type='submit' name='recover' value='Envoyer' /></p></form><p> </p>";
    }
    else
    {

      if (!isset($_GET['code']) and !isset($_GET['account']))
      {

        if (PtitCaptchaHelper::checkCaptcha())
        {

          $login = trim($_POST['login']);
          $email1 = trim($_POST['email']);
          $email2 = trim($_POST['email2']);
          $validate = "!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}.[a-zA-Z]{2,4}$!";
       
          if (empty($login))
          {
            $error = error(3);
          }
          else
          {

            if (empty($email1))
            {
              $error = error(4);
            }
            else
            {

              if (empty($email2))
              {
                $error = error(5);
              }
              else
              {

                if ($email1 != $email2)
                {
                  $error = error(6);
                }
                else
                {

                  if (!preg_match($validate,$email1))
                  {
                    $error = error(7);
                  }

                }

              }

            }

          }

          if (!$error)
          {

            if ($connect)
            {

              @mysql_select_db($base);
              $account = mysql_query("SELECT `login`,`password`,`email`,`activated` FROM `".$temp_accounts."` WHERE `login` = '".$login."'");
              $account = mysql_fetch_array($account);
           
              if (empty($account['login']))
              {
                $error = error(8);
              }
              else
              {

                if (check_gm($numgm,$account['login']))
                {
                  $error = error(9);
                }
                else
                {

                  if ($account['activated'] == 0)
                  {
                    $error = error(11);
                  }
                  else
                  {

                    if ($account['email'] != $email1)
                    {
                      $error = error(10);
                    }
                    else
                    {

                      if ($account['email'] == xxx)
                      {
                        $error = error(12);
                      }
                      else
                      {

                        if ($account['password'] == "xxx")
                        {
                          $error = error(12);
                        }

                      }

                    }

                  }

                }

              }

              if (!$error)
              {

                 unset_all();

                 $key = md5($account['login'].$account['password'].$account['email'].$securitykey);

                 $mailto      = $account['email'];
                 $mailsubject = "Confirmation de récuperation des accès";
                 $mailbody    = "
                 Bonjour,

                 Vous, ou une autre personne se faisant passez pour vous, avez demandé la récuperation de vos accès sur le serveur Lineage II Talyon

                 Veuillez cliquer sur le lien ci-dessous afin de confirmer la demande:

                 http://localhost/recuperer-mot-de-passe/?code=".$key."&account=".$account['login']."

                 Vous recevrez ensuite vos accès à votre compte sur le serveur Lineage II Talyon.nn

                 NB: Vous ne recevrez pas vos accès si vous ne cliquez pas sur le liennn

                 Si vous n'avez pas demandé la récupération de votre mot de passe ignorez ce message.";

                 $mailheaders = "From: verify-accounts@xxx.xxxn";
                 $mailheaders .=    "Content-Type: text/plain; charset=UTF8n";

                 $mail = mail($mailto, $mailsubject, $mailbody, $mailheaders);

                 if (!$mail)
                 {
                  $error = error(13);
                 }
                 else
                 {
                  echo "<span class='online'>Un email vient d'être envoyé à l'adresse ".$email1."<br />Veuillez cliquer sur le lien fourni afin de confirmer votre demande</span><br />";
                 }

              }

            }
            else
            {
              $error = error(1);
            }

          }

        }
        else
        {
          $error = error(17);
        }
     
      }
      else
      {

        if (empty($_GET['code']))
        {
          $error = error(14);
        }
        else
        {

          if (empty($_GET['account']))
          {
            $error = error(15);
          }
          else
          {

            if (check_gm($numgm,$_GET['account']))
            {
              $error = error(9);
            }
            else
            {

              if ($connect)
              {

                @mysql_select_db($base);

                $account = mysql_query("SELECT `login`,`password`,`email`,`activated` FROM `".$temp_accounts."` WHERE `login` = '".$_GET['account']."'");
                $account = mysql_fetch_array($account);

                if (empty($account['login']))
                {
                  $error = error(18);
                }
                else
                {

                  if ($account['activated'] == 0)
                  {
                    $error = error(11);
                  }
                  else
                  {

                    $key = md5($account['login'].$account['password'].$account['email'].$securitykey);

                    if ($_GET['code'] != $key)
                    {
                      $error = error(16);
                    }
                    else
                    {

                      $mailto      = $account['email'];
                      $mailsubject = "Accès au compte ".$account['login']."";
                      $mailbody    = "
                      Bonjour,

                      Vous venez de confirmer via le précédent email, que vous étiez la personne qui detient le compte ".$infos['login'].".

                      Si ce n est pas le cas, veuillez en avertir le staff technique afin de bloquer temporairement votre compte.

                      Veuillez trouver ci-dessous les accès a votre compte:

                      Login: ".$account['login']."
                      Mot de Passe: ".$account['password']."nnBon jeu a vous sur Talyon :)";

                      $mailheaders = "From: accounts@xxx.xxxn";
                      $mailheaders .=    "Content-Type: text/plain; charset=UTF8n";

                      $mail = mail($mailto, $mailsubject, $mailbody, $mailheaders);

                      if (!$mail)
                      {
                        $error = error(13);
                      }
                      else
                      {
                        echo "<span class='online'>Un email contenant les accès au compte '".$account['login']."' vient de vous etre envoyé à l'adresse: '".$account['email']."'</span><br /><p> </p>";
                      }

                    }

                  }

                }

              }
              else
              {
                $error = error(1);
              }

            }

          }

        }

      }

    }

  }
  else
  {
    $error = error(1);
  }

}

if ($error)
{
  unset_all();
  echo "<br />".$goback;
}

mysql_close($connect);

echo "<p> </p>";

?>

Ce qui me laisse penser que ce n'est pas mon serveur smtp qui ne fonctionne pas ou le fait que mon IP soit blacklistée (IP statique) mais bien la fonction en elle même.

Pouvez-vous m'aider à résoudre ce problème ?
Merci à vous :)


Dernière édition par Lereyn le 03 Sep 2008, 19:56, édité 1 fois.

Haut
 Profil  
 

Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 1 message ] 

Le fuseau horaire est UTC+2 heures


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Bing [Bot] et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de :
Aller vers :  
cron
Thème par Easy-Hébergement
Powered by phpBB © 2000, 2002, 2005, 2007, 2011 phpBB Group
Traduit en français par Maël Soucaze.