Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2011, 11h57   #1
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
Par défaut Comment configurer ma table login ?

Bonjour,
j'e suis en train de faire une page login php et ajax et j'ai trouvé des bouts de script un peu partout pour en faire un qui me semble pas trop mal.
Seul problème, je ne sais pas faire le code pour ma table MySql.

Mon code php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(isset($_GET['email']) && isset($_GET['psw'])){
 
$email = $_GET['email'];
$psw = $_GET['psw'];
 
$getUser_sql = 'SELECT * FROM USER WHERE email="'. $email . '" AND psw = "' . $psw . '"';
$getUser = mysql_query($getUser_sql);
$getUser_result = mysql_fetch_assoc($getUser);
$getUser_RecordCount = mysql_num_rows($getUser);
 
if($getUser_RecordCount < 1){ echo '0';} else { echo $getUser_result['nick'];}
}
Ce que j'ai fait (trouvé...)
Code :
1
2
3
4
5
6
7
8
CREATE TABLE login
(
L_ID INT NOT NULL AUTO_INCREMENT,
logged DATETIME,
email VARCHAR(10),
psw VARCHAR(10),
PRIMARY KEY (L_ID)
);
J'ai seulement besoin de 2 login/pass, il s'agit juste de protéger une page avec des photos confidentiel (pour éviter la copie de la part des concurrents).

Si vous avez des tutoriels à me proposer je suis preneur (de préférence avec validation ajax, je trouve ça plus agréable et jolie).
Ce que j'ai trouvé m'inquiète un peu car je ne sais pas comment protéger les dites pages.
En fait j'ai l'impression que le login ce fera mais que ds tous les cas si je tape l'url direct de la page que je veux protéger je pourrais y avoir accès.

Merci
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 12h11   #2
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Regarde par içi : lien
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 12h14   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Hello

Si tu veux pas te casser la tête, protège ta page avec un .htaccess.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 12h25   #4
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
Merci pour vos réponses.
En revanche, je ne comprend rien...
Je n'ai pas préciser la chose mais je maitrise parfaitement xhtml et css mais pour le reste

Pour htacces je ne peux pas personnaliser l'interface de connection, ce qui me déplais fortement. J'y avait pensé également mais je n'ai pas trouvé de solution pour embellir la chose.
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 12h34   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Reste simple. Si tu veux protéger une page pour un ou deux utilisateurs c'est la solution idéale. Ne vas pas t'embêter avec un login PHP / Ajax juste pour ça...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 13h31   #6
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
C'est vrai, mais quand j'ai une idée dans la tête...
Je vais continuer de chercher un peu plus voir si je trouve un script tout fait, déjà trouvé en php seul mais du coup sans ajax.
Sinon je retient le .htacces
Cette solution est bien protégée je présume ?
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 14h16   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par brisso Voir le message
C'est vrai, mais quand j'ai une idée dans la tête...
Je vais continuer de chercher un peu plus voir si je trouve un script tout fait, déjà trouvé en php seul mais du coup sans ajax.
Sinon je retient le .htacces
Cette solution est bien protégée je présume ?
Tout à fait. En plus c'est Apache qui gère, tu n'a rien à implémenter coté PHP, donc il y a à priori moins de risques de failles

Pour faire un équivalent en PHP, voici comment tu pourrais t'y prendre:

1 - Le modèle MySQL

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE  TABLE IF NOT EXISTS `users` (
  `id` BIGINT(25) NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(90) NOT NULL ,
  `surname` VARCHAR(90) NOT NULL ,
  `mail` VARCHAR(90) NULL ,
  `login` VARCHAR(90) NOT NULL ,
  `password` VARCHAR(90) NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `login_UNIQUE` (`login` ASC) ,
  UNIQUE INDEX `name_surname_UNIQUE` (`name` ASC, `surname` ASC) )
ENGINE = InnoDB;
 
/* Exemple d'insertion */
INSERT INTO `users` VALUES (null, 'Benjamin', 'Delespierre', 'benjamin.delespierre@gmail.com', 'bdelesp', md5('rouge'));
On stocke les mots de passe encodés en md5 afin qu'ils soient inutilisables par un tiers dans l'éventualité ou la base serait piratée (en réalité, il est possible de casser le md5 par brute force mais dans la pratique on considère cette solution comme suffisamment sécurisée).

Avec le code ci dessus, voici ce qu'on obtiens:
Code :
1
2
3
4
5
6
7
mysql> select * from users;
+----+----------+-------------+--------------------------------+---------+----------------------------------+
| id | name     | surname     | mail                           | login   | password                         |
+----+----------+-------------+--------------------------------+---------+----------------------------------+
|  1 | Benjamin | Delespierre | benjamin.delespierre@gmail.com | bdelesp | c6ea9af480ca35cb8ded3cb033937f58 |
+----+----------+-------------+--------------------------------+---------+----------------------------------+
1 row in set (0.02 sec)
2 - Coté PHP

En PHP, on va déterminer si l'utilisateur existe de cette façon:
Code :
$results = mysql_query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'");
Voici à quoi ça peut ressembler:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
// On va devoir manipuler des données de session
// cette fonction doit toujours être placé au 
// début du script PHP car elle manipule les 
// headers envoyés au navigateur
session_start();
 
if (isset($_POST['login'], $_POST['password'])) {
	// Un couple login/mdp à été passé au script
	// on va tenter de trouver l'utilisateur
	$connexion = mysql_connect('localhost', 'root', '');
 
	// On va filtrer les variables passées au script
	// pour éviter toute tentative d'injection SQL
	$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_MAGIC_QUOTES);
	$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_MAGIC_QUOTES);
 
	// On évite les données nulles ou invalides
	if (!$login || !$password)
		die('Login ou mot de passe incorrectement définis');
 
	// On encode le mot de passe en MD5 pour
	// établir la correspondance
	$password = md5($password);
 
	// Remplacer `test` par le nom de ta base de données
	// qui contiens la table users
	if (!$results = mysql_query($q = "SELECT * FROM `test`.`users` WHERE `login`='$login' AND `password`='$password'"))
		die('Erreur avec la requête: ' . $q);
 
	// Si un tuple (ligne) à été trouvé
	if (mysql_num_rows($results)) {
		// On va remplir l'index 'user' avec les données trouvées
		$_SESSION['user'] = mysql_fetch_assoc($results);
	}
	else {
	    // si on à trouvé personne avec ce couple, on affichera un message
		$message = "Utilisateur non trouvé";
	}
}
 
?>
<html>
	<head>
		<title>Page sécurisée</title>
	</head>
	<body>
		<!-- S'il y a un messages -->
		<?php if (isset($message)): ?>
		<p class="message"><?=$message?></p>
		<?php endif ?>
		<!-- Si l'utilisateur n'est pas authentifié, on le lui demande -->
		<?php if (empty($_SESSION['user'])): ?>
		<form method="post">
			<label for="login">Votre login</label><input type="text" name="login" id="login" />
			<label for="password">Votre mot de passe</label><input type="password" name="password" id="password" />
			<input type="submit" value="Se connecter" />
		</form>
		<!-- Si l'utilisateur est authentifié on lui dit bonjour -->
		<?php else: ?>
		<p>
			Bonjour <?=$_SESSION['user']['name']?> <?=$_SESSION['user']['surname']?>
		</p>
		<?php endif ?>
	</body>
</html>
Je mets le PHP en pièce jointe que tu puisse le lire correctement. Je pense qu'il est suffisamment explicite et documenté.

S'il y a des points mal compris, n'hésite pas.
Fichiers attachés
Type de fichier : php secured_page.php (2,2 Ko, 1 affichages)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/06/2011, 15h59   #8
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
Génial, c'est exactement ce que je recherche. En revanche, peut être que ma question va te paraitre ridicule mais : je mets où les infos de connexion à ma BDD MySql ?
Merci
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 16h10   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Le mieux c'est de les laisser en clair dans le code PHP, elle ne seront pas visible de l'exterieur. Une pratique courante consiste à créer un fichier centralisé pour la connection à la bdd (généralement appellé "connection.php") et inclus dans chaque script ayant besoin de communiquer avec la BDD.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 16h13   #10
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
D'accord, merci.
J'étais en train de travailler sur un scipt trouvé au hasard du web. Si je n'y arrive pas j'utilise ta méthode.
Merci
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h47   #11
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
Bon, ça fonctionne. Je suis gainé de ne pas avoir utilisé ta solution.
Pour info, j'ai utilisé ce script : http://www.bitrepository.com/ajax-login-form.html
Je penses qu'il est suffisant pour mon utilisation.

Le résultat : http://www.alodra.fr/prive/
id/pass : admin/admin

Merci pour la réactivité en tout cas ! Ca fait plaisir !
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 18h12   #12
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Juste au passage, sous chrome le CSS est mal géré ce qui implique un décalage de ton bouton "connexion".

Sinon bonne continuation dans ton projet.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 18h19   #13
Membre du Club
 
Inscription : novembre 2005
Messages : 179
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : novembre 2005
Messages : 179
Points : 60
Points : 60
Merci pour l'info !
Je n'ai pas encore validé ces pages là j'attends toujours le dernier moment sinon j'ai l'impression de ne pas avancer...
brisso est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h48.


 
 
 
 
Partenaires

Hébergement Web