Espace membres

Salut !

Presque tout est dans le titre. Voila, j’ai commencé un esapce membre pour un site grace à ce tuto. Tout fonctionne bien mais j’aimerais que chaques membres et sa propre page personnel.

J’ai besoin de vos conseils, faut-il changer tout le code ou …

Merci à vous B)

Par principe je n’irai pas voir le code du siteduzero mais je vais essayer de t’expliquer comment faire pour réaliser ce que tu veux.

tu fais un nouveau fichier pour une nouvelle page, à integrer de façon autonome par rapport à l’espace membre (je sais ça veut pas dire grand chose jusqu’ici mais t’inquiete pas, ça dérange pas pour la suite ^^).

Disons que tu va faire un dossier mapage.
on va donc y acceder par http://tonsite.tld/mapage/
(ici on part du principe que tu n’as pas de page index qui inclue les pages demandées, sinon, adapte !).

Et aussi une nouvelle table : membres_pages par exemple.
le minimum syndical serait d’apres moi serait deux champs : id_membre, contenu.
le premier du meme type que l’id de la table membre, et le second de type text par exemple.
tu peux aussi ajouter des options comme “titre”, date, derniere modification, nombre de “hits” etc …

Tu va sans doute vouloir lire une variable post ( $_POST[‘membre’] par exemple ) qui correspondra à la page du membre a qui appartient la page.

ensuite, il va falloir que tu identifie le membre; si tu as des membres bien sympas ça peut poser un probleme de passer le pseudo “brut” par url : genre si tu as un membre " °]==@@@@|/|()!@@@==[° ", ça va peut etre un peu poser probleme, mais bon il y a des solutions.

ensuite tu va aller lire les informations associées à la page de ce membre sur la table que l’on a appellé membres_pages et l’afficher.

Je ne connais pas ton niveau en sql, mais tu peux tres bien faire ça en une seule requete (parenthese).

note: afficher peut impliquer htmlspecialchars (http://fr3.php.net/htmlspecialchars), ou strip tags (http://fr.php.net/strip-tags) pour des raisons de sécurité, ça dépend de comment tu sécurise les données insérées.

Et voilà !

hum … j’ai peut etre oublié un aspect important de la chose : l’insertion de données !!
Pour cela, tu fais un lien (ou un formulaire) sur ta zone membre.

  1. tu t’assure que le membre soit loggé (ça doit etre fait ça non ? B))
  2. tu affiche un formulaire avec un textarea, (ou un editeur wysiwyg)
  3. tu fais pointer le formulaire où ça va bien pour toi.

A partir de 3 plusieurs cas, et là j’avoue que j’ai pas la solution miracle :
soit tu es sûr qu’il existe déjà une ligne dans la base (par exemple si un admin crée la page, ça implique l’ajout d’un enregistrement sur la base membres_pages) et dans ce cas là tu édite les valeurs dont tu as besoin,
soit tu teste que ça existe (genre select COUNT(*) AS existe FROM membres_pages WHERE id_membre = << l’id membre>>)
bref, contenu doit recevoir la valeur de ton textarea, avec la sécu qui va bien pour toi (voir les liens ci dessus) pour eviter les redirections pourries en js, ou pire …

J’espere t’avoir aidé, (excuse alacon (mais pas trop), je dois répondre au téléphone donc je bâcle la fin :D)
Si tu as encore des problèmes n’hésite pas .

Ps : moi j’aurais peut être posté dans webdev, car même si php ça passe ici, d’habitude le php reste quand meme majoritairement dans webdev B)

(Glop il a dit que ca avait sa place ici sur un post ou je faisais le meme type de suggestion)

oui c’est pour ça que j’ai dit que quand meme, il me semblait que, d’habitude, les gens ont tendances à …

perso je m’en fiche un peu … B)

Merci bien fser, mais j’ai un niveau plus bas que bas en php B) ! J’ai pris ce tuto car il donne le code déja fait, il est clair et rapide, mais il manque quand meme cette option de chaques membres, sa page.

J’ai pas vraiment compris ta réponse, je ne saurais par quoi commencer et comment! B)

Merci.

Il faut que tu donne plus de détails pour savoir ce que tu sais faire etc …
la premiere chose à faire est sans doute creer la table dont tu aura besoin.
ensuite, creer la page qui permettra d’afficher les pages de chaques membres (par exemple la page pages/index.php?id=<<id_membre>>) qui se limiterait en gros à un :
[sql]select contenu FROM membres_pages WHERE id_membre = $_GET[‹ id ›] LIMIT 1[/sql]

(biensûr il faut tester que la variable id soit bien un nombre B)
Ensuite tu organise l’affichage de la page par exemple :

[code]if(isset($_GET[‹ id ›]) && is_numeric($_GET[‹ id ›]))
{
$req = mysql_query(‹ SELECT contenu FROM membres_pages WHERE id_membre = ‹ . $_GET[‹ id ›]. › LIMIT 1 ›) or die(mysql_error()); // affiche l’erreur s’il y a. bien pour toi debugger

// S’il n’y a pas de page, on jette.
if(!mysql_num_rows($req))
echo ‹ Pas de page pour ce membre ! ›;
else
{
$datas = mysql_fetch_assoc($req);

	echo '', strip_tags($datas['contenu'], '<a> <ul> <li> <br>  '), '';

}
}[/code]

bon il faut aussi ouvrir la base etc … mais bon je te laisse faire B)

voilà pour l’affichage, ensuite il te faut une page pour « inserer » :

en gros :

[code]// Le membre est loggé

if(isset($_POST[‹ contenu ›]))
{
$req = mysql_query('SELECT COUNT(*) AS existence FROM membres_pages WHERE id_membre = ’ . $id_du_membre . ’ LIMIT 1");

if(mysql_result($req, 0)) // Ici c’est moche, mais ça devrait marcher s’il y a déjà un résultat
{
$req = mysql_query(‹ UPDATE membres_pages SET contenu = " › . htmlspecialchars($_POST[‹ contenu ›]), '" WHERE id_membre = '. $id_du_membre .);

	if($req) echo 'ok';
	else
	   echo 'pabon';
}
else
{
	$req = mysql_query('INSERT INTO membres_pages (contenu, id_membre) VALUES ("' . htmlspecialchars($_POST['contenu']), '", '.$id_du_membre .')';

	if($req) echo 'ok';
	else
	   echo 'pabon';
}

}[/code]

bon codé en live donc sans doute mal indenté … désolé :smiley:

J’espere que les bouts de code t’auront aidé …
(oui je sais c’est assez dégueu :D)

Bien pour faire simple, je ne sais rien codé moi meme en php.

Voila le code du tuto, qui ma permis de faire mon esapce membre :

[code]<?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);

//Ici on mettera le code pour la connexion automatique.

//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 (isset($_POST[‘pseudo’],$_POST[‘mot_passe’]) && !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 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 $donnees['confirmation'] vaut 1.
							if ($donnees['confirmation'] == 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 2 variables de session, contenant des informations sur le membre.
									$_SESSION['id'] = $donnees['id']; //Id du membre.
									$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
									
									//Redirection vers la page membre.
									header("location: membres.php");

…[/code]

C est cette derniere ligne qui redirige vers une seul et meme page membres.php. Moi j’ai pencé sans savoir comment le réaliser, un truc du style : si $pseudp = id 1 alors la page sera 1; si $pseudo - id 2 alors la page sera 2 …

Tout est crée, il me manque juste une petite partie je pence, pour pouvoir faire cela B) !

Merci à toi encore B) !

AAAAHHHHHH, tu veux juste qu’il ai acces à sa page par exemple de modification de profil ?
moi je pensais que tu voulais leur permettre de se faire une espece de page “site” sur ton site B)

Excuse moi, j’ai du mal expliquer. En fait c est un site ou il y aura pas plus de 20 membres. Chaque membres aura sa page. Sur cette page ils pourront poster une news qui s’affichera sur une page commune.

Voila, c est pour ca que j’ai donné le lien du tuto que j’ai utilisé, le plus gros et fait, et je voulais en fait savoir, le code à changer pour que chaques membres ai sa page.

Merci B)

Pas plus de 20 membres? Chacun peut poster dans son coin et on ramène tout sur une page commune?

Il serait pas plus simple de bidouiller juste un tout petit peu une install WordPress?

[quote=“Bebop, post:10, topic: 31756”]Pas plus de 20 membres? Chacun peut poster dans son coin et on ramène tout sur une page commune?

Il serait pas plus simple de bidouiller juste un tout petit peu une install WordPress?[/quote]

Je pense qu’il s’en fout et qu’il veut juste que quelqu’un lui file une solution toute prete, n’importe laquel.

Bonjour.
En fait, ma solution ne fonctionne plus vraiment pour ce que je voulais faire! Je me suis re-penché sur ta réponse fser, mais j’ai un peut de mal à comprendre.

Pour résumer :

Je me connecte grave à un formulaire se trouvant sur “index.php” et me redirigeant vers “index.php”. Ensuite, il y a vérification du pseudo, mot de passe, confirmation … et enfin, je suis redirigé vers “membres.php”.
Arrivé sur cette page, j’aimerais récupérer donc l’id ou le pseudo de l’utilisateur connecté, et c est la ou est mon problème, pas un gros je suppose mais je bloc B) ! J’ai pensé à ça =" $_SESSION[‘pseudo’] = $pseudo; " …
et donc pour ensuite, afficher la page de cet utilisateur.

Une question qui à rien à voir, mais Dreamweaver pour faire du php, est ce vraiment bien et avantageux ?
Merci B) !

Bonjour.
En fait, ma solution ne fonctionne plus vraiment pour ce que je voulais faire! Je me suis re-penché sur ta réponse fser, mais j’ai un peut de mal à comprendre.

Pour résumer :

Je me connecte grave à un formulaire se trouvant sur “index.php” et me redirigeant vers “index.php”.

<form action="index.php" method="post" class="Style6"> <label for="pseudo"><span class="Style47"> Pseudo :</span></label> <input type="text" name="pseudo" id="pseudo" /> <span class="Style49">Mot de passe : <input type="password" name="mot_passe" id="mot_passe" /> <input name="connexion" type="submit" class="Style39" value="Se connecter" /> </span> </form>

Ensuite, il y a vérification du pseudo, mot de passe, confirmation …

//Vérification du pseudo. $pseudo = htmlspecialchars($_POST['pseudo']); $mot_passe = htmlspecialchars($_POST['mot_passe']); .......

… et enfin, je suis redirigé vers “membres.php”.

[code]//Création de 2 variables de session, contenant des informations sur le membre.
$_SESSION[‘id’] = $donnees[‘id’]; //Id du membre.
$_SESSION[‘pseudo’] = $pseudo; //Pseudo du membre.

									//Redirection vers la page membre.
									header("location: membres.php");[/code]

Arrivé sur cette page, j’aimerais récupérer donc l’id ou le pseudo de l’utilisateur connecté, et c est la ou est mon problème, pas un gros je suppose mais je bloc ! Avec la commande : =" $_SESSION[‘pseudo’] = $pseudo; " …
Et donc pour ensuite, afficher la page de cet utilisateur.

Mais je n’arrive pas a mettre en forme bien comme il faut. J’ai pas le temps de bien comprendre grâce au tuto, c est donc pour ça que votre aide est précieuse B) !

Merci d’avance.

Une question qui à rien à voir, mais Dreamweaver pour faire du php, est ce vraiment bien et avantageux ?
Merci !

[quote=“locraft, post:13, topic: 31756”]Une question qui à rien à voir, mais Dreamweaver pour faire du php, est ce vraiment bien et avantageux ?
Merci ![/quote]

Carrément pas. De manière totalement objective, je dirais que Dreamweaver, c’est un word amélioré. A la limite, si tu dois composer rapidement une page avec beaucoup d’html, je peut à la limite comprendre la démarche. Mais pour faire du php ? Never. Un bon éditeur de texte avec coloration syntaxique (moi j’utilise ultra edit) et roulez jeunesse.

Ok, je vois! c est bien ce que je pençais ! J’utilise N++, c est sympa.