Aller au contenu
Dax

Code php pour renvoyer un lien de confirmation

Noter ce sujet :

Recommended Posts

Bonjour à tous,

Lorsqu'un membre s'inscrit sur mon site, un mail contenant un lien pour confirmer son adresse email lui est envoyé, seulement il arrive parfois que ce mail ne soit pas envoyé pour des raisons que j'ignore.

Ce que j'aimerai proposer c'est un code qui permette de récupérer le code de vérification présent dans la base de données et de l'envoyer de nouveau au membre qui en fait la demande.

Je ne suis pas expert donc j'ai essayé de m'inspirer de ce code qui permet d'envoyer un nouveau mot de passe lorsqu'un membre a oublié le sien, mais aussi de se connecter à son espace membre.

CODE
<?

$msg = "";

if (isset($_GET["logout"]))

{

session_start();

$_SESSION = array();

session_destroy();

}

else

session_start();

include_once("admin/inc.php");

$pagename = $sitename . " - " . LA_LOGIN;

include_once("header_inc.php");

writeLinkedTitle("");

if ($auto)

include "update.php";

if (!empty($_SESSION["valid_user"]))

{

echo "<blockquote><p><b>" . LA_ALREADY_LOGGED . "</b><br>";

echo LA_ALREADY_LOGGED_DESC . "</p></blockquote>";

include("footer_inc.php");

exit;

}

if (empty($set_outer_color)) {

$set_outer_color = "#A9B8D1";

}

if (empty($set_inner_color)) {

$set_inner_color = "#FFFFFF";

}

if (empty($set_descr_color)) {

$set_descr_color = "#FFFFFF";

}

if (isset($_POST["submit"]) AND !isset($_REQUEST["forgot"]))

{

$username="";

$password="";

if (isset($_POST["username"]))

$username = htmlspecialchars($_POST["username"]);

if (isset($_POST["password"]))

$password = htmlspecialchars($_POST["password"]);

$username=trim(getParam("username",""));

$password=trim(getParam("password",""));

$sql = "select user_status,user_verify_code,user_approved,user_id,user_name,user_email from $usr_tbl where user_email = '$username' AND user_pass_md5 = md5('$password')";

$result = q($sql);

$num_check = mysql_num_rows($result);

if ($num_check==1)

{

$row_line = mysql_fetch_array($result);

$status = $row_line["user_status"];

$verify_code = $row_line["user_verify_code"];

$approve = $row_line["user_approved"];

$user_id = $row_line["user_id"];

$user_email = $row_line["user_email"];

$name = $row_line["user_name"];

if ($status == 1)

$msg = LA_BLOCKED_LOGIN;

elseif ($verify_code AND $opt_verify)

$msg = LA_NEED_TO;

elseif ($approve_mem AND !$approve)

$msg = LA_WAIT_APP;

else

{

$_SESSION["valid_user"] = $user_id;

$_SESSION["user_name"] = $name;

$_SESSION["user_email"] = $user_email;

addLoginItem($user_id);

addToHistory(1,$user_id,"","");

// Redirect user to correct page

if (!empty($_REQUEST["redirect_to"]))

redirect($_REQUEST["redirect_to"]);

else

redirect("member.php");

}

}

else

{

// Failed login

//$msg = writeHeadLine(LA_WARNING,"red");

$msg = $msg . LA_NOT_AUTHORIZED;

addToHistory(13,"","","$username");

}

}

elseif (isset($_REQUEST["forgot"]) AND isset($_POST["email"]))

{

$email = $_POST["email"];

$new_password = generatePassword(5);

if (($email))

{

$result = q ("select user_email from $usr_tbl where user_email = '$email'");

$count_results = mysql_num_rows($result);

if ($count_results>0)

{

$sql="update $usr_tbl set user_pass_md5 = md5('$new_password') where user_email = '$email'";

$res = q ($sql);

$msg = writeHeadLine(LA_SUCCESS,"black");

$msg = $msg . formatString(LA_FORGOT_SENT_MSG,array("<b>$email</b>"));

addToHistory(14,"","","$username");

sendEmail($email,$from_adress_mail,LA_FORGOT_MAIL_SUBJECT,formatString(LA_FORGOT_SEND_MAIL_BO

DY, array("$new_password",&quot;http://$url/member_login.php","$name_of_site")));

}

else

{

$msg = writeHeadLine(LA_WARNING,"red");

$msg = $msg . formatString(LA_FORGOT_NOTF,array("<b>$email</b>"));

}

}

else

{

$msg = writeHeadLine(LA_WARNING,"red");

$msg = $msg . LA_ERROR_MSG21;

}

}

if (isset($_REQUEST["logout"])) {

$msg = $la_session_remove;

}

check_valid_user("$msg");

require("footer_inc.php");

?>

Voici le code que j'ai inventé (je pense que j'aurai plus de chance de gagner au loto que trouver un code qui marche mais bon...) et forcément il ne marche pas, auriez vous une direction à me donner SVP parceque là je désespère.

Je voudrai récupérer le "user_verify_code".

CODE
<?

$msg = "";

include_once("admin/inc.php");

$pagename = $sitename . " - " . LA_LOGIN;

include_once("header_inc.php");

if (isset($_REQUEST["forgot"]) AND isset($_POST["user_name"]))

{

$user_name = $_POST["user_name"];

$user_verify_code = $row["user_verify_code"];

if (($user_name))

{

$mysql_user = "select user_name, user_verify_code from $usr_tbl";

$result = q ($mysql_user);

$num_check = mysql_num_rows($result);

if ($num_check==1)

{

$sql="select user_verify_code from $usr_tbl";

$res = q ($sql);

$msg = writeHeadLine(LA_SUCCESS,"black");

$msg = $msg . formatString(LA_VERIFYCODE_SENT_MSG,array("<b>$user_name</b>"));

sendEmail($email,$from_adress_mail,LA_VERIFYCODE_SUBJECT,formatString(LA_VERIFYCODE_SEND_MAIL

_BODY, array(&quot;http://$url/verify.php?=","$user_verify_code")));

}

else

{

$msg = writeHeadLine(LA_WARNING,"red");

$msg = $msg . formatString(LA_VERIFYCODE_NOTF,array("<b>$user_name</b>"));

}

}

else

{

$msg = writeHeadLine(LA_WARNING,"red");

$msg = $msg . LA_ERROR_MSG_VERIFYCODE;

}

}

if (isset($_REQUEST["logout"])) {

$msg = $la_session_remove;

}

check_valid_user("$msg");

require("footer_inc.php");

?>

Si çà peut vous guider voici aussi le code qui permet l'inscription

CODE
<?

session_start();

include("admin/inc.php");

$lBanList = split(",", $set_banlist_users);

$catname = " :: $register";

include("header_inc.php");

$FName = getParam("friendname","");

$FEmail = trim(getParam("friendemail",""));

$lEmail = trim(getParam("email",""));

$lName = getParam("name","");

$lPassOne=getParam("passwd","");

$lPassTwo=getParam("passwd2","");

$lEmelding=getParam("emelding","");

$lValidateSign=getParam("validate_sign","");

$lHideEmail=getParam("hide_email","");

$lAgreeCond=getParam("agree_cond","");

$tplRegister=new TplLoad;

writeLinkedTitle("");

if (isset($_SESSION["valid_user"]))

{

echo "<blockquote><p class='box'>".LA_ALREADY_LOGGED_DESC."</p></blockquote>";

include("footer_inc.php");

exit;

}

$lExtraFieldArray=getMandatoryValues("",2);

$i=0;

if (is_array($lExtraFieldArray))

{

foreach ($lExtraFieldArray as $item)

{

$value="e_" . $item["q_field"];

$lArray[$i]["id"]=$i;

$lArray[$i]["field"]=$value;

$lStr=$_REQUEST[$value];

$lValueStr="";

if ($lStr)

{

if (is_array($lStr))

{

foreach ($lStr as $lItem)

$lValueStr.="$lItem,";

$lValueStr=substr($lValueStr,0,-1);

}

else

$lValueStr=$lStr;

}

elseif (getParam("submit","")=="")

{

$lValueStr=$row[$value];

}

if (getParam("submit","") !="")

{

if ($item["q_mand"] && empty($lValueStr))

$error_str.= "<li class='warn_intend'>".LA_YOU_MUST ." <b>" . $item["q_question"] . "</b></li>";

else if (!empty($item["q_reg_exp"]))

{

if (preg_match($item["q_reg_exp"],$lValueStr))

$error_str.="<li class='warn_intend'>".$item["q_reg_exp_errormsg"] ." <b>".$item["q_question"]."</b></li>";

}

}

$lArray[$i]["value"]=$lValueStr;

$data.="$value='$lValueStr',";

$i++;

}

$lExtraArray=getExtraAdvValue("",2,$lArray);

$tplRegister->assign("extra_fields_array",$lExtraArray);

}

if (isset($_POST["submit"]))

{

$result = mysql_query ("select * from $usr_tbl where user_email = '$lEmail'");

if (mysql_num_rows($result)>0)

$error_str.= "<li type='square' class='warn_intend'>".LA_ERROR_MSG20."</li>";

if (!validEmail($lEmail))

$error_str.= "<li type='square' class='warn_intend'>".LA_ERROR_MSG21."</li>";

if (ereg(" ", $lPassOne) OR strlen($lPassOne)<$set_password_len)

$error_str.= "<li type='square' class='warn_intend'>". ereg_replace("%1%",$set_password_len,LA_ERROR_MSG24)."</li>";

if (($lPassOne <> $lPassTwo))

$error_str.= "<li type='square' class='warn_intend'>".LA_ERROR_MSG22."</li>";

if (($set_agree_conditions==1 AND !$lAgreeCond))

$error_str.= "<li type='square' class='warn_intend'>".LA_CONDITIONS_MANDATORY ."</li>";

if (($set_img_validation==1 AND $_SESSION["validate_sign_session"] <> $lValidateSign))

$error_str.= "<li type='square' class='warn_intend'>".LA_IMG_VER_FAILED ."</li>";

if ($usr_1_mandatory AND $usr_1 == "")

$error_str.= "<li type='square' class='warn_intend'>".LA_FIELD." $usr_1_text ". LA_MAND ."</li>";

// Find Extra fields in user table and get values from not empty rows

$i=0;

$lRemoteIP=getRemoteIp();

if (!empty($lEmail))

$error_str.=ban($lBanList, $lEmail);

if (!empty($lRemoteIP))

$error_str.=ban($lBanList, getRemoteIp());

//getRemoteIp

if (!$error_str)

{

$temp_validate = "";

if ($opt_verify) {

$temp_validate = generatePassword(5);

}

else {

$random = 0;

}

$registered = time();

if (!$opt_verify) {

$p = "";

}

else {

$p = $lPassOne;

}

$user_id=createUser($lEmail,$lPassOne,$lName,$lEmelding,$lHideEmail,$temp_validate,$data);

if ($result)

{

$tplRegister=new TplLoad;

$tplRegister->assign("registration_ok",1);

if ($set_payments)

{

$sql="select count(pid) as num from $pkg_tbl";

$res_count=q($sql);

$row_c=mysql_fetch_array($res_count);

$num_packages=$row_c["num"];

// Create new admin user if admin table is empty

if ($num_packages<1)

{

q("INSERT INTO `$pkg_tbl` (`pid`, `pname`, `pterm`, `pdur`, `pactive`, `pprice`, `pcurrency`, `pupload`, `pmessages`, `pchat`, `pgb`, `protation`, `pvisitor`, `pfav`, `pmatch`, `pflirts`) VALUES (99, 'Default', 1, 3, 2, 0.00, 'USD', 3, 4, 999, 1, 1, 10, 10, 10, 10)");

q("INSERT INTO `$pkg_tbl` (`pid`, `pname`, `pterm`, `pdur`, `pactive`, `pprice`, `pcurrency`, `pupload`, `pmessages`, `pchat`, `pgb`, `protation`, `pvisitor`, `pfav`, `pmatch`, `pflirts`) VALUES (1, 'Small', 2, 30, 1, 10.00, 'USD', 5, 20, 999, 1, 1, 1, 30, 30, 30)");

q("INSERT INTO `$pkg_tbl` (`pid`, `pname`, `pterm`, `pdur`, `pactive`, `pprice`, `pcurrency`, `pupload`, `pmessages`, `pchat`, `pgb`, `protation`, `pvisitor`, `pfav`, `pmatch`, `pflirts`) VALUES (2, 'Medium', 1, 60, 1, 25.00, 'USD', 25, 250, 999, 1, 1, 55, 55, 55, 55)");

q("INSERT INTO `$pkg_tbl` (`pid`, `pname`, `pterm`, `pdur`, `pactive`, `pprice`, `pcurrency`, `pupload`, `pmessages`, `pchat`, `pgb`, `protation`, `pvisitor`, `pfav`, `pmatch`, `pflirts`) VALUES (3, 'Gold', 1, 90, 1, 60.00, 'USD', 200, 200, 999, 1, 1, 200, 200, 200, 200)");

}

addPackage($user_id,99);

}

if ($opt_verify)

{

$subject = formatString(LA_NEW_USER_MAIL_TITLE, array("$name_of_site"));

$message = formatString(LA_NEW_USER_MAIL_MSG_VAL . LA_NEW_USER_MAIL_MSG2_VAL, array(&quot;http://$url/verify.php?verify=$temp_validate","$name_of_site"));

sendEmail($lEmail, $from_adress_mail, $subject, $message);

//Friend Invite:

if ($FName != "" || $FEmail !="")

{

$Fsubject = formatString(LA_FRIEND_MAIL_TITLE, array("$lName","$name_of_site"));

$Fmessage = formatString(LA_FRIEND_MAIL_MSG, array("$lName",&quot;http://www.isula-web.com/annonces_autos_voitures_vehicules_occasion","Isula Web","$FName"));

sendEmail($FEmail, $lEmail, $Fsubject, $Fmessage);

}

$tplRegister->assign("verify",1);

}

elseif ($approve_mem)

{

//$sql = "update $usr_tbl set months='" .round($_REQUEST["months"]) ."' where user_id=$user_id";

//$r = q($sql);

$tplRegister->assign("wait_approval",1);

}

else

{

$subject = formatString(LA_NEW_USER_MAIL_TITLE, array("$name_of_site"));

$message = formatString(LA_NEW_USER_MAIL_MSG . LA_NEW_USER_MAIL_MSG2, array(&quot;http://$url/member_login.php","$lEmail","$lPassOne","$name_of_site"));

sendEmail($lEmail, $from_adress_mail, $subject, $message);

$_SESSION["valid_user"] = $user_id;

addLoginItem($user_id);

}

}

}

}

if (!isset($_POST["submit"]) OR (isset($_POST["submit"]) AND !empty($error_str)))

{

$tplRegister->assign("show_regform",1);

$tplRegister->caching = false;

$tplRegister->assign("name",getParam("name",""));

$tplRegister->assign("email",getParam("email",""));

$tplRegister->assign("passwd",getParam("passwd",""));

$tplRegister->assign("passwd2",getParam("passwd2",""));

$tplRegister->assign("emelding",getParam("emelding",""));

$tplRegister->assign("hide_email",getParam("hide_email",""));

$tplRegister->assign("agree_cond",getParam("agree_cond",""));

$tplRegister->assign("la_pass",eregi_replace("%1%",$set_password_len,LA_PASS1));

$tplRegister->assign("set_agree_conditions",$set_agree_conditions);

$tplRegister->assign("LA_CONDITIONS_TEXT",formatString(LA_CONDITIONS,array("<a href=\"java script:openWin3('info.php?what=terms',300,500,'')\">")));

if ($error_str)

$error_str="<ul class='warn'>$error_str</ul>";

$tplRegister->assign("errorMsg",$error_str);

if ($set_img_validation==1)

$tplRegister->assign("image_validation",1);

}

$tplRegister->display("register.tpl");

include_once("footer_inc.php");

?>

Modifié par Dax

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai aussi essayé ce petit code qui devrait permettre de créer un fichier xml contenant le nom des membres suivis de leurs codes de confirmation respectifs, seulement il commence à créer le fichier puis bloque à cause d'une erreur. Voici ce qui est affiché lorsque je consulte le fichier xml, seul le dernier membre apparait et pas les autres:

Un nom contenait un caractère non valide. Erreur de traitement de la ressource http://www.monsite.com/verification.xml

<Verify code><user><name>Dax</name><code>1938ereWJ</code></user>

------------^

<?
include_once("admin/inc.php");

$writeStr="";
$writeStr.="<Verify code>";

$mysql_user = "select user_name, user_verify_code from $usr_tbl";
$result = q ($mysql_user);
while ($row=mysql_fetch_array($result))
{
$user_name = $row["user_name"];
$user_verify_code = $row["user_verify_code"];
$writeStr.="<user><name>$user_name</name><code>$user_verify_code</code></user>\n";

}
$writeStr.="</Verify code>\n";
$fp = fopen("verification.xml","w+");
fwrite($fp,$writeStr);
fclose($fp);

?>

Si je pouvais afficher tous les codes il me serait facile d'envoyer de nouveau les liens de confirmations, auriez vous une idée du pourquoi çà coince ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai l'impression que tu te compliques la vie, tu veux t'amuser à sélectionner tout les codes de validation / activation des membres pour renvoyer celui d'un seul membre à ce membre en question, tu ne trouves pas ça un peu bête ?

En gros ce que tu dois faire c'est demander le pseudo du membre dans un formulaire, une fois cela fait il ne te reste qu'à sélectionner dans la Base De Donnée le code de validation de celui-ci selon son pseudo avec une requête toute bête du genre :

<?php
$usr_tbl = 'membre';
$pseudo = mysql_real_escape_string(htmlspecialchars(trim($_POST['pseudo'])));

$req = mysql_query("SELECT user_verify_code AS code FROM $usr_tbl WHERE pseudo = '" . strtolower($pseudo) . "'")or die(mysql_error());
$donnee _membre = mysql_fetch_assoc($req);

$code_validation = $donnee_membre['code'];
?>

Enfin si du moins j'ai bien compris ton problème qui est donc de renvoyer un code d'activation à une personne précise et non d'envoyer tout les codes à tout le monde.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Contenu similaire

    • Par kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • Par leobk
      Bonjour,
       
      J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols
      j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé
      un nombre énorme d'URLs de type :
      www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
      redirigent vers :
      www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
       
      L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques
      Voici la structure d'URL si on fait une recherche de vol sur le site principal :
      https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2
       
       
      existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?
       
       
    • Par PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





    • Par aurelien59
      Bonjour, Je me permet de poster ce problème sur ce forum en plus de l'avoir posté sur un autre. Le problème survient sur un site codé en dur. Depuis plusieurs mois après la mise en place de redirection, je rencontre un problème. La redirection a été mise en place pour rediriger simplement les pages ayant un underscore vers un tiret. Par exemple page_1.php vers page-1.php Dans Google webmasters tools, zone "Exploration", > Erreurs d'exploration > le nombre des URL non suivies à augmenter de manière considérable sur ordinateurs et smartphone.

      Voici un exemple de page contenant l'erreur : page-1.php/page-a.php (alors que la page correcte est page-1.php, la page page-a.php est présente sur le site en racine). Lorsque je clic sur l'url d'erreur, dans l'onglet "Référencée sur". Les url qui apparaissent sont : http://www.monsite.fr/page-2.php/page-b.php'>>http://www.monsite.fr/page-2.php/page-b.php et http://www.monsite.fr/page-2.php/page-c.php'>>http://www.monsite.fr/page-2.php/page-c.php (non indexés sur Google). Voici l'extrait du .htaccess ErrorDocument 404 http://www.monsite.fr/404.phpRewriteEngine onRewriteCond %{HTTP_HOST} ^monsite.fr$RewriteRule ^(.*) http://www.monsite.fr/$1 [QSA,L,R=301]RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]RewriteRule ^(.*)\.php/$ http://www.monsite.fr/$1.php[L,R=301]RewriteRule ^(.*)\.php/(.*)\.php$ http://www.monsite.fr/$1.php[R=301]RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ /404.php [NC,L] Merci beaucoup pour votre aide.
×