begin process at 2012 02 15 21:36:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > ESPACE MEMBRES

ESPACE MEMBRES


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :7 109 / 858

Auteur : sylveur

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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

 Sources de la même categorie

Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip Source avec une capture CALENDRIER RÉSERVATION POUR CHAMBRES D'HÔTES EN PHP MYSQL par oallais
Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
FORM, ORM POUR FORMULAIRE par choy
Source avec Zip Source avec une capture LOGIN SHA1 + CRÉATION UTILISATEUR par aventurier19

Commentaires et avis

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.
++

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.

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

Commentaire de sylveur le 19/06/2005 14:46:41

merci j'ai modifier

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

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

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.

Commentaire de ImmortalPC le 20/06/2005 11:50:38

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

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...

Commentaire de ImmortalPC le 20/06/2005 13:10:43

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

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.

Commentaire de sylveur le 20/06/2005 17:54:39

isengard on se conner non? sur epiknet? non.

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.

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.....

Commentaire de coucou747 le 21/06/2005 11:16:11 administrateur CS

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 !!!

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 :)

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

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 ?

Commentaire de coucou747 le 22/06/2005 09:04:48 administrateur CS

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

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)

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 ?

Commentaire de coucou747 le 23/06/2005 13:31:45 administrateur CS

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 !

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 ?

Commentaire de coucou747 le 23/06/2005 16:40:34 administrateur CS

quels slashes de la requette ???

il n'y a aucun slashes dans une requettes !

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.

Commentaire de coucou747 le 24/06/2005 11:07:54 administrateur CS

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...

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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales