Mot de passe perdu

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 : Mot de passe perdu

par Cyrano » 01 oct. 2005, 00:56

Merci beaucoup...... tout fonctionne parfaitement en-ligne

Une vrais référence, je garde ton pseudo en mémoire (chanceux)

:)
J'ai ben beau être un mautadis français, je suis pas trop poche quand même, même si j'ai abandonné le Canada après 12 ans là bas :langue:

Bon restant de veillée, je vais pas tarder à aller dormir, il est tard ici ;)

par auclairp » 01 oct. 2005, 00:53

Merci beaucoup...... tout fonctionne parfaitement en-ligne

Une vrais référence, je garde ton pseudo en mémoire (chanceux)

:)

par Cyrano » 01 oct. 2005, 00:48

Tu as vu ce que j'ai rajouté: tu as fait une requête SQL, mais tu ne récupérais jamais les résultats: c'est ce que j'ai rajouté avec le while($envoi = mysql_fetch_assoc())

J'ai aussi ajouté un champ email dans la requête puisqu'on en a besoin pour l'envoi.

Ensuite, j'ai un peu repris le code d'envoi du courriel en ajoutant une variables headers qui ajoute des en-têtes pour le serveur de courriel.

Ça ne devrait rien changer.

Mais attention, si tu travailles en local, as-tu configuré le serveur SMTP dans ton php.ini ? Ou bien tu travailles en ligne sur un serveur d'hébergement ?

par auclairp » 01 oct. 2005, 00:46

tu me fais travailler les méninge :)

C'était le pseudo du début qu'il fallait changer.... et la ca marche et très bien... le mail est entrer


Merci beaucoup.

par auclairp » 01 oct. 2005, 00:43

ca ne fonctionne plus.....

on dirait qu'il a plus de réaction, j'ai la text box et le submit, mais plus les petit message de confirm ou d'erreur il revien a la page initial

J'avoue que tu as ajouter beaucup de choses, :)

par Cyrano » 01 oct. 2005, 00:33

De toutes façon, dans le bout de code qu'il y a là, la variable $email n'est initialisée nulle part: il faudrait peut-être bien larécupérer quelque part, tu ne crois pas ?
Voilà à quoi ça devrait ressembler : attention, il y a des détails que tu devras ajuster.
<?
require("connec.php");
$afficher_form = 1;
if (isset($_POST['submit']))
{
    /* On commence par récupérer la valeur envoyée par le formulaire: */
    $pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
    if (trim($pseudo) == "")
    {
        $message = "La case est vide.";
        $afficher_form = 1;
    }
    else
    {
        $conecter=mysql_connect($hote,$nom,$passw)or die ("erreur de connexion");
        mysql_select_db($base,$conecter) or die ("erreur de selection");
        $pseudoexists = "SELECT passe, email FROM membre WHERE pseudo='$pseudo'";
        $existence = mysql_query($pseudoexists);


        if (mysql_num_rows($existence) < 1)
        {
            $message = "Nom d'usager invalide";
            $afficher_form = 1;
        }
        else
        {
            /* Récupération des information et préparation du message */
            while($envoi = mysql_fetch_assoc($existence))
            {
                $to = $envoi['email'];
                $passe = $envoi['passe'];
            }
            $sujet = "Votre Mot de passe";
            $message = "Usager ". $pseudo ."\nMot de passe: ". $passe ."\n";
            /* Ajout d'en-têtes au message */
            $headers = 'From: [email protected]' . "\r\n" .
            'Reply-To: [email protected]' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();
            /* Envoi du message */
            if(mail ($to, $sujet, $message, $headers))
            {
                $message = "Votre mot de passe vient de vous être envoyé par courriel.";
                $afficher_form = 0;
            }
            else
            {
                $message = "Une erreur s'est produite, le mot de passe n'a pa pu être envoyé, veuillez essayer à nouveau ultérieurement.";
                $afficher_form = 1;
            }
        }
    }
    //On ferme la connexion avec la base
    mysql_close();
}
?>
<html>
<head>
</head>
<body>
<?php
if(isset($message))
{
?>
<p style="font-size:10pt; text-align: center; font-weight: bold; color: #c00; font-family: verdana;"><?php echo($message); ?></p>
<?php
}
if($afficher_form == 1)
{
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<input type="text" name="pseudo" size="40" maxlength="256">
<input type="submit" value="Envoyer">
</form>
<?php
}
?>
</body>
</html>

par auclairp » 01 oct. 2005, 00:32

{
                    $message = "Votre mot de passe vient de vous être envoyé par courriel. ". $email ."";
                    $afficher_form = 0;
                }
J'ai mis ca à la fin pour voir et non, l'adresse ne s'affiche pas pourquoi ????

par auclairp » 01 oct. 2005, 00:24

ce n'est pas fini
$to = "[email protected]";
            {
                $message = "Usager ". $pseudo ."\nMot de passe: ". $passe ."\n";
                if(mail ($to, "Votre Mot de passe", $message))
                {
                    $message = "Votre mot de passe vient de vous être envoyé par courriel.";
                    $afficher_form = 0;
                }
                else
                {
                    $message = "Une erreur s'est produite, le mot de passe n'a pa pu être envoyé, veuillez essayer à nouveau ultérieurement.";
                    $afficher_form = 1;
                }
le mail ne marche pas vraimenr

pour qu'il envois je doit mettre l'adresse dans le code ( comme je l'ai mis ) il vas pas chercher l'info dans la bd, si je le laissait comme avant, le message me dit qu'il envois, mais rien ne part, et dans le message, il sir
ex

usager auclairp
password (rien) il lis pas dans la BDD juste le post qu'on a fait

j'essais de voir de mon côté, si tu trouve avant, surement que oui fait moi signe

par Cyrano » 01 oct. 2005, 00:21

Tu as raison, c'était une erreur de ma part (j'en fais aussi ;) ), bien vu.

par auclairp » 01 oct. 2005, 00:17

j'ai changer ca aussi
if (mysql_num_rows($existence) < 1)
        {
            $message = "Nom d'usager invalide";
            $afficher_form = 1;
        }
        else
le < 1 était =< 1

et la ca fonctionne reste plus qu'a voir si le mail se rend bien a destination.... mais il m'indique qu'il est en route

J'espère que oui, sinon $?/$$&%&$%&*/

Mais à toi un gros merci de ta patience, et moi de mon côté, je vais décortiquer le script pour voir et comparer avec celui du début pour mieu comprendre

encore merci à tous

par Cyrano » 01 oct. 2005, 00:10

Ben voilà, maintenant, il reste à affiner ton script pour le rendre fonctionnel en ligne ;)

par auclairp » 01 oct. 2005, 00:09

ok du nouveau, grosse amélioration

j'ai changer au début du code

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

par

if (isset($_POST['pseudo']))

Et ca fonctionne, mais il y a une erreur de connection, mais si j'y met rien ca marche il inscrit case vide.. :):) je vais revoir mes config de connection

par auclairp » 01 oct. 2005, 00:06

on a un maudit de bon début.... il y a un affichage. mais c tout

j'ai fait quelques petit test.

que j'entre un usager valide ou un nom batard il me revien à la page initial, mais pas de petit message du genre

- mail envoyer
- auvais non
- rien d'écrit

j'ai aussi essayer de tester s'il y avait connection à la BD, j'ai juste modifier et mit des maudaise donné dans le connec.php, et encore rien revien à la boite de texte et submit

mais quand même on a q chose

par Cyrano » 30 sept. 2005, 23:52

Ça ne marche pas son truc. Dans tous les cas, la variable est à 1 SAUF si on trouve le pseudo et que l'envoi du courriel a fonctionné. Donc on peut si on veut rajouter un else au if(mail(... mais pour la forme, ce qui donne:
<?
require("connec.php");
$afficher_form = 1;
if (isset($_POST['submit']))
{
    /* On commence par récupérer la valeur envoyée par le formulaire: */
    $pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
    if (trim($pseudo) == "")
    {
        $message = "La case est vide.";
        $afficher_form = 1;
    }
    else
    {
        $conecter=mysql_connect($hote,$nom,$passw)or die ("erreur de connexion");
        mysql_select_db($base,$conecter) or die ("erreur de selection");
        $pseudoexists = "SELECT passe FROM membre WHERE pseudo='$pseudo'";
        $existence = mysql_query($pseudoexists);


        if (mysql_num_rows($existence) <= 1)
        {
            $message = "Nom d'usager invalide";
            $afficher_form = 1;
        }
        else
        {
            $to = "$email";
            {
                $message = "Usager ". $pseudo ."\nMot de passe: ". $passe ."\n";
                if(mail ($to, "Votre Mot de passe", $message))
                {
                    $message = "Votre mot de passe vient de vous être envoyé par courriel.";
                    $afficher_form = 0;
                }
                else
                {
                    $message = "Une erreur s'est produite, le mot de passe n'a pa pu être envoyé, veuillez essayer à nouveau ultérieurement.";
                    $afficher_form = 1;
                }
            }
        }
    }
    //On ferme la connexion avec la base
    mysql_close();
}
?>
<html>
<head>
</head>
<body>
<?php
if(isset($message))
{
?>
<p style="font-size:10pt; text-align: center; font-weight: bold; color: #c00; font-family: verdana;"><?php echo($message); ?></p>
<?php
}
if($afficher_form == 1)
{
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<input type="text" name="pseudo" size="40" maxlength="256">
<input type="submit" value="Envoyer">
</form>
<?php
}
?>
</body>
</html>
Quant à ce qu'il dit sur le echo sans parenthèses, c'est vrai qu'elles sont facultatives, mais pour ma part j'en mets systématiquement et ce n,est pas une erreur de syntaxe, c'est une habitude., Mais on peut simplifier ceci:
<?php echo("". $message .""); ?>
par
<?php echo($message); ?> 
J'ai corrigé aussi dans le code plus haut.

par auclairp » 30 sept. 2005, 23:46

voici la réponse que j'ai sur un autre forum
Bonjour,

Dans tes inputs, deja met le flash a la fin <input />

puis cette ligne:
<?php echo("". $message .""); ?>

ecrit plutot ca
<? echo $message; ?>

avec echo pas de parentheses, t pas de guillement avec une variable sinon il vas t'afficher $message ou lieu de la variable $message.

Ensuite ca vient de tes conditions, tu dit "Si un message est poster" il est pas poster alors la tu dit "sinon" Jusque la OK. Mais apres tu dit "Si afficher form == 1"
mais dans ton cas ce n'est pas le cas donc la condition n'est pas rempli donc il affiche se qu'il y a entre
else
{
et
if
{

et ce qu'il y a entre les 2 ben rien donc rien ne s'affiche.

Peut etre que je me goure et que je suis a coter de la plaque mais e pensse que c'est ca.

j'espere avoir put t'ader.
quesque vous en pensez