Rechercher : dans
Par :

PHP+SQL gestion de membres

Dernière réponse le 11 mar 2008 à 00:57:36 Marion, le 6 mar 2008 à 21:55:43 
 Signaler ce message aux modérateurs

Bonjour,
dans le cadre de mes études j'ai un projet à réaliser, dont l'élaboration d'un site web.
Je me bats avec le PHP+MYSQL pour créer une partie membres !

J'ai déjà créer le formulaire d'inscription avec accès à la base de données, après il faut donc une page de login pour s'identifier, mais comment faire pour que une fois identifié le membre ai des "avantages".

Par exemple avoir des pages masquées pour les visiteurs, mais visible pour les membres.

Je suis encore débutante donc merci d'être le plus précis possible :$

Merci.

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « PHP+SQL gestion de membres » dans :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger EasyPHP VoirEasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données MySQL et le support du langage PHP. Il est fourni avec phpMyAdmin, une interface permettant de manipuler très facilement les...
SQL - Gestion des permissions VoirGestion des permissions Plusieurs personnes peuvent travailler simultanément sur une base de données, toutefois ces personnes n'ont pas forcément les mêmes besoins: certaines peuvent par exemple nécessiter de modifier des données dans la table,...

1

Denshosha, le 6 mar 2008 à 22:00:32

Cherche avec Google miss, tu trouvera un tas de tutoriaux (a en perdre le nord d'ailleurs) sur PHP et MySQL

Mais avec un peu de patience et une recherche par mot clés logique, tu trouvera tout ce que tu cherche je t'assure lol

je m'y connais pas plus que ça sur le sujet désolé.

++

Répondre à Denshosha

2

lewis34, le 6 mar 2008 à 22:04:02

Bonsoir
tu peut utiliser le systeme de session
en haut de tes pages php tu peut mettre ce code (il faut le mettre avant toutes autres balises)
<?
//// On appelle la session
session_start();

//////je verifie que la ssession est remplie
if (empty($_SESSION['visiteur'] ))
{
header ("Location:login.php");// la si la session est vide c'est que la personne est pas identifiée donc elle est redirigée avec le header vers la page de connexion
exit();
}
$visiteur=$_SESSION['visiteur'];//nom de la session pour le nom de profil

ensuite soit tu fait des header en fonction du "visiteur" soit tu met des conditions dans ta page pour faire apparaitre ou non tel ou tel bouton

Répondre à lewis34

3

Marion, le 6 mar 2008 à 22:14:18

Waw c'est quand même super difficile tout ça !

Le problème avec les recherches sur le net c'est qu'il y a vraiment tout et n importe quoi et on est obligé de lire des dizaines de page pour voir si c'est ce qu'effectivement on cherche...

Pour l'instant j'ai créer une table membre avec un champ id, login, pass, email.
Je vais déjà cherché un code pour se loger donc...

Merciii

Répondre à Marion

4

lewis34, le 6 mar 2008 à 22:24:57

Non les session c'est tout bete
$_SESSION c'est un "mot clef " de php
header te redirige vers un fichier que tu choisit

pour faire apparaitre un bouton dans ta page c'est simple

admettons que tu est un utilisateur qui s'appelle admin et l'autre etranger

tu peut faire un truc comme ca

$visiteur=$_SESSION['visiteur'];//tu recupere le nom sous lequel il s'est loggé
if($visiteur=='admin']
{
<td><input type="submit" value="supprimmer"></td>
}
else
{
<td><input type=" submit" value="consulter"></td>
}

c'est un exemple "idiot" mais si c'est l'admin qui est loggé il aura le bouton supprimer de visible si c'est un autre il aura le bouton consulter

apres tu a plein de possibilités ,mais c'est le principe

en esperant t'avoir eclairer un peu.. ;-)

Répondre à lewis34

5

Marion, le 6 mar 2008 à 22:32:38

Merci oui ça m'a un peux éclairé en ce qui concerne l'affichage ou non d'un bouton ou autre..

Pour l'instant je vais déjà essayé pour que les membres inscrit puisse s'identifier, dur dur de trouver des tutos la dessus!!

PS : tu as suivi quoi comme études ?

Répondre à Marion

6

lewis34, le 6 mar 2008 à 22:36:21

Pour le php mysql ==>tout seul maisj'avais des bonnes notions.Quand on veut on peut y arriver
jette un oeil ici si tu veut tu verra ce qu'on peut faire avec du php et des bases de données
http://milsodor.no-ip.org

c'est mon site (en cours de creation),y'a mieux certes mais c'est mon 1er site

Répondre à lewis34

7

Marion, le 6 mar 2008 à 22:39:28

Ah oui super le truc de login c'est exactement ce à quoi je voudrais arriver :D
Je reviendrais quand j'aurais réussi à avancer un peu...

Mercii en tout cas.

Répondre à Marion

9

lewis34, le 6 mar 2008 à 22:45:50

Si t'a besoin n'hesite pas.
c'estca qu'est passionnat dans l'informatique et la programmation c'est qu'on en apprends tout les jours

Répondre à lewis34

8

lewis34, le 6 mar 2008 à 22:43:57

Pour ta page de connexion pense à inclure le cryptage du mot de passe
exemple $motpasse=md5($_POST['mot_de_passe'];
comme ca dans ta base le mot de passe sera indechiffrable (théoriquement mais c'est une sécurité)
par exemple si mon mot de passe est essai dans la base il sera enregistré comme ca:4d8fc38123455b12879a07703234bda2

bien sur il faut que quand on se logge ,passer "un coup de md5 pour verifier que le mot de passe en clair orresponde bien au MP crypté

Répondre à lewis34

10

Marion, le 6 mar 2008 à 22:55:08

Merci mais c'est juste pour un projet scolaire et tout ça ce n'est pas encore indispensable !
Déjà si mon inscription et mon login fonctionnerait je serais contente :D

@plustard

Répondre à Marion

11

lewis34, le 6 mar 2008 à 22:58:17

Ok c'est vrai que la c'est pas indispensable.Si t'a besoin d'aide n'hesite pas ,je sais trop ce que sait que de galerer.. ;-)

Répondre à lewis34

12

Marion, le 6 mar 2008 à 23:10:51

Et bien pour l'instant je refais moi même le module d'inscription, j'en suis la :


<?php

if (isset($_POST['login']) AND isset($_POST['pw']) AND isset($_POST['prenom']) AND isset($_POST['email']))
{
if ($_POST['login'] != NULL AND $_POST['pw'] != NULL AND $_POST['prenom'] != NULL AND $_POST['email'] != NULL)
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "root", "");
mysql_select_db("php");


// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$login = ($_POST['login']);
$pw = ($_POST['pw']);
$prenom = ($_POST['prenom']);
$email = ($_POST['email']);

// Ensuite on enregistre le message
mysql_query("INSERT INTO adherent VALUES('', '$login', '$pw', '$prenom', '$email')");

// On se déconnecte de MySQL
mysql_close();
}
}
?>

Mais ça ne marche pas très bien car ça me rajoute des champs vide dans ma bdd

lol

Répondre à Marion

13

lewis34, le 6 mar 2008 à 23:17:45

Je regarde ca demain matin la je vais au dodo ,juste une piste avant d'aller me coucher dans ton formulaire les balises <form action...
et </form> sont bien presente ?

et tu a bien precisé <form action="ton_ fichier.php" method="post"> ?

rapidement tu a mis ca :
if ($_POST['login'] != NULL AND $_POST['pw'] != NULL AND $_POST['prenom'] != NULL AND $_POST['email'] != NULL)

essaye plutot comme ca
if ((!$_POST['login'] = NULL) AND (!$_POST['pw'] = NULL) AND (!$_POST['prenom'] = NULL) AND (!$_POST['email'] = NULL) )

tiens moi au courant bonne nuit

Répondre à lewis34

14

Marion, le 6 mar 2008 à 23:51:06

Yessss :D
j'ai enfin réussi mon formulaire d'inscription, si ça marche redirection vers le login sinon retour au formulaire...

Par contre pour le login je ne sais pas du tout j'essaye de trouver un ancien post pour m'en inspirer !

Biz & merci :D

Répondre à Marion

15

Marion, le 7 mar 2008 à 00:55:09

Bon j'arrête pour ce soir !
Petit récapitulatif...
L'inscription ça fonctionne...

Voici mon formulaire pour le login :
[quote]
<form method="post" action="index.php?page=login">
<b><font face="Verdana" size="1">Login<br>
<input type="text" name="login">
<br>
<br>
Mot de passe</font></b><br>
<input type="password" name="pw">
<br>
<br>
<input type="submit" name="Submit" value="Entrer">
</form>
/quote
et voici ma page login :
[quote]
<?php

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect("localhost","root","");
if(!$db_link) {echo "Connexion impossible à la base de données"; exit;}

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET MOT DE PASSE
$requete=mysql_db_query("php","select login,pw from adherent where login=\"$login\" and pw=\"$pw\"",$db_link) or die(mysql_error());

// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{
echo "erreuuuuuuuuuuuuuuuuuuuuuuuur";
}
// SI LE LOGIN ET MOT DE PASSE SONT EXACTES
else
{
echo "vous ete connecte";
}
// DECONNEXION MYSQL
mysql_close($db_link);
?>
/quote

Et....ça ne marche pas, j'ai toujours le msg "erreur" je pense donc qu'il y a un probleme avec mysql_db_query qui retourne toujours false !

Si vous avez une solutions, des idées...

Merci, a demain.

Répondre à Marion

16

Dalida, le 7 mar 2008 à 01:40:52

Salut,

je pense que c'est un problème de test, il faudrait tester le type.

if( mysql_num_rows($requete) === 0 ) 


et tant qu'à apprendre&helip;
je te soumets ma façon de traiter une connexion/requête.
si cette façon de coder de déstabilise, oublie, sinon on pourra t'expliquer ligne par ligne.
<?php
	// utilisation de constantes, plus pratiques pour modifier les valeurs quand tu passes chez ton hébergeur
	define( 'DB_HOST' , 'localhost' );
	define( 'DB_USER' , 'root' );
	define( 'DB_PASSWORD' , '' );
	define( 'DB_NAME' , 'php' );
	// sandwich Try/Catch, toutes les erreurs sont gérées au même endroit
	// chaque fois que tu lèves une erreur avec 'throw new Exception()' le code saute au 'Catch()'
	try
	{
		$db_link = @mysql_connect( DB_HOST , DB_USER , DB_PASSWORD );
		if( !$db_link )
		{
			throw new Exception('Connexion impossible au serveur de donn&eacute;es');
		}
		if( !@mysql_select_db( DB_NAME ) )
		{
			throw new Exception( 'Impossible de s&eacute;lectionner la base de donn&eacute;es' );
		}
		$sql = "SELECT `login` , `pw` FROM `adherent` WHERE login='$login' AND pw='$pw' LIMIT 1;";
		$result = mysql_query( $sql , $db_link ); // soigne la rédaction, ça facilite le débogage
		if( $result === false ) // test de type, important !
		{
			throw new Exception( 'Erreur lors de l\'ex&eacute;cution de la requ&ecirc;te;' );
		}
		if( mysql_num_rows($requete) !== 1 )
		{
			throw new Exception( 'Connexion &eacute;chou&eacute;e' );
		}
		echo '<p>Connexion r&eacute;ussie</p>';
	}
	catch( Exception $e )
	{
		echo "<p>{$e->getMessage()}</p>"
	}
?>

dans tous les cas :

• présente bien ton code (aération, indentation, majuscules pour les mots clé SQL…) c'est juste une bonne habitude à prendre

• pense à aller voir dans le manuel PHP quels sont les types retournés par les fonctions et si besoin est de tester le type avec un triple égale dans tes tests.

PS : le bouton pour mettre en forme le code.
[ Mathieu ]
Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

17

lewis34, le 7 mar 2008 à 06:08:48

Bonjour essaye comme ca




//evidemment avant tu verifi que $_pot['login'] et post_['pw'] sont pas vide.
//ensuite tu reprends une partie du code plus haut
 
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$login = ($_POST['login']);
$pw = ($_POST['pw']); 

  $db_link = @mysql_connect("localhost","root","");

 if(!$db_link) {echo "Connexion impossible à la base de données"; exit;}

      //on va regarder si le couple mp et login existe

       $sql = "SELECT *  FROM adherent WHERE login='$pw' AND pw='$pw'"

       $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 

//on retourne le resultat sous forme d'un tableau associatif avec mysql_fetch_array
      $data = mysql_fetch_array($req); 
       
      mysql_free_result($req); //on libere la memoire allouée à la requete
  mysql_close(); 
      
      // on recupere les valeurs contenue dans le champ login et pw de ta table
      $membre=$data['login'];
      $pass=$data['pw'];

if (($membre==$login) AND ($pass==$pw))
    {
//le mot de passe et le login corresponde
         echo 'je suis connectée';
     } 
     // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
else
      {
        echo 'impossible de se connecter
//ensuite tu peut detailler l'erreur si c'est le psw ou le login qui est pas bon
       }


voila Marion avec tout ca le code de Dalida le mien tu devrais y arriver ,bon courage
@+

Répondre à lewis34

18

Marion, le 7 mar 2008 à 13:07:09

Décidément je dois vraiment être nulle...C'est vrai que votre code Dalida à l'air plus propre et plus professionnel, je l'ai plutôt bien compris, mais la page ne s'exécute pas, il semblerait qu'il y a une erreur avec le catch, j'ai essayé de le changer mais toujours pareil...

Quand à ton code lewis, il semblerait que j'ai encore un problème avec "mysql_query" avec cette ligne :

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());


PS: vous mettez quelles balises pour écrire votre code dans le forum?

Répondre à Marion

19

Dalida, le 7 mar 2008 à 13:30:34

Salut,

mon code est en PHP5, ce n'est peut être pas la version de ton serveur.

le bouton pour le code ou entre balises "code" (comme celle de HTML).
[ Mathieu ]

Pensez à utiliser le bouton "Conserver la mise en forme du texte sélectionné" pour mettre en forme les codes sources et à cocher l'option "Résolu" quand c'est le cas, merci !

Répondre à Dalida

21

lewis34, le 7 mar 2008 à 14:08:04

Bonjour ,logique qu'il y est une erreur c'est de ma faute..
je t'ai marqué ca :
$sql = "SELECT * FROM adherent WHERE login='$pw' AND pw='$pw'"

alors qu'il faut marquer
$sql = "SELECT * FROM adherent WHERE login='$login' AND pw='$pw'";

j'avais oublié le ; à la fin et le champp login je l'avais appelé pw...dsl

Répondre à lewis34

20

Marion, le 7 mar 2008 à 13:47:38

Et bien j'ai la dernière version de wampserver donc je pense quand même qu'il gère le PHP5, je vais essayer de trouver ce qui ne va pas un peu plus tard cette après-midi...

Merci de votre aide encore!

Répondre à Marion

22

Marion, le 7 mar 2008 à 14:38:22

Ah oui, c'est vrai que j'avais vu l'erreur avec le pw-login mais j'avais pas fait attention au ; à la fin !

Par contre il y a encore un problème c'est que la base de donnée "php" n'est pas selectionner !

Répondre à Marion

23

Marion, le 7 mar 2008 à 14:40:59

J'ai donc mis ça en début de code

mysql_select_db( DB_NAME );


en suivant l'example de Dalida pour les Define, mais j'ai comme hier toujours "erreuuuuuur"

Répondre à Marion
Collection CommentÇaMarche.net