Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ESPACE MEMBRES


Information sur la source

Catégorie :Formulaires Niveau : Débutant Date de création : 19/06/2005 Date de mise à jour : 19/06/2005 20:22:18 Vu / téléchargé: 5 915 / 750

Note :
1,88 / 10 - par 8 personnes
1,88 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

Description

bon je débute mai voila une source simple. dite moi touts vos criter
 

Source

  • //MYSQL la table a crée
  • CREATE TABLE tbl_user (
  • id int(11) NOT NULL auto_increment,
  • pseudo varchar(63) NOT NULL,
  • login varchar(8) NOT NULL,
  • pwd varchar(32) NOT NULL,
  • PRIMARY KEY (id),
  • KEY ID_2 (id)
  • );
  • //LOGIN.HTM
  • <form action="login.php" method='post'>
  • <table align="center" border="0">
  • <tr>
  • <td>Login :</td>
  • <td><input type="text" name="login" maxlength="250"></td>
  • </tr>
  • <tr>
  • <td>Password</td>
  • <td><input type="password"name="pass" maxlength="10"></td>
  • </tr>
  • <tr>
  • <td colspan="2" align="center"><input type="submit" value="log in"></td>
  • </tr>
  • </table>
  • </form>
  • //LOGIN.PHP
  • <?
  • // pensez a ouvrir une connexion vers mysql ici
  • if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  • extract($_POST);
  • // on recupère le password de la table qui correspond au login du visiteur
  • $sql = 'select pwd from tbl_user where login=\'' . $login . '\'';
  • $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  • $data = mysql_fetch_assoc($req);
  • $pass = md5( $pass );
  • if($data['pwd'] != $pass) {
  • echo '<p>Mauvais login / password. Merci de recommencer</p>';
  • include('login.htm'); // On inclus le formulaire d'identification
  • exit;
  • }
  • else {
  • session_start();
  • $_SESSION['login'] = $login;
  • echo 'Vous etes bien logué';
  • // ici vous pouvez afficher un lien pour renvoyer
  • // vers la page d'accueil de votre espace membres
  • }
  • }
  • else {
  • echo '<p>Vous avez oublié de remplir un champ.</p>';
  • include('login.htm'); // On inclut le formulaire d'identification
  • exit;
  • }
  • ?>
  • //VERIF.PHP
  • <?
  • session_start();
  • /*
  • si la variable de session login n'existe pas cela siginifie que le visiteur
  • n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
  • acceder à l'espace membres
  • */
  • if(!isset($_SESSION['login'])) {
  • echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
  • include('login.htm');
  • exit;
  • }
  • ?>
//MYSQL la table a crée


CREATE TABLE tbl_user (
   id int(11) NOT NULL auto_increment,
   pseudo varchar(63) NOT NULL,
   login varchar(8) NOT NULL,
   pwd varchar(32) NOT NULL,
   PRIMARY KEY (id),
   KEY ID_2 (id)
);



//LOGIN.HTM

<form action="login.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="password"name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form> 




//LOGIN.PHP

<?
// pensez a ouvrir une connexion vers mysql ici

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = 'select pwd from tbl_user where login=\'' . $login . '\'';
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  $pass = md5( $pass );
  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.htm'); // On inclus le formulaire d'identification
    exit;
  }
  else {
    session_start();
    $_SESSION['login'] = $login;
    
    echo 'Vous etes bien logué';
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres 
  }    
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.htm'); // On inclut le formulaire d'identification
   exit;
}


?>



//VERIF.PHP

<?
session_start();

/* 
si la variable de session login n'existe pas cela siginifie que le visiteur 
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
  include('login.htm');
  exit;
}
?>

Conclusion

cette source et débutant.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

19 juin 2005 11:22:56 :
oubli de } dans login .PHP
19 juin 2005 11:25:32 :
dsl je débute on faits tous des érreurs
19 juin 2005 14:45:59 :
j'ai changer tous se que vous maver dit merci. je débute. comme je dit. donc je mi conner pas trop en cookies ou autre qui pourai m'aider. c'est juste une source que je me fait mai je la mai issi pour que vous m'aider est qui peus servir . merci a vous
19 juin 2005 20:22:18 :
voila remodifier

Commentaires et avis

signaler à un administrateur
Commentaire de GoW le 19/06/2005 13:27:27

Lut sylveur.
J'ai remarqué une erreur dans verif.php ainsi que dans login.php:
Tu mets include('login.htm') alors que tu as nommé ta page en réalité 'login.html'.
Rien de grave ;).
Sinon je trouve le script un peu simpliste tu aurais pu mettre plus de chose une page affichant les membres, différents niveaux pour l'aministration etc ...
Je te souhaites une bonne continuation.
++

signaler à un administrateur
Commentaire de FhX le 19/06/2005 13:43:51

"extract($_POST);"
Rien que ca, ca me fait frémir. Enfin bon...

"$sql = "select pwd from tbl_user where login='".$login."'";" Pourquoi ne pas faire directement :
$sql = "SELECT COUNT(*) FROM tbl_user WHERE login='".$login."' AND pwd = '".$pwd."' ")
?

Ensuite, jcomprend pas pourquoi les gens se font chier avec leurs "exit" à tout va. En plus, y'a de gros trou de sécurité avec $login et $pwd.

Reste encore un tas de truc à faire.

signaler à un administrateur
Commentaire de coockiesch le 19/06/2005 14:28:35

Salut!
QQ comments par rapport à ta table:
# CREATE TABLE tbl_user (
#    id int(11) NOT NULL auto_increment,
#    pseudo varchar(63) NOT NULL,
#    login varchar(8) NOT NULL,
#    pwd varchar(8) NOT NULL,
#    PRIMARY KEY (id),
#    KEY ID_2 (id)
# );

* Ca peut être pas mal d'utiliser id en unsigned
* Pk 63 pour le pseudo, pk pas 64?
* Pour ce qui est du password, normalement on utilise VARCHAR( 32 ). L'intérêt est d'utiliser la fonction md5 pour hasher les pass. Et la fonction md5 renvoie une chaîne de 32 caractères. Donc tu hash les pass lors de l'insertion dans la base. Quand un user veut se loger, tu hash son pass et tu compare avec ce qui est dans la base...

$sql = "select pwd from tbl_user where login='".$login."'";
Les " " sont plus lents que ' ' mais permettent l'inteprétation tu code ( echo "variable vaut: $variable"; ). Si tu utilise " ", autant utiliser cette possibilité, donc soit:
$sql = "select pwd from tbl_user where login='$login'";
Ou bien ( je préfère ):
$sql = 'select pwd from tbl_user where login=\'' . $login . '\'';

@++

R@f

signaler à un administrateur
Commentaire de sylveur le 19/06/2005 14:46:41

merci j'ai modifier

signaler à un administrateur
Commentaire de coockiesch le 19/06/2005 15:15:03

Cool!
Faut pas oublier de hasher les pass à l'insertion et lors du etst:
avant:
if($data['pwd'] != $pass)
Mettre:
$pass = md5( $pass );

Je pense à d'autres trucs, :D
- <?php mieux que <? ( au niv de la portabilité entre serveurs )
- un addslashes sur le $login est nécessaire si tu comptes autoriser les ' dans les pseudos...

@++

R@f

signaler à un administrateur
Commentaire de sylveur le 19/06/2005 20:23:36

je voulai savoir commen métre des cookies et un access multiple user bien mieux que mon ta de boue. merci

signaler à un administrateur
Commentaire de Isengard le 20/06/2005 09:24:44

Oublie les cookies, certaines personnes ne les accepte pas, utilise plutot les sessions comme dans ta source :)

Sinon au niveau du code ben trop rien à redire sauf que ca pourait être un tit peu amelioré... Au niveau de cette ligne :
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

C'est bien pour le développement mais pour la mise en ligne, faudrait mieux eviter de mettre mysql_error() car ça peut retourner des trucs confidentiels (noms de champs, structure de la base etc...)

Un autre ptit truc, je sais pas vous mais moi les includes ca me plait pas de trop :/ A la limite il faut mieux une page distincte avec un redirection vers chaque plutot que des includes. Je pense qu'au code et à la securité ca change rien, mais ce serait sans doute plus pratique à long terme.

signaler à un administrateur
Commentaire de ImmortalPC le 20/06/2005 11:50:38

Salut,
c'est quoi cette fonction extract($_POST); ????
elle sert à quoi ?
@+

signaler à un administrateur
Commentaire de Isengard le 20/06/2005 12:19:39

extract() ça sert à sortir les données d'un tableau
Avec extract($_POST); ca donne
$_POST['champ1'] devient $champ1
$_POST['champ2'] devient $champ2
etc...

signaler à un administrateur
Commentaire de ImmortalPC le 20/06/2005 13:10:43

Merci pour la réponce.
C'est pourris, non ?
@+

signaler à un administrateur
Commentaire de FhX le 20/06/2005 13:29:21

Ca relance les trous de sécurités... sans plus !

Après, pour répondre à Isengard, faire des header('Location:xxx.php') revient à quasiment la même chose, si ce n'est que sur chaque page, tu dois appeler les en-tête de page. Alors qu'avec un include, tu peux te permettre de les oublier, vu que tout est géré par un seul fichier maitre.
Niveau sécurité, suffit de faire un isset, suivi d'un switch.. et ca marche d'un coup.

signaler à un administrateur
Commentaire de sylveur le 20/06/2005 17:54:39

isengard on se conner non? sur epiknet? non.

signaler à un administrateur
Commentaire de massacr le 20/06/2005 18:01:01

Les cookies ? Meme si certaines personnes ne les acceptent pas, c'est utile, mais à coupler avec les sessions. Donc, juste pour ne plus avoir à se loguer.

Sinon, la source n'est pas très complexe et serait plus à sa place dans le forum, avec une question que dans une source.

signaler à un administrateur
Commentaire de OniTalus le 20/06/2005 19:17:57

Je sais pas pourquoi, mais j'ai une impression de deja vu dans un tuto.....

signaler à un administrateur
Commentaire de coucou747 le 21/06/2005 11:16:11

PAGE LOGIN.PHP

  $sql = 'select pwd from tbl_user where login=\'' . $login . '\'';

mon login sera :
';DROP DATABASE tbl_user;CREATE DATABASE moi;USE moi;CREATE TABLE crack(texte TEXT);INSERT INTO crack SET texte='AH AH AH AH AH, comment je t\'ai bien eu !!!

signaler à un administrateur
Commentaire de FhX le 21/06/2005 13:55:36

C'est bien pour ca qu'on dit que c'est simpliste depuis le début :)

signaler à un administrateur
Commentaire de sylveur le 21/06/2005 16:11:21

je suis dsl pour vous je suis débutan, ma premier source. mai merci pour vos remarque

signaler à un administrateur
Commentaire de massacr le 21/06/2005 16:50:01

lol Coucou747 !! C'est vrai que c'est dangereux. Dans mon éditeur de blog, j'ai interdit tout les caractères qui ne sont pas des lettres dans le login. Mais c'est contraingnant. Y a t-il une meilleure solution ?

signaler à un administrateur
Commentaire de coucou747 le 22/06/2005 09:04:48

utiliser une fonction mysql qui le fait... il y a aussi addslashes

signaler à un administrateur
Commentaire de Isengard le 22/06/2005 10:38:35

Sylveur je crois pas epiknet c'est pas mon réseau

Mais comme l'a dit Massacr les cookies c'est parfois utile mais pas dans ce genre de cas ! C'est utile pour les informations qui doivent durer (le fait d'avoir voté à un sondage par exemple)

signaler à un administrateur
Commentaire de massacr le 22/06/2005 12:14:24

addslaches, je connais. Mais ca peut quand meme faire bugger MySQL (je fais mes requetes comme ceci : "INSERT INTO `libr_config` (login,email,mdp,titrsite,chemin,nom_base) VALUES (\"$login\",\"$email\",\"$mdp_md5\",\"$message136\",\"$chemin\",\"$nom_bdd\")").

Qu'elle fonction mySQL peut corriger ca ?

signaler à un administrateur
Commentaire de coucou747 le 23/06/2005 13:31:45

lol
le addslashes ne doit pas se faire sur la requette entière, on ne le fait que sur les variables... si on ne pouvait pas parer cette faille, mysql serait mort !

signaler à un administrateur
Commentaire de massacr le 23/06/2005 15:42:48

Oui évidemment. Mais si je rajoute des slashes dans les variables, ne vont-ils pas interagir avec ceux de la requete ?

signaler à un administrateur
Commentaire de coucou747 le 23/06/2005 16:40:34

quels slashes de la requette ???

il n'y a aucun slashes dans une requettes !

signaler à un administrateur
Commentaire de dto le 24/06/2005 10:33:20

mysql_escape_string()
va protéger tous les caractères de la chaîne unescaped_string, pour pouvoir l'utiliser directement dans une requête mysql_query(). Elle retourne la chaîne modifiée.

signaler à un administrateur
Commentaire de coucou747 le 24/06/2005 11:07:54

elles font en fait la même chose, sauf qu'aves mysql_escape_string, c'est le serveur mysql qui va bosser, alors qu'avec addslashes, c'est  le serveur apache (php) qui fera le travail...

signaler à un administrateur
Commentaire de ehectsamira le 11/07/2005 18:33:27

salut
j'ai pas bin compris pwd a quoi sert c'est une base ou quoi

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Appels d'offres



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.