Inscription-espace membre

Résolu
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonour à tous,

J'éssai de faire un espace membre pour mes (futur) membres, mais impossible...

Je doit peut être être moin intelleligent que la moyenne... j'ai parcouru le site du zéro, plusieurs tuto sur les sessions, mais je n'y arrive pas. On me dit pourtant que ce que je souhaite faire est simple a réaliser.

J'aimerai faire un petit cadre sur la page d'acceuil de mon site avec une case NOM, une autre MOT DE PASSE, et sous ces cases le mot 's'inscrire'.

Je voudrais que les visiteurs puissent s'inscrire, tout simplement. J'aimerai faire une page perso à chaque membre, protégé par leur mot de passe.

Si quelqu'un connait un tuto vraiment très claire, ou veut prendre la peine de m'éxpliquer pas a pas ce qu'il faut faire ce serait sympa.

merci
A voir également:

13 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Un tutoriel pour faire un espace-membres assez basique :
http://www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php
1
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Tu as sans doute fait une faute dans l'attribut "action" de la balise "form".
Il faut que la page cible existe.
1
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
J'ai trouver ce script sur le site:

vegeta1other 12 jun 2008 à 00:52
Comment créer un espace membre?? bin c assez simple quand on a déjà tâté du PHP et qu'on connait le principe logique...

voici comment ca marche:

1) creer sa page de demarrage. (appelé index)

<?php

// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);

// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

mysql_free_result($req);
mysql_close();

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php

if (isset($erreur)) echo '<br /><br />',$erreur;
?>

</body>
</html>

--> info a savoir sur la page de démarrage: Ici, ce n'est que les cadres pour l inscription, mais vous pouvez y ajouté tous le body de votre site (présentation par ex)...

Ensuite, il faut bien sur une page

ATTENTION

- Pour que cela fonctionne, vous devez mettre le bon server, login et password suivant la configuration de votre base de donné, de plus, ici la table ce nome "test"...

- Vous devez avoir créé une base de donnée avec une table (ici membre) pour y ranger les infos des visiteurs qui s'inscrivent.
pour ce faire, voici une requête SQL toute chaude

CREATE TABLE membre (
id int(11) NOT NULL auto_increment,
login text NOT NULL,
pass_md5 text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

2) Faire un lien de la page index a la page d inscription pour avoir un formulaire "entre guillement ici" à remplir.

<?php

// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);

// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription à l'espace membre :<br />
<form action="inscription.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php

if (isset($erreur)) echo '<br />',$erreur;
?>

</body>
</html>

- Une fois validée toutes les infos seront ds la BdD

3) Ensuite, créer la page sur laquelle votre bien aimé visiteur tombera apres s'être inscrit.

<?php

session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>


<html>
<head>
<title>Espace membre</title>
</head>

<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?>!<br />
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>


Voila, et si votre membre souhaite se deconecter...

<?php

session_start();
session_unset();
session_destroy();
header('Location: index.php');
exit();
?>


Tous ses codes sont déjà lié entre eu... il ne reste plus qu a les utilisers en adaptant le nom de la base de donnée, le login et le pass

-----------------------------------------------------------------------------------------------

Mais ca ne fonctionn pas, quand je tente une inscription ca m'affiche "no data base selected"
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci pour ta réponse (et aussi pour sa rapidité!)

J'arrive plus ou moin a m'en sortir avec le scriptci-dessus,j'aicependant 2 problèmes:

1. lorsque j'entre un mauvas nom d'utilisateur ca m'affiche "internet explorer ne peut pas afficher cette pag web.

2. lorsque j'entre le bon nom et le bon mot de passe ca m'affiche également la même chose.

J'ai appelé la première page index.php
la deuxieme inscription.php
la troisième membre.php

Vu que celui qui a écritce poste n'a pas précser le nom à donner j'ai peut être fait une erreur la dessus?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Ne copie pas bêtement les scripts, analyses-les afin de comprendre le fonctionnement.
Ensuite, code toi-même.
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
C'est un peu ce que je fais, j'essai d'analyser au maximum les scripts pour y comprendre quelque chose... mais bon c'est pas facile j'ai un peu de mal avec les sessions.

J'ai toujours mes érreurs "internet explorer ne peu pas afficher cette page" quand je tente de me connecter avec un nom d'utilisateur et mot de passe que j'ai enregistré.

Apparament ma page index.php ne dirige pas vers la page membre.php, quelqu'un voit il d'ou viens l'erreur?
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
J'ai suivi le tuto que tu m'a donner avion f-16,

en faite c'est le tuto correspond au script que j'ai.

Au moin j'ai pu comprendre un petit peu le fonctionnement.

Par contre j'en suis toujours au même problême...

Voit tu de quoi ca viens? (enfin je me doute que tu doit savoir de quoi ca viens, la question est veu tu me l'expliquer stp?)

Merci
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. in C:\wamp\www\test2\inscription.php on line 11 
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci avion f-16 pour ton aide,

Frogone tu ne doit pas comprendre que des personnes comme moi par exemple font leur site eux-même car ils n'ont pas le budjet pour faire appels a des proffessionnels.

Si moi par exemple je n'arive pas a faire moi même mon site ben je laisserai tombé mon projet... et aucun proffessionnels ne me gagnera comme client...

Donc l'aide que avion f-16 apporte a des personnes comme moi est très précieuse et ne joue pas en défaveur des proffessionnels.
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
Pour en revenir a mon problême,

j'ai résolu cette histoire de
"Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. in C:\wamp\www\test2\inscription.php on line 11"

Par contre j'ai toujours le soucis suivant:

quand je m'inscrit en entrant un nom et mot de passe c'est ok, j'arrive sur la page membre.php qui me dit:"bienvenu"

Par contre quand je me déconnecte et tente de me reconnecté avec le nom et mot de passe l'ordinateur charge un moment puis "internet exploreur ne peu pas afficher cette page" et une fenetre windows s'ouvre me disant que appache a cesser de fonctionner suite a un probleme.

Vois tu d'ou l'erreur peu venir?

Apparament la page membre.php n'est pas accessible suite a une connection de membre déja enregistré
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
C'est un problème avec ta plateforme de développement (EasyPHP, Wampserver, Xampp, ...)
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
Et a tu une idée de comment résoudre ce problême?

Je pensai que l'erreur vennait peut etre de cette ligne (prise de la page index.php)

if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {

mais j'ai du faire fausse route si tu me dit que c'est un probleme du a ma plate forme de dévellopement...

J'utlise wamp
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
On m'a oublié?

Quelqu'un sait il comment résoudre ce probleme sur wamp?

Quand je tente de me connecter avec un nom et mot de passe, que ca m'affiche "internet explorer ne peu pas afficher cette page" et que j'ai la petite fenetre windows qui me dit"appach a cesser de fonctionner suite a un probleme" je vais dans "apach error log" et j'ai ceci qui s'affiche:

[Tue Mar 23 14:47:57 2010] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue Mar 23 14:47:57 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Tue Mar 23 14:47:57 2010] [notice] Server built: Dec 10 2008 00:10:06
[Tue Mar 23 14:47:57 2010] [notice] Parent: Created child process 4300
[Tue Mar 23 14:47:58 2010] [notice] Child 4300: Child process is running
[Tue Mar 23 14:47:58 2010] [notice] Child 4300: Acquired the start mutex.
[Tue Mar 23 14:47:58 2010] [notice] Child 4300: Starting 64 worker threads.
[Tue Mar 23 14:47:58 2010] [notice] Child 4300: Starting thread to listen on port 80.

quelqu'un voit ce que ca veu dire?
0
Loic1983 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   3
 
J'ai trouver la solution!

Et tout seul, comme un grand!

en fait il faut supprimer le mysql_colse ();

et tout fonctionne...

Bon j'avoue que j'ai fais quelques recherches sur google et apparament wamp ce plante avec la fonction mysql_close();

Donc ceux qui sont dans le même cas il suffit de supprimer ce champ
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Ne pense pas que j'ai t'ai oublié :)
J'étais en cours ...
0