Aide pour un site en php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide pour un site en php

par wolverine » 01 juin 2005, 22:54

lol moi j'ai acheter PHP debutant...c'est très bien :lol:

par Cyrano » 30 mai 2005, 21:39

Bon, pour la validation, voilà un exemple complet et commenté ICI

par collaud » 30 mai 2005, 21:30

<?php 
/*On vérifie si le bouton [Ok] du formulaire d'identification a été cliqué */
if(isset($_POST['ok'])) 
{ 
    /* Le bouton a été cliqué, on traite les informations: d'abord, récupération des informations. */ 
    $CodeClient = $_POST['CodeClient']; 
    $MotPasse =   $_POST['MotPasse']; 
    /* Vérification que les valeurs ne sont pas vides */ 
    if($CodeClient == "" || $MotPasse == "") 
    { 
        /* Au moins une des deux valeurs sont vides, on traite chaque cas individuellement et on met le message d'erreur */ 
    } 
    else 
    { 
        /* Les valeurs sont valides, on va chercher une correspondance dans la base */ 
    } 
} 
else 
{ 
    /* Le bouton n'a pas été cliqué, on fait l'affichage normal de la page */ 
?> 
<!-- Code de ta page --> 
<?php 
}
je pense que c'est à cause du 1er commentaire que ça a merdé...j'ai corrigé en haut, mais à la fin du script, y a nouveau une erreur de synthaxe et je vois pas comment tu voulais faire Cyrano ?

par titinette » 30 mai 2005, 21:20

z y arrive pas :(
mais merci qd meme pr les indications...

par Cyrano » 30 mai 2005, 19:34

Ok, alors à partir de là, ça va se passer lors de la validation du code.

Tu peux avoir un fichier à part ou faire dans la même page. La première chose, c'est de récupérer les valeurs du formulaire et de vérifier qu'elles ne sont pas vides : ensuite, si tout est valide, il faut faire une requête de vérification dans la base de données pour savoir si ces données existent.

Lors de la requête, tu devras chercher le statut du visiteur. Si le visiteur est reconnu comme client, tu fais une rediraection vers la page x, s'il est reconnu comme admin, tu fais une redirection vers la page y

Ça c'était le schéma, maintenant la pratique, ton code doit se trouver tout en haut de ta page.
<?php
On vérifie si le bouton [Ok] du formulaire d'identification a été cliqué
if(isset($_POST['ok']))
{
    /* Le bouton a été cliqué, on traite les informations: d'abord, récupération des informations. */
    $CodeClient = $_POST['CodeClient'];
    $MotPasse =   $_POST['MotPasse'];
    /* Vérification que les valeurs ne sont pas vides */
    if($CodeClient == "" || $MotPasse == "")
    {
        /* Au moins une des deux valeurs sont vides, on traite chaque cas individuellement et on met le message d'erreur */
    }
    else
    {
        /* Les valeurs sont valides, on va chercher une correspondance dans la base */
    }
}
else
{
    /* Le bouton n'a pas été ciqué, on fait l'affichage normal de la page */
?>
<!-- Code de ta page -->
<?php
}
Voilà, c'est le squelette, je te laisse avancer un peu par toi-même. Je te recommande pour des questions de facilité de faire une validation du formulaire en JavaScript pour vérifier qu'on envoie pas un formulaire vide, même si tu en fais une autre en PHP. Si tu limites au PHP, les messages d'erreur devront être dans des variables qu'il faudra afficher avec le formulaire mais pas directement depuis la partie validation. Ceci à cause de la redirection. C'est difficile de t'expliquer tout ça, j'espère que tu as quand même une idée générale de l'ensemble.

par titinette » 30 mai 2005, 19:16

g readapter ton code avec mes champs:
<form name="form1" method="post" action="">
Login:
<input name="CodeClient" type="text">
<br>
Mot de passe:
<input name="MotPasse" type="password" size="20">
<br>
<input type="submit" id="ok" name="ok" value="Ok">
</form>
comment je peux faire pour qd je clik sur ok:
si client: je vai a la page yyy.php
et si admin, ouvrir une autre page xxx.php.
merci

par titinette » 30 mai 2005, 19:08

Excellent :)
Alors voici une ligne à ajouter à une des tables:

Code : Tout sélectionner

ALTER TABLE `client` ADD `clt_acces` ENUM( 'admin', 'client' ) DEFAULT 'client';
Ça va rajouter un champ permettant d'identifier le statut du visiteur : client ou admin

Partant de là, quand le visiteur s'identifie, tu pourras simplement tester la valeur enregistrée et définir ce que tu affiches ou non, par exemple tu pourras faire afficher un lien vers la panneau de contrôle administratif si le visiteur est identifié comme "admin" et rien sinon.

Par défault à l'enregistrement, un nouveau aura le statut de "client" si tu ne le précises pas dans la requête d'insertion. Je n'ai mis que deux valeurs possibles, libre à toi d'avoir d'autres niveaux intermédiaires.
c trop fort!! merci pr le code!!
ca marche, of course!
merci merci merciiiiiiiiiiiiiiiiiiiiiiii

par Cyrano » 30 mai 2005, 18:51

Excellent :)
Alors voici une ligne à ajouter à une des tables:

Code : Tout sélectionner

ALTER TABLE `client` ADD `clt_acces` ENUM( 'admin', 'client' ) DEFAULT 'client';
Ça va rajouter un champ permettant d'identifier le statut du visiteur : client ou admin

Partant de là, quand le visiteur s'identifie, tu pourras simplement tester la valeur enregistrée et définir ce que tu affiches ou non, par exemple tu pourras faire afficher un lien vers la panneau de contrôle administratif si le visiteur est identifié comme "admin" et rien sinon.

Par défault à l'enregistrement, un nouveau aura le statut de "client" si tu ne le précises pas dans la requête d'insertion. Je n'ai mis que deux valeurs possibles, libre à toi d'avoir d'autres niveaux intermédiaires.

par titinette » 30 mai 2005, 18:25

voila mon code sql:

#
# Structure de la table `categorie`
#

DROP TABLE IF EXISTS `categorie`;
CREATE TABLE `categorie` (
`cat_code` char(3) NOT NULL default '',
`cat_libelle` varchar(50) default NULL,
PRIMARY KEY (`cat_code`)
) TYPE=MyISAM;

#
# Contenu de la table `categorie`
#

INSERT INTO `categorie` VALUES ('sou', 'Souris');
INSERT INTO `categorie` VALUES ('cla', 'Clavier');
INSERT INTO `categorie` VALUES ('web', 'Webcam');
INSERT INTO `categorie` VALUES ('ecr', 'Ecran');
INSERT INTO `categorie` VALUES ('imp', 'Imprimante');
INSERT INTO `categorie` VALUES ('sca', 'Scanner');


# --------------------------------------------------------

#
# Structure de la table `client`
#

DROP TABLE IF EXISTS `client`;
CREATE TABLE `client` (
`clt_code` varchar(5) NOT NULL default '',
`clt_nom` varchar(30) default NULL,
`clt_adresse` varchar(50) default NULL,
`clt_tel` varchar(20) default NULL,
`clt_email` varchar(50) default NULL,
`clt_motPasse` varchar(10) default NULL,
PRIMARY KEY (`clt_code`)
) TYPE=MyISAM;

#
# Contenu de la table `client`
#

INSERT INTO `client` VALUES ('c0001', 'Dupont', '12, rue haute 75001 Paris', '01 05 22 35 97', '[email protected]', 'aaa');
INSERT INTO `client` VALUES ('c0002', 'Dubois', '4, bld d\'Alsace 75002 Paris', '01 44 97 62 54', '[email protected]', 'bbb');
INSERT INTO `client` VALUES ('c0003', 'Durand', '5, allée des Ifs 80000 Amiens', '03 22 79 64 56', '[email protected]', 'ccc');

# --------------------------------------------------------

#
# Structure de la table `commande`
#

DROP TABLE IF EXISTS `commande`;
CREATE TABLE `commande` (
`cde_moment` varchar(20) NOT NULL default '',
`cde_client` varchar(5) NOT NULL default '',
`cde_date` date default NULL,
PRIMARY KEY (`cde_moment`,`cde_client`)
) TYPE=MyISAM;

#
# Contenu de la table `commande`
#

INSERT INTO `commande` VALUES ('10/02/04 16:04:05', 'C0001', '0000-00-00');
INSERT INTO `commande` VALUES ('10/02/04 17:52:23', 'c0002', NULL);
INSERT INTO `commande` VALUES ('13/04/04 16:40:02', 'c0001', NULL);
INSERT INTO `commande` VALUES ('13/04/04 16:45:11', 'c0002', NULL);

# --------------------------------------------------------

#
# Structure de la table `contenir`
#

DROP TABLE IF EXISTS `contenir`;
CREATE TABLE `contenir` (
`cde_moment` varchar(20) NOT NULL default '',
`cde_client` varchar(5) NOT NULL default '',
`produit` char(3) NOT NULL default '',
`quantite` smallint(6) default NULL,
PRIMARY KEY (`cde_moment`,`cde_client`,`produit`)
) TYPE=MyISAM;

#
# Contenu de la table `contenir`
#

INSERT INTO `contenir` VALUES ('10/02/04 16:04:05', 'C0001', 'c02', 1);
INSERT INTO `contenir` VALUES ('10/02/04 17:52:23', 'c0002', 'e02', 1);
INSERT INTO `contenir` VALUES ('10/02/04 17:52:23', 'c0002', 'w01', 1);
INSERT INTO `contenir` VALUES ('13/04/04 16:40:02', 'c0001', 's04', 1);
INSERT INTO `contenir` VALUES ('13/04/04 16:45:11', 'c0002', 'sc01', 1);

# --------------------------------------------------------

#
# Structure de la table `panier`
#

DROP TABLE IF EXISTS `panier`;
CREATE TABLE `panier` (
`numligne` int(11) NOT NULL auto_increment,
`pdt_ref` char(3) NOT NULL default '',
`quantite` smallint(6) NOT NULL default '0',
PRIMARY KEY (`numligne`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

#
# Contenu de la table `panier`
#


# --------------------------------------------------------

#
# Structure de la table `produit`
#

DROP TABLE IF EXISTS `produit`;
CREATE TABLE `produit` (
`pdt_ref` char(3) NOT NULL default '',
`pdt_designation` varchar(50) default NULL,
`pdt_prix` float default NULL,
`pdt_image` varchar(50) default NULL,
`pdt_categorie` char(3) default NULL,
PRIMARY KEY (`pdt_ref`)
) TYPE=MyISAM;

#
# Contenu de la table `produit`
#

INSERT INTO `produit` VALUES ('i01', 'Imprimante jet d encre couleur - Legal, A4 - 2400 x 1200 ppp - 14 ppm (mono) / 8 ppm (couleur) – USB', '99', 'imprimante_jet_d_encre', 'imp');
INSERT INTO `produit` VALUES ('i02', 'Imprimante laser couleur - laser - Legal - 600 ppp x 600 ppp - 16 ppm (mono) / 4 ppm (couleur)', '115', 'imprimante_laser', 'imp');
INSERT INTO `produit` VALUES ('sc01', 'Scanner à plat - 216 x 297 mm - 1200 x 1200 ppp – USB', '99', 'scanner', 'sca');
INSERT INTO `produit` VALUES ('s01', 'Souris optomécanique filaire - 3 boutons dont la molette - PS/2 - Windows 98/NT 4.0/2000/Me/XP', '15', 'souris_filaire', 'sou');
INSERT INTO `produit` VALUES ('s02', 'Souris optique filaire - PS/2 - 3 boutons dont la molette - Windows 95/98/ME/2000/XP/NT ', '32', 'souris_optique_filaire', 'sou');
INSERT INTO `produit` VALUES ('s03', 'Souris optomécanique sans fil + son récepteur USB - 5 boutons dont la molette - USB et PS/2 - 2 piles AA - Windows 98SE/2000/ME/XP', '39', 'souris_sans_fil', 'sou');
INSERT INTO `produit` VALUES ('s04', 'Souris optique sans fil + 1 dongle-récepteur - USB - 3 boutons dont la molette - Windows 98SE/2000/ME/XP', '140', 'souris_optique_sans_fil', 'sou');
INSERT INTO `produit` VALUES ('w01', 'Webcam numérique - CMOS - 352 x 288 - 30 images/seconde - USB - Windows 98/ME/2000/XP', '55', 'webcam', 'web');
INSERT INTO `produit` VALUES ('w02', 'Webcam + appareil photo numérique - 640 x 480 - 350 000 pixels - Mémoire interne de 8 Mo - jusqu’à 400 photos - USB - Pas de perte de photos pendant le changement de piles - Windows 98/ME/2000/XP ', '119', 'webcam_appareil_photo_numerique', 'web');
INSERT INTO `produit` VALUES ('e01', 'Ecran CRT 17 pouces - Pas de masque : 0.28mm - Résolution max : 1280 x 1024 ', '229', 'ecran', 'ecr');
INSERT INTO `produit` VALUES ('e02', 'TFT LCD 17 pouces multimedia - 1024 x 768 - 75 Hz - 0.297 mm ', '479', 'ecran_plat', 'ecr');
INSERT INTO `produit` VALUES ('c01', 'Clavier multimédia standard - 109 touches - PS/2 - Windows 95/98/2000/ME/XP ', '19', 'clavier', 'cla');
INSERT INTO `produit` VALUES ('r03', 'Clavier sans fil –- Windows Mac - Port USB et PS/2', '79', 'clavier_sans_fil', 'cla');

par Cyrano » 30 mai 2005, 18:16

C'est pour ça que je te demandais la structure de la table dans ta base de données : ça permettra de te donner des réponses plus précises et on parlera de la même chose.

par fab » 30 mai 2005, 18:12

en général ces informations sont marqués dans la ou les tables sql qui contiennent le pseudo/pass du membre

par titinette » 30 mai 2005, 18:09

ok , merci pour le conseil et surtt pour l aide!!!
l année prochaine je reviendrai en pro grace a toi! lol
mais en attendant , il faut que je termine ce pojet... :(

une autre petite question, comment sait on une fois le login et mot de passe saisie que c un clients ou admin? merci

par Cyrano » 30 mai 2005, 17:56

Bon, alors si tu débutes autant en HTML qu'en PHP, je te recommande de commencer par faire du HTML (AU BLOC-NOTE) pour faire des pages valides et comprendre la structure d'une page HTML.

Quand tu auras assimilé les bases fondamentales, attaques-toi au PHP ensuite.

Si tu essayes d'aborder les deux en même temps, tu cours au casse-pipe. On aura beaucoup de mal à t'aider efficacement. Et si tu peux, achète toi quelques bouquins sur le HTML et le PHP en option mais c'est moins urgent.

par titinette » 30 mai 2005, 17:49

oui faut bien commencer un jour :(
je v tester

par Cyrano » 30 mai 2005, 17:40

À première vue, tu ne débute pas juste en PHP: le HTML est aussi une nouveauté pour toi ???
<form name="form1" method="post" action="">
Login:
<input name="" type="text"><br>
Mot de passe:
<input name="" type="password"><br>
<input type="submit" id="ok" name="ok" value="Ok">
</form> 
Dans l'ensemble oui, c'est ça. Mais j'ai mis ça en un seul formulaire et rajouté le bouton d'envoi.