Débutant, questions générales (pas de demande de script) [Résolu]

jnscr - 10 août 2012 à 20:38 - Dernière réponse :  jnscr
- 18 août 2012 à 09:42
Bonjour tout le monde.

Récemment inscrit, je suis à la recherche d'informations d'ordre général.
J'ai cru comprendre que les messages du type "je veux ça" c'est un peu mal vu. Ce n'est pas ce que je recherche.

Débutant en php et mysql, je suis à la recherche de quelques infos qui pourrait m'aider à avancer correct ou progresser comme il se doit.
Je tente de développer un site en local (pour apprendre :D).

J'ai donc crée une base de donnée et je m'essaye à l'ajout d'info dans la base, ainsi que son affichage sur les pages du dit site.
J'ai pas mal lu les divers tutos, posts etc sur le sujet mais j'ai quelques questions :

1: La connexion à la base de donnée
Je créer soit un fichier connect_mysql.php ou je l'inclus directement dans ma page.
Quel est la méthode la plus légère?

2. l'utilisateur de la base de donnée
Si je souhaite que les informations de connexion à la base ne soit pas utilisable par les utilisateurs (donc uniquement lecture du contenu) quel type d'utilisateur dois-je faire?

3. les entrées dans la base
Si je souhaite que les utilisateurs puisse envoyé des informations dans la base de donnée, est-il préférable de le faire avec une BDD séparé du reste? ainsi en cas de problème, je n'ai pas excessivement de risque de pertes de données.

J'aurais peut être d'autres questions suite à cela, mais ce serais déjà un très bon début.
Alors si vous avez des conseils, je dit bien conseil.. (je ne souhaite pas de code ou fonctions toute faite que je ne comprendrais pas) je suis preneur.

Merci de m'avoir lu.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 11 août 2012 à 19:44
3
Merci
1) Pour un seul script, c'est plus court de mettre la connexion à la DB directement dedans.
Sinon, quand tu en as plus d'un, fais-ça dans un fichier séparé, ton code n'en sera que plus clair.

2) Les infos de connexion à la DB ne sont jamais connues de l'utilisateur. Elles se trouvent dans un script PHP,
côté serveur, et ce script est censé ne pouvoir être lu que par le webmaster et les admins du serveur.
Si c'est MySQL et que tu veux empêcher toute écriture de la part des scripts, crée un compte en ne lui donnant que
les droits SELECT sur la base que tu veux utiliser.

3) C'est ton app qui, en principe, modifiera la base de données. C'est donc à elle d'empêcher l'utilisateur
de faire (et d'entrer) n'importe quoi. De toute manière, il est fortement conseillé de faire régulièrement
un backup de tes bases de données.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
0
Merci
Merci ghuysmans99 pour ta réponse.

1. ok pour en seul script, dans mon cas j'ai décider de faire une 'page d'accueil' sur laquelle on y retrouve plusieurs infos en provenance de plusieurs tables. donc un code php type include_once en début de page serait plus approprié?

2. Oui en effet les codes PHP sont masqué mais cela n’empêche l'aspiration du site pour les parties publique. donc fichiers et informations de connexion utilisable il me semble? à partir de la je peut regrouper ma première question. Le fichier de connexion à ma BDD peut se situé dans une partie privée du site? cela n’empêchera pas le fonctionnement de l'include_once et l'affichage des informations à tout le monde?
Merci pour la précision du type de compte, j'étais un peu perdu avec les diverses options d'utilisateurs (bdd).

3. Oui pour les contrôles de formulaire, mais je pensais plus à la distinction des bdd ex : une BDD pour l'écriture, et une pour l'affichage. en fonctionnant ainsi, je peux garder ma BDD des affichages plus en sécurité que la joindre avec celle ou les utilisateurs peuvent également écrire.

J'avais dans l'idée d’essayer de faire une page d'administration protéger par un mot de passe.
Page sur la qu'elle on y trouve les messages ou entrés des utilisateurs. validation par mes soins, et éventuellement copie des infos vers mon autre BDD.
la première base serait comme une sorte de salle d'attente avant validation.

Peut être pourrais tu m'informer d'avantages sur la marche à suivre pour établir ma ou mes BDD.
Commenter la réponse de jnscr
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 11 août 2012 à 20:41
0
Merci
1. Oui, perso j'utilise require_once(), comme ça j'ai une erreur et pas un warning
quand le fichier que je veux inclure n'est pas présent.

2. Non, la seule chose que les aspirateurs puissent prendre c'est le code
produit par le script PHP (souvent de l'HTML, mais ça pourrait être une image, un CSS, etc.)

2^. Oui, il peut se trouver dans un autre répertoire mais ce n'est pas une obligation.
Si l'utilisateur va sur un script qui n'affiche rien, il verra tout simplement une page vide.

3. En général, ce genre d'infos se trouvera dans des tables séparées, ou alors tu auras une gestion des droits
dans ton application (ACLs, par exemple, ou simplement un système où tel groupe peut faire telle chose et où
certains utilisateurs appartiennent à certains groupes). Donc ce n'est pas nécessaire


Pour créer une BDD, tu dois déjà avoir MySQL (ou un autre serveur de BDD, mais je ne saurai pas t'aider si c'est
Oracle ou MS SQL). Pour cela, installe gratuitement la version complète à partir du site officiel.
Une fois que c'est fait, télécharge phpMyAdmin (ou le workbench - un programme côté client qui permet de gérer
des BDD et de créer des modèles) à partir du site de MySQL et configure-le (c'est une machine de dév, donc donne-lui
le mot de passe root que tu as défini lors de l'installation du serveur).
Tu peux maintenant créer la BDD via phpMyAdmin et créer les tables à l'intérieur.
Ici, pas de problèmes de droits, vu que root a des droits divins sur le serveur.

Maintenant, il s'agit de choisir l'extension que tu veux utiliser. Il y en existe quelques-unes, dont :
* mysql : l'ancienne extension, que php.net ne recommande plus pour les nouveaux développements
* PDO : la nouvelle, orientée objet, qui supporte plusieurs SGBD (c'est une surcouche)

Passer à la deuxième quand on a un projet qui utilisait l'ancienne extension n'est pas évident, je te conseille
donc d'utiliser la nouvelle dès le début. En gros, il te suffit de créer un objet en donnant les infos de connexion et
tu peux ensuite exécuter des requêtes sur n'importe quelle table de ta BDD.

Le code que j'utilise pour le faire :
<?php
$dbServer 'localhost'; $dbName 'mabase';
$dbUser 'root'; $dbPasswd 'toor';
try {$db = new PDO("mysql:host=$dbServer;port=3306;dbname=$dbName;", $dbUser, $dbPasswd, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));}
catch (Exception $e) {die('Erreur BDD !');}
?>

Attention, j'ai mis 'SET NAMES utf8' pour ne pas avoir des problèmes avec l'accentuation (ainsi que les langues
utilisant un alphabet autre que l'alphabet latin), mais ça t'oblige à mettre dans les meta de ta page que c'est de l'UTF-8.
Pour ce faire, il suffit d'ajouter ceci : <meta http-equiv ="Content-Type" content="text/html; charset=utf-8" />

Je te conseille de lire le tutoriel du SdZ sur le développement d'un site Web en PHP avec PDO. Tu devrais y trouver ton bonheur

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 14 août 2012 à 00:17
0
Merci
Bonsoir,
J'ai passer pas mal de temps à lire et essayer donc d'afficher le contenu d'une table dans une page. Mais voici que quelques soucis surviennent :

Lorsque j'utilise un méthode simple avec la connexion à la bdd incluse dans mon code comme ci-dessous, tout fonctionne bien.
<?php try
{
$bdd = new PDO('mysql:host=localhost;dbname=NOMBDD', 'USERBDD', 'PASSBDD');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$reponse = $bdd->query('SELECT nom, numero FROM dpt_fr') or die(mysql_error());
while ($donnees = $reponse->fetch())
{
echo 'nom :' . $donnees['nom'] . '
';
echo $donnees['numero'] . '

';
}

$reponse->closeCursor(); ?>

Donc la, tout fonctionne correctement, il m'affiche bien mes donnée nom et numéro les unes sous les autres.
La ou ça se gate, c'est lorsque je souhaite utiliser include_once, ou require_once. require_once à l'air plus sympathique puisqu'il ne réouvrira pas la page demandé si celle ci l'est déjà. (enfin c'est ce que j'ai compris).
je souhaite donc mettre le require_once en début de page comme suit :
<?php require_once('URL.connect_to.php') ?>
Et la avec le contenu de connexion marqué plus haut et des variable $dbname etc.. j'obtiens plusieurs erreurs. une idée du pourquoi?


Au sujet de require_once(), tu as vu juste
Par contre, mysql_error() n'a plus rien à faire ici, vu qu'on utilise PDO.

Quelles erreurs obtiens-tu ?
Normalement, si tu n'as que le bloc try/catch dans le fichier inclus et l'autre partie
du script dans ton script, ça devrait marcher...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
0
Merci
Bonjour,

Désolé pour le retard de réponse.
Alors après quelques essais peu concluants… j’ai décidé de garder l'extension Mysql pour mon projet en cours, et tenterais une migration vers PDO lorsque je connaitrais d pour mon projet en cours, et tenterais une migration vers PDO lorsque je connaitrais d’avantage le principe d’objet.

Je reviendrais très certainement vers vous lorsque je pourrais vraiment me consacrer à PDO.
Merci Guy pour tes conseils. Je me penche sur le sujet sur mon serveurs d’essais.

Bonne journée.
Commenter la réponse de jnscr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.