JeuWeb - Crée ton jeu par navigateur
Member - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Member (/showthread.php?tid=949)



Member - Onizuki15. - 16-03-2007

Voila c pour savoir si quelqu'un pouvais me
trouvé un bon tuto pour comment fabriquer un espace
membre avec une connection SQL

Merci d'avance (h)


RE: Member - Byleth - 16-03-2007

Y'en a un de proposer dans la partie tutorial de ce forum et il me semble très correcte.

Plutôt que de demander qu'on te le cherche, tu ferais mieux de le faire toi même, c'est pas trop dur à trouver ^^.

Et puis pas besoin de tuto, suffit de connaitre le sql et les $_SESSION, c'est niveau SDZ ça
(soit dit en passant, cette partie à coder me révulse ^^)


RE: Member - zneman - 17-03-2007

Va voir sur le site du zero Smile
Sinon, voila ce que je peux te donner:
Attention: ce code n'est pas "parfait" et peu être amélioré, j'en suis sur :p

la table SQL:

Code PHP :
<?php 
CREATE TABLE
`membres` (
`
id` int(11) NOT NULL auto_increment,
`
pseudo` varchar(40) collate latin1_general_ci NOT NULL,
`
mot_passe` varchar(255) collate latin1_general_ci NOT NULL,
`
confirmation` smallint(1) NOT NULL default '0',
`
email` varchar(255) collate latin1_general_ci NOT NULL,
`
race` set('elfe','nain','humain') collate latin1_general_ci NOT NULL,
`
autorisation` set('1','2','3','4') collate latin1_general_ci NOT NULL default '2',
`
gald` bigint(8) unsigned NOT NULL,
`
mana` bigint(5) unsigned NOT NULL,
`
tours` smallint(200) unsigned NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;

Connection a la BDD (fichier config.inc.php):

Code PHP :
<?php
$host
= 'localhost';
$username = 'ton username';
$password = 'ton pass';
$bdd_name = 'nom de ta BDD';
?>



page index.php (ou index.html Smile):

Code PHP :
<?php 
<form method="post" action="connection_ok.php">
<
label for="pseudo">Pseudo : <input name="pseudo" id="pseudo" type="text"></input>
</
label>
<
label for="mot_passe">Mot de passe : <input name="mot_passe" id="mot_passe" type="password"></input></label>

<
input name="connexion" value="Se connecter" type="submit"></input>
</
form>

C'est juste en formulaire de connection qui envois les infos vers connection_ok.php Wink

La page Inscription.html:

Code PHP :
<?php 
<form method="post" action="inscription.php">
<
label for="pseudo">Pseudo : <input type="text" name="pseudo" id="pseudo" /> (Entre 3 et 35 caractères)</label><br />
<
label for="mot_passe">Mot de passe : <input type="text" name="mot_passe" id="mot_passe" /> (Au moins 4 caractères)</label><br />
<
label for="email">Email : <input type="text" name="email" id="email" size="30" /></label>
<
p>R&egrave;gles du jeu: <a href="[color=red]Faire une page html avec tes regles et met le lien ici[/color]l" onclick="window.open(this.href,'popup','height=300 , width=300 , location=no');return false;">ici</a></p>
<
select name="race">
<
option value="elfe">Elfe</option>
<
option value="nain">Nain</option>
<
option value="humain">Humain</option>
</
select>
<
p><br />
<
input type="submit" name="inscription" value="Créer son royaume" />
</
p>
</
form>

Comme tu le vois, c'est un simple formulaire avec une sélection de la population etc... il ya un popup vers les regles Wink


La page Inscription.php:

Code PHP :
<?php
//Identifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);

//On vérifie que la variable $_POST['inscription'] existe
if (isset($_POST['inscription']))
{
if (!empty(
$_POST['pseudo']) && !empty($_POST['mot_passe']) && !empty($_POST['email']) && !empty($_POST['race']))
{
//Si le pseudo est supérieur à 3 caractères et inférieur à 35 caractères.
if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35)
{
//Si le mot de passe est supérieur à 4 caractères.
if (strlen(trim($_POST['mot_passe'])) > 4)
{
//Mesure de sécurité.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);
$email = htmlspecialchars($_POST['email']);
$race = htmlspecialchars($_POST['race']);

//On vérifie que le pseudo n'existe pas.
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
if (
mysql_result($sql, 0, 'nb_pseudo') == 0)
{
//Hashage du mot de passe avec md5().
$mot_passe = md5($mot_passe);

//Envoi du mail de confirmation.
$message = '
Bonjour '
.$pseudo.'
Vous venez de vous inscrire sur Nom_du_site.
Je vous souhait de trouver votre place dans ce monde...
Bonne continuation et bon jeu '
.$pseudo.' .';

//Si le mail a été envoyé on peut enregistrer le membre
//Si le mail a été envoyé on peut enregistrer le membre
if (mail($email, 'Confirmation de l\'inscription sur nom_du_site', $message))
{
//On éxécute LES requête qui enregistre un nouveau membre.
mysql_query("INSERT INTO membres (pseudo, mot_passe, confirmation, email, race, autorisation) VALUES ('".$pseudo."', '".$mot_passe."', '0', '".$email."', '".$race."', '2')");
mysql_query("INSERT INTO troupes (pseudo) VALUES ('".$pseudo."')");
mysql_query("INSERT INTO fortifications (pseudo) VALUES ('".$pseudo."')");
mysql_query("INSERT INTO armurerie (pseudo) VALUES ('".$pseudo."')");
mysql_query("INSERT INTO institut (pseudo) VALUES ('".$pseudo."')");

echo
'Message : votre compte a bien été créé ! Vous pouvez desormais vous connecter et commencer a jouer. Bonne chance!';
}
else
{
echo
'Erreur : echec lors de l\'envoi du mail ! veuillez vous ré-inscrire';
}
}
else
echo
'Erreur : le pseudo existe déjà !';
}
else
echo
'Erreur : le mot de passe est trop court !';
}
else
echo
'Erreur : le pseudo est soit trop court, soit trop long !';
}
else
echo
'Erreur : vous avez oublié d\'entrer votre pseudo ou votre mot de passe ou votre adresse email !';
}

//Déconnection de la base de données.
mysql_close();
?>

Pas besoin d'en savoir beaucoup sur le php pour comprendre ca Smile C'est un peu repris du SDZ Smile

La page connection_ok.php:

Code PHP :
<?php
//Démarrage de la session (à mettre avant tout code xhtml)
session_start();

//Si la variable $_SESSION['logged'] n'existe pas on la créée.
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;

//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name);

//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
if (isset($_POST['connexion']) && $_SESSION['logged'] === false)
{
//Vérification des autres variables.
if (!empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
{
//Vérification du pseudo.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);

//Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");

//Si le pseudo existe.
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
//Vérification du mot de passe
//Information sur le compte du membre.
$sql_infos = mysql_query("SELECT id, mot_passe, confirmation, autorisation FROM membres WHERE pseudo='".$pseudo."'");
$donnees = mysql_fetch_array($sql_infos);

//Hashage du mot de passe.
$mot_passe_hash = md5($mot_passe);

//Comparaison du mot de passe.
if ($mot_passe_hash == $donnees['mot_passe'])
{
//On vérifie que le compte est confirmé.
//Si le membre est confirmé et qu'il n'est pas banis :P
if ($donnees['confirmation'] == 1)
{
if (
$donnees['autorisation'] != 1)
{
if (isset(
$_POST['souvenir']) && $_POST['souvenir'] == 'on')
{
//Temps d'expiration des cookies (1 an).
$expire = time() + 3600 * 24 * 365;

setcookie('pseudo', $pseudo, $expire);
setcookie('mot_passe', $mot_passe_hash, $expire);
}

//Tout est bon, on connecte le membre.
$_SESSION['logged'] = true;

//Création de 3 variables de session, contenant: son ID, son pseudo et son niveau d'autorisation
$_SESSION['id'] = $donnees['id']; //Id du membre.
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
$_SESSION['autorisation'] = $donnees['autorisation']; // Niveau d'autorisation: Banis, membre simple, modérateur, Admin.
$_SESSION['gald'] = $donnees['gald'];
$_SESSION['mana'] = $donnees['mana'];
?>
//Redirection vers la page membre. (en java script)
<script language="JavaScript">
window.location='http://tonsite/inventaire.php'
</script>
<?
}
else
echo
'Vous avez etait banis!';
}
else
echo
'Erreur : le compte n\'est pas confirmé !';
}
else
echo
'Erreur : le mot de passe est incorrect !';
}
else
echo
'Erreur : le pseudo n\'existe pas !';
}
else
echo
'Erreur : veuillez remplir tous les champs !';
}

echo
'Pour retourner à l\'index, c\'est <a href="index.php">ici</a>';
?>

Sur cette page, je traite les information envoyées par le formulaire de connection et j'autorise ou non le membre à acceder a la page inventaire.php Wink Il faut bien sur que tu remplace certaines choses, fonctions Wink

La page inventaire.php:

avant tout code HTML:

Code PHP :
<?php
//Ne pas oublier de mettre le session_start()
session_start();
?>

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

Code PHP :
<?php
//On vérifie que le membre est connecté.
if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
{
//Mettez ici votre code xhtml (et php)
//Exemple : affichage du lien de déconnection et du pseudo.
echo 'Bonjour '.$_SESSION['pseudo'].'<br/>';
echo
'Votre race: '.$donnees['race'].' <br />';
if(
$donnees['autorisation'] == 4)
{
echo
'Bonjour Admin...<a href="administration.php">Ici</a> pour aller au panneau d\'administration';
}
else
echo
'';
}
else
echo
'Erreur : vous devez être connecté pour accéder à cette page !<br /> Allez <a href="index.php">ici</a> pour vous connecter.';
?>

Si le membre est connecté, on l'autorise a voir la page et on lui dit "bonjour", on affiche sa "race" et si il est Admin, on lui donne le lien vers le panneau d'admin Smile.

La page deconnexion.php:

Code PHP :
<?php
//Démarrage de la session.
session_start();

//Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
{
//On modifie la valeur de $_SESSION['logged'], qui devient false.
$_SESSION['logged'] = false;

//Destruction des cookies.
if (isset($_COOKIE['pseudo'],$_COOKIE['mot_passe']))
{
setcookie('pseudo','',0);
setcookie('mot_passe','',0);
}

//Redirection.
header("location: index.php");
}
else
{
//On est pas connecté, alors on redirige le visiteur sur la page d'accueil.
header("location: index.php");
}
?>

La encore, rien de bien compliqué Smile On supprime la session et on redirige le membre vers la page index.php Smile


ATTENTION: Il ne suffis pas de faire un copier collé de ces codes car ils ne fonctionneront pas si tu les met comme ca dans tes pages Smile
Je te conseil d'aller sur le site du zero et d'apprendre les cours Smile