Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: sonic2 le le 13-06-2008 a 08:02:10

Titre: Aide pour Espace Membre
Posté par: sonic2 le le 13-06-2008 a 08:02:10

Bonjour,

J'ai trouvé sur un site un tuto pour la création d'un espace membre avec activation par mail pour mon site. Je suis encore novice en php et MySQL.

Mon problème est que avec le code du tuto il n'y a ni création des infos dans la base de donné et donc ni envoi du mail :s

voici le code de la page d'inscription


Code:
<?

// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: index.php");
}
else
{

// Formulaire visible par défaut
$masquer_formulaire = false;

// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{

// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{4,}$", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($_POST["TB_Mot_de_Passe"] != $_POST["TB_Confirmation_Mot_de_Passe"])
{
$message = "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
$_POST["TB_Adresse_Email"]))
{
$message = "Votre adresse e-mail n'est pas valide";
}
else
{

// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("localhost", "root", "");
mysql_select_db("asp-php");

// Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
$result = mysql_query("
SELECT Nom_Utilisateur
, Adresse_Email
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
OR Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
");

// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de la création de votre compte utilisateur";
}
else
{

// Si un enregistrement est trouvé
if(mysql_num_rows($result) > 0)
{

while($row = mysql_fetch_array($result))
{

if($_POST["TB_Nom_Utilisateur"] == $row["Nom_Utilisateur"])
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"];
$message .= "est déjà utilisé";
}
elseif($_POST["TB_Adresse_Email"] == $row["Adresse_Email"])
{
$message = "L'adresse e-mail " . $_POST["TB_Adresse_Email"];
$message .= "est déjà utilisée";
}

}

}
else
{

// Génération de la clef d'activation
$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$caracteres_aleatoires = array_rand($caracteres, 8);
$clef_activation = "";

foreach($caracteres_aleatoires as $i)
{
$clef_activation .= $caracteres[$i];
}

// Création du compte utilisateur
$result = mysql_query("
INSERT INTO Comptes_Utilisateurs(
Nom_Utilisateur
, Mot_de_Passe
, Adresse_Email
, Date_Inscription
, Clef_Activation
)
VALUES(
'" . $_POST["TB_Nom_Utilisateur"] . "'
, '" . md5($_POST["TB_Mot_de_Passe"]) . "'
, '" . $_POST["TB_Adresse_Email"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
)
");

// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de la création de votre compte utilisateur";
}
else
{

// Envoi du mail d'activation
$sujet = "Activation de votre compte utilisateur";

$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
$message .= "http://" . $_SERVER["SERVER_NAME"];
$message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
$message .= "&clef=" . $clef_activation;

// Si une erreur survient
if(!@mail($_POST["TB_Adresse_Email"], $sujet, $message))
{
$message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{

// Message de confirmation
$message = "Votre compte utilisateur a correctement été créer<br />\n";
$message .= "Un email vient de vous être envoyer afin de l'activer";

// On masque le formulaire
$masquer_formulaire = true;

}

}

}

}

}

// Fermeture de la connexion à la base de données
mysql_close();

}

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[PHP] Créer un espace membre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<? if(isset($message)) { ?>
<p><?= $message; ?></p>
<? } if($masquer_formulaire != true) { ?>
<form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
<p>
Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
</p>
<p>
Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
</p>
<p>
Confirmation du mot de passe : <input type="password" name="TB_Confirmation_Mot_de_Passe" />
</p>
<p>
Adresse e-mail : <input type="text" name="TB_Adresse_Email" />
</p>
<p>
<input type="submit" name="BT_Envoyer" value="Envoyer" />
</p>
</form>
<? } ?>
</body>
</html>


A mon avis cela provient de l'action du formulaire je ne sais pas par quoi remplacé les variables

Merci d'avance de vos réponses ;)

PS : J'utilise dreamweaver et easy php

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 18-06-2008 a 08:36:48

salut,
oui effectivement pour débuté c'est vraiment pas bien ::)
trouve un autre tuto

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 18-06-2008 a 13:31:28

Je cherche un autre tuto depuis plusieurs jours mais je ne trouve rien. Savez vous ou en trouver? ???

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 18-06-2008 a 17:40:46

http://www.phpdebutant.org/
http://www.infos-du-net.com/forum/21159-21-technique-identification-membres-site

j'en connais pas mais essai sa

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 20-06-2008 a 13:21:56

Merci beaucoup pour les liens ;)

Je vais essayer ;D

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 25-06-2008 a 08:47:59

Bonjour,

J'ai trouver un script sur lephpfacile.com mais j'ai encore un soucis :-[

A la base le script n'enregistrait pas dans ma table mais après avoir modifier avec dream il y a enregistrement. Et je peu me connecter grâce a la fonction connecter l'utilisateur dans dream mais arriver sur la page membre pour afficher le nom du connecter il y a une erreur :

Notice: Undefined variable: _SESSION in D:\Program Files\EasyPHP 2.0b1\www\Mon_site\connection_membres\membre.php on line 154
!

Voila le code de la page




Code:
<?php require_once('../Connections/membres.php'); ?>
<?php
$colname_membre = "-1";
if (isset($_GET['id'])) {
$colname_membre = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_membres, $membres);
$query_membre = sprintf("SELECT id FROM membre WHERE id = %s", $colname_membre);
$membre = mysql_query($query_membre, $membres) or die(mysql_error());
$row_membre = mysql_fetch_assoc($membre);
$totalRows_membre = mysql_num_rows($membre);
?><?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
<---------> Ligne 154 ci dessous
<span class="Style3">Bienvenue sur votre espace membre <?php echo htmlentities(trim($_SESSION['login'])); ?> !</span></p>

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: ToToMaStEr le le 25-06-2008 a 09:14:13

Salut,

Crée un répertoire /session/ à la racine de ton serveur .

De plus regarde (avec un phpinfo() ) , si les sessions sont actives et autorisée sur ton serveur.



Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 25-06-2008 a 09:31:23

Ta variable et mal renseigné regarde bien

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 25-06-2008 a 12:51:41

J'ai garder comme dans le script mais ca ne fonctionne toujours pas ??? J'utilise easy php pour l'instant pour tester normalement ça fait les sessions non?

Je voudrais que le nom de l'utilisateur soit afficher sur la page membre.php

Pour cela il faudrait qu'on récupère l'entrée du champ 'login' de la page index mais comment faire?

Merci de vos réponses

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 25-06-2008 a 19:54:33

essai sa

<?php echo stripslashes(htmlentities(trim($_SESSION['login']))); ?>

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 25-06-2008 a 20:00:26

a oui aussi

$query_membre = sprintf("SELECT id FROM membre WHERE id = %s", $colname_membre);

il manque login dans ton appel

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 26-06-2008 a 07:47:45

Je ne sais plus du tout quoi faire :'(

J'ai supprimé la partie pour afficher le login. Par contre j'ai une question : comment empêcher à un autre visiteur n'ayant pas été soumis au formulaire de connection de se connecter si quelqu'un lui donne l'adresse?

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 26-06-2008 a 08:12:50

je connais pas ton script donc je peut pas te dire mais en tout cas tu doit mettre une partie du script de reconnaissance sur toute t'es pages .

Titre: Re:ESPACE MEMBRE HELP!!
Posté par: sonic2 le le 26-06-2008 a 18:50:12

Les scripts des pages sont la http://www.lephpfacile.com/howto/10-un-espace-membre (http://www.lephpfacile.com/howto/10-un-espace-membre) mais j'ai modifier avec dream parce qu'il n'y avait aucun enregistrement avec le script d'origine :-\

Si sa peut te servir à m'aider ça serait sympa. Merci beaucoup de ton coup main


Titre: Re:ESPACE MEMBRE HELP!!
Posté par: digacreat le le 28-06-2008 a 09:42:50

et bé faut regarder ou lire les information c'etait la

Le test de l'existence du compte de notre membre ayant déjà été fait dans la page index.php, il nous reste peu de chose à faire pour notre espace membre.

En effet, dans membre.php, il ne nous reste qu'à tester que la personne qui accède a cette page est bien passée par le formulaire de connexion de l'espace membre.
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
Tu doit mettre sa sur tout t'es pages.


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.