PHP et les Bases de données - Généralités



Documents pareils
PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Pratique et administration des systèmes

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

CREATION WEB DYNAMIQUE

Mysql avec EasyPhp. 1 er mars 2006

Olivier Mondet

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

PHP 4 PARTIE : BASE DE DONNEES

TD HTML AVEC CORRECTION

Attaques applicatives

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Installation d'un serveur FTP géré par une base de données MySQL

Le protocole FTP (File Transfert Protocol,

Configurer la supervision pour une base MS SQL Server Viadéis Services

Introduction. Passage de sites statiques à des sites dynamiques

Stockage du fichier dans une table mysql:

PHP 5. La base de données MySql. A. Belaïd 1

TP JAVASCRIPT OMI4 TP5 SRC

PDO : PHP Data Object 1/13

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

HTML, CSS, JS et CGI. Elanore Elessar Dimar

PROJET EVOLUTION GMSI

OpenPaaS Le réseau social d'entreprise

CREATION d UN SITE WEB (INTRODUCTION)

SUPPORT DE COURS / PHP PARTIE 3

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Ecriture d'un Plugin pour GLPI

Bases de SQL. Hacks 1-6 CHAPITRE UN

Cours Bases de données 2ème année IUT

Gestion de base de données

Formulaires et Compteurs

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Rapport d audit de sécurité

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Mysql. Les requêtes préparées Prepared statements

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Rapport de projet Site web pour une association

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Activités HTML. Code: act-html

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

PROMETHEE Guide d installation

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

Construire une base de donnée pour bibliothèque

Formulaire pour envoyer un mail

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

101 Réaliser et publier un site WEB

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

PROMETHEE Guide d installation

Notes de cours : bases de données distribuées et repliquées

CASE-LINUX MAIL - ROUNDCUBE

Mise en place d un serveur Proxy sous Ubuntu / Debian

PHP. PHP et bases de données

STID 2ème année : TP Web/PHP

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

SQL Historique

DOM - Document Object Model

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Introdution à PHP, MySQL et AJAX

I. MySQL : Serveur et SGBD

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Synchronisation Mysql (Replication)

Gestion de stock pour un magasin

ADF 2009 Sécurisation d applications PHP/MySQL

HTML/CSS - Travaux Pratiques 2

Installation et Mise en œuvre de MySQL

Présentation Windows Azure Hadoop Big Data - BI

Séance d ED n 5 : HTML et JavaScript

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

windows. deb etch main deb-src etch main

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

1. Base de données SQLite

SYSTEME de GESTION de BASE de DONNEES. Sommaire

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Module BD et sites WEB

Créer son propre serveur Mail.

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Open Source Job Scheduler. Installation(s)

Rapport SVA L.I.R.T/ESP 2008 RAPPORT SVA. Par: Jean François Diokel DIOKH. Professeur: M. OUYA. Jean François Diokel DIOKH 1

Introduction à MySQL (ou MySQL en 3 heures montre en main)

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Attaques de type. Brandon Petty

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Historisation des données

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Création d'une application WEB avec PHP / MySQL

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

GLPI OCS Inventory. 1. Prérequis Installer un serveur LAMP : apt-get install apache2 php5 libapache2-mod-php5 apt-get install mysql-server php5-mysql

Bases de données et sites WEB

Transcription:

PHP et les Bases de données - Généralités Conception d une base de données Méthodes utilisées : MERISE, UML Modèle conceptuel des données MCD, Modèle logique MLD, Modèle Physique MPD. Ces aspects seront abordés plus tard dans le cours Bases de données Création d une base de données et d une table Utiliser PHPMYADMIN pour créer une table user : Id_user, Login, pass, statut a) Création de la base de données TCRT

b) Création de la table users c) création des champs : id_users, login, pass, statut d) modification du champ pass : remplacer VARCHAR par PASSWORD si on veut crypter le mot de passe. Sélectionner l onglet INSERER pour remplir la table

e) Après validation

f) Affichage du contenu de la table users : onglet AFFICHER Requête SQL pour créer la base de données tcrt CREATE DATABASE tcrt ; Requête SQL pour créer la table users dans la base de données tcrt CREATE TABLE IF NOT EXISTS `users` ( `id_user` int(11) NOT NULL auto_increment, `login` varchar(50) NOT NULL, `pass` varchar(60) NOT NULL, `statut` enum('a','u') NOT NULL, PRIMARY KEY (`id_user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; Requête SQL pour insérer le contenu dans la table users dans la base de données tcrt INSERT INTO `users` (`id_user`, `login`, `pass`, `statut`) VALUES (1, 'admin', '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2', 'a'), (2, 'bob', '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2', 'u'); Requête SQL pour extraire le contenu de la table users Select * from users ; Utiliser la ligne de commandes pour gérer les bases de données

C:\xampp\mysql\bin>mysql -u root que user root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 5.0.51a Source distribution connexion en tant Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>use tcrt mysql>show tables tcrt mysql>select * from users ; users mysql>? mysql>quit sélection de la base tcrt affichage des tables de la base affichage du contenu de la table liste des commandes disponibles sortie de MySQL Utilisation de MySQL avec PHP Connexion à Mysql en PHP sur la base tcrt : connexion.php //variables $serveur_db = "localhost"; $user_db = "root"; $pass_db = ""; $base_db = "tcrt"; serveur MySQL utilisateur MySQL par défaut(admin) mot de passe de root par défaut choix de la base de donnée //1- connection au serveur Mysql $con = mysql_connect($serveur_db, $user_db, $pass_db); if(!$con){ echo 'Echec serveur Contactez le Webmaster'; exit(); //2- choix de la base $db = mysql_select_db($base_db)

or die('echec base Contactez le Webmaster'); Exploitation de la base de donées tcrt, requêtes sur la table users : bdd.php require_once('connexion.php'); $query='select * from users'; $result=mysql_query($query); if (mysql_num_rows($result) > 0){ echo '<table>'; while($row=mysql_fetch_assoc($result)){ echo '<tr>'; foreach ($row as $key=>$value){ echo '<td>'.$value.'</td>'; echo '</tr>'; echo '</table>'; else { echo '<h1>erreur</h1>'; EXEMPLE Base de données : TCRT Table :Users CREATE TABLE IF NOT EXISTS `users` ( `id_user` int(11) NOT NULL auto_increment, `login` varchar(50) NOT NULL, `pass` varchar(80) NOT NULL, `statut` enum('a','u') NOT NULL, PRIMARY KEY (`id_user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -- Contenu de la table `users` -- INSERT INTO `users` (`id_user`, `login`, `pass`, `statut`) VALUES (1, 'admin', '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2', 'a'), (2, 'bob', '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2', 'u'), (3, 'bill', '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2', 'u');

Connexion.php //variables $serveur_db = "localhost"; $user_db = "root"; $pass_db = ""; $base_db = "tcrt"; //1- connexion au serveur //************************** $con = mysql_connect($serveur_db, $user_db, $pass_db); if(!$con){ echo 'Echec serveur Contactez le Webmaster'; exit(); //2- choix de la base //************************** $db = mysql_select_db($base_db) or die('echec base Contactez le Webmaster'); Bd.php require_once('connexion.php'); $query="select * from users"; $result=mysql_query($query); if (mysql_num_rows($result) > 0){ echo '<table border=1>'; while($row=mysql_fetch_assoc($result)){ echo "<pre>"; print_r($row); echo '<tr>'; foreach ($row as $key=>$value){ echo '<td>'.$value.'</td>'; echo '</tr>'; echo '</table>'; else { echo '<h1>erreur</h1>';

Gestion des utilisateurs de MySQL Pour se connecter sur un serveur MySQL, il faut fournir un compte utilisateur existant dans la base de comptes. Par défaut le compte existant est root, sans mot de passe. C est l administrateur. Pour des questions de sécurité, il est préférable de créer un compte utilisateur en lui affectant des droits(privilèges) sur les base et les tables. Privilèges utilisateurs Tables mysql.user, mysql.db, mysql.tables_priv, mysql.columns_priv Si on affecte les privilèges ON *.* : Y sera écrit dans la table USER

Si on affecte les privilèges ON base.* : Y écrit dans DB Si on affecte les privilèges ON base.table : Y écrit dans TABLES_PRIV Si on affecte les privilèges ON base.table + (champs) : Y écrit dans COLUMNS_PRIV Attribution des privilèges en ligne de commande GRANT priv_type [(column_list)] [, priv_type [(column_list)]]... ON [object_type] {tbl_name * *.* db_name.* TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']]... [REQUIRE NONE [{SSL X509] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option]...] Connexion à mysql : mysql u <user> -p -h <hostname hostaddres> Un user est caractérisé par : nom, mot de passe, host. Lorsqu on crée le user on crée également le host sur lequel il se connecte : localhost, adresseip, nom dns. Cette information est écrite dans la table user. Cas particulier : localhost ne met pas en jeu le protocole TCP/IP, mais les named pipes. Lors de la connexion, on peut préciser h suivi du nom du serveur MySQL. mysql> grant select ON *.* to 'bob'@'192.160.0.%' identified by 'toto'; Ici bob peut se connecter avec le mot de passe toto à partir du sous-réseau 192.168.0.0 avec le privilège SELECT sur toutes les bases et toutes les tables Contenu de la table mysql.user Root équivalent à partir de n importe quel host: mysql> grant all on *.* to 'admin'@'%' identified by toto' with grant option;

Connexion sécurisée et gestion des sessions Index.php $erreur = isset($_get['erreur'])? $_GET['erreur'] : "" ; <html> <head><title>identification</title> <style type="text/css"> </style> </head> <body> <form action="login.php" method="post"> <table border="1" align="center" cellpadding="3" cellspacing="0"> <tr><th colspan="2">authentification</th></tr> <tr> <th >Login : </th> <td><input name="login" type="text" id="login" value="" /></td> </tr> <tr> <th >Mot de passe : </th> <td><input name="pass" type="password" id="pass" value="" /></td> </tr> <tr> <td colspan="2"> switch ($erreur) { case 1: echo "<center><font color='red'>login ou mot de passe incorrect</font></center>"; break; case 2: echo "<center><font color='red'>veuillez vous connecter d'abord!</font></center>"; break; default: break; </td> </tr> <tr> <th colspan="2" > <input type="submit" name="submit" value="envoyer" /></th> </tr> </table> </form> </body> </html> Login.php require_once('connexion.php'); $login = isset($_post['login'])? $_POST['login'] : "" ; $pass = isset($_post['pass'])? $_POST['pass'] : "";

$query = "select * from users where login='$login' and pass=password('$pass') "; $result = mysql_query($query); if (mysql_num_rows($result) > 0){ $tmp = mysql_fetch_assoc($result); mysql_close(); //cookie /*setcookie("login", $login, time()+(4*3600)); setcookie("pass", $pass, time()+(4*3600));*/ //session session_start(); $_SESSION['login']='ok'; $_SESSION['id_user']=$tmp['id_user']; $_SESSION['statut']=$tmp['statut']; $_SESSION['nom']=$tmp['login']; C:\xampp\tm p header('location: accueil.php'); login s:2:"ok";id_user s:1:"2";statut s:1:"u";nom s else { :3:"bob";5:"admin"; //echec header('location: index.php?erreur=1'); exit(); Accueil.php include('sessionverif.php'); //reception de variables, chargement d'un en-tête include('header.php'); include ('footer.php'); Sessionverif.php //vérification si session en cours session_start(); if(!isset($_session['login']) OR $_SESSION['login']!='ok'){ header("location: index.php?erreur=2"); exit(); Header.php

$statut = isset($_session['statut'])? $_SESSION['statut'] : ""; <html> <head> <title>bienvenue</title> <style type="text/css" media="all"> #lignemenu{ float:left; background-color:blue; width:100%; color:white; #lignemenu.droite{ float:right; text-align:right; margin-right:10px; font-family:"trebuchet MS"; #lignemenu.gauche{ float:left; text-align:center; font-family:"trebuchet MS"; text-decoration:none; color:white; margin-left:30px; a { color:white; text-decoration:none; #lienbandeau{ text-decoration:none; color:yellow; #bandeau img{ width:100%; body { margin-left: 0px; margin-top: 0px; margin-right:0px; </style> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"></head> <body> <div id="bandeau" ><img src="bandeau.jpg"></div> <div id="lignemenu"> <div class="droite">

</div> echo $_SESSION['nom'].' connecté. session id : '.session_id().' - <a id="lienbandeau" href="finsession.php">déconnexion</a>'; <div class="gauche"> </div> switch($statut) { case "a" : include('menuadmin.php'); break; case "u" : include('menu.php'); break; </div> Menu.php <a href="accueil.php" >Accueil</a> <a href="productlist.php" >Catalogue</a> <a href="sessionview.php" >Voir mon Panier</a> <a href="commandeview.php" >Voir mes commandes</a> Menuadmin.php <a href="accueil.php" >Accueil</a> <a href="productlist.php" >Catalogue</a> <a href="ajoutproduits.php" >Ajout de Produit</a> <a href="sessionview.php" >Voir mon Panier</a> <a href="commandeview.php" >Voir mes commandes</a> Footer.php </body> </html>