OVH Cloud OVH Cloud

[FAQ] fr.comp.lang.php

7 réponses
Avatar
John GALLET
Bonjour,

Pour rappel :

La FAQ de ce forum se trouve sur http://faqfclphp.free.fr/
Un miroir est disponible sur http://www.phpindex.com/fciwap/

HTH
JG

7 réponses

Avatar
ASM
Bonjour,

Pour rappel :

La FAQ de ce forum se trouve sur http://faqfclphp.free.fr/


c'est bon, hop! en favori

mais pour mon p'tit bp du jour
je préfére la soluce à Peter Pan :
http://ppan.net/webdev/connexion_mysql.php
plutôt que celle-ci :
http://faqfclphp.free.fr/#rub3.3


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
John GALLET
je préfére la soluce à Peter Pan :
http://ppan.net/webdev/connexion_mysql.php
plutôt que celle-ci :
http://faqfclphp.free.fr/#rub3.3


Si vous voulez parler de l'utilisation de define() je suis tout à fait
d'accord. Pour le reste...

a++;
JG

Avatar
Guillaume Bouchard
ASM wrote:
je préfére la soluce à Peter Pan :
http://ppan.net/webdev/connexion_mysql.php


Oula, c'est quoi cette horreur ?

function queryDB($sql, $type=0) {
if (!$db = @mysql_connect(DBHOST,DBUSER,DBPASSWD))


Donc ici on reetablit la connexion à la base de donnée à CHAQUES
requetes ? Interessant.


# exemples d'application
$id = $_GET['id'];
$ma_table = "ma_table";
$sql = "SELECT titre FROM $ma_table WHERE id = '$id'";
$res = queryDB($sql);


"Et paaaf le chien." Une variable non vérifiée, non sécurisée que l'on
insert en plein milieu d'une requete SQL sans se poser de question. En
plus il s'agit d'un ID (numerique surement ?) entouré de guillemets... Boaf

Ce n'est pas pour cassé, mais même si l'idee est sypatique, il en
résulte que c'est crade et que c'est le genre d'exemples qui tournent de
partout donnant de mauvaises habitudes de programmations à un max de
monde :(.

--
Guillaume.

Avatar
ASM
je préfére la soluce à Peter Pan :


Si vous voulez parler de l'utilisation de define() je suis tout à fait
d'accord. Pour le reste...


Bien que je sois très néophyte
il me semble que c'est + détaillé, ou plus diversifié

et que la soluce si blocage est plus appropriée
même si cela relève un peu du détail
J'aime bien son traitement et retour d'erreur par un switch

oui define() çà paraît assez élégant.

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
ASM
ASM wrote:

je préfére la soluce à Peter Pan :
http://ppan.net/webdev/connexion_mysql.php



Oula, c'est quoi cette horreur ?

function queryDB($sql, $type=0) {
if (!$db = @mysql_connect(DBHOST,DBUSER,DBPASSWD))



Donc ici on reetablit la connexion à la base de donnée à CHAQUES
requetes ? Interessant.


Ha ? faut pas l'faire ?

J'ai cru voir aussi que c'était de bon ton d'ouvrir la connexion
faire ses emplètes rapidement et bien refermer la porte tout de suite?

J'ai fait une (des?) cagades il y a peu
et la BdD est restée innaccessible pendant plus de 8 heures.
(dans le code utilisé alors il n'y avait rien pour fermer la porte)

Est-ce qu'il suffit de s'y connecter en début de site ?
et c'est conservé pour toute la visite ?

Et alors si on arrive par la bande ... ?
on n'a pas de connexion à la BdD et ... rien ne fonctionne. non ?

# exemples d'application
$id = $_GET['id'];
$ma_table = "ma_table";
$sql = "SELECT titre FROM $ma_table WHERE id = '$id'";
$res = queryDB($sql);



"Et paaaf le chien." Une variable non vérifiée, non sécurisée que l'on
insert en plein milieu d'une requete SQL sans se poser de question. En
plus il s'agit d'un ID (numerique surement ?) entouré de guillemets... Boaf


Bon, personne n'est à l'abri de coquilles ... (même si très visibles)

j'a rien compris à ce que tu dis
1) comment sécurise t-on $id = $_GET[id] ?
2) et à quoi çà sert ?
(on n'envoie tt de même pas un numéro de CB par cette méthode !?)

Ce n'est pas pour cassé, mais même si l'idee est sypatique, il en
résulte que c'est crade et que c'est le genre d'exemples qui tournent de
partout donnant de mauvaises habitudes de programmations à un max de
monde :(.


Je ne demande qu'à faire correctement.
Comme tu dis ce n'est pas la peine de commencer de travers.
Mais il me faudrait un peu d'éclaircissements.

Donc pas de fonction "maison" générique à tout faire ?
Faut se refarcir la totale à tous coups ?
Ou bien n'ai-je point compris où était la crasse ?

Aurais-tu alors un exemple propre et argumenté ? (en français)

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Benjamin Sonntag

ASM wrote:

je préfére la soluce à Peter Pan :
http://ppan.net/webdev/connexion_mysql.php




Oula, c'est quoi cette horreur ?

function queryDB($sql, $type=0) {
if (!$db = @mysql_connect(DBHOST,DBUSER,DBPASSWD))




Donc ici on reetablit la connexion à la base de donnée à CHAQUES
requetes ? Interessant.



Ha ? faut pas l'faire ?


En fait, la plupart des php conservent un pool de connexion à Mysql, et
ne déconnectent donc pas vraiment le processus de php lors du
mysql_close() (la doc de php précise que mysql_close() n'est pas
nécessaire puisque php ferme les connexions à la fin du script)

Par ailleurs, les hébergeurs optimisent de leur côté le nombre de
connexions entre les process php et mysql, selon leur nombre de process
apache etc. Bref, ne t'en occupe pas trop (...)

Par conséquent, je ne pense pas que mysql_connect() de partout soit
négatif non plus, puisque php, dans ce cas, réutilise la même connexion.

La doc de php prévient d'ailleurs que cela peut avoir des effets de
bords non souhaité (on croit ouvrir 2 connexions donc être par exemple
sur 2 DB différentes, alors que php n'en a ouvert qu'une ...)


J'ai cru voir aussi que c'était de bon ton d'ouvrir la connexion
faire ses emplètes rapidement et bien refermer la porte tout de suite?

J'ai fait une (des?) cagades il y a peu
et la BdD est restée innaccessible pendant plus de 8 heures.
(dans le code utilisé alors il n'y avait rien pour fermer la porte)


cagade ? je veut bien une explication sur ce mot (bon, d'accord un dico
ca sert à qqchose :-D )

Est-ce qu'il suffit de s'y connecter en début de site ?
et c'est conservé pour toute la visite ?


pas tout à fait pour toute la visite : pour tout le script oui.


Et alors si on arrive par la bande ... ?
on n'a pas de connexion à la BdD et ... rien ne fonctionne. non ?


en effet, sans mysql_connect() php se connecte tout seul à "localhost"
sans login / pass donc la plupart du temps ca plante.


# exemples d'application
$id = $_GET['id'];
$ma_table = "ma_table";
$sql = "SELECT titre FROM $ma_table WHERE id = '$id'";
$res = queryDB($sql);


"Et paaaf le chien." Une variable non vérifiée, non sécurisée que l'on
insert en plein milieu d'une requete SQL sans se poser de question. En
plus il s'agit d'un ID (numerique surement ?) entouré de guillemets...
Boaf



habituellement quand on doit passer un paramètre entier à une requête
mysql, par exemple, on s'assure d'avoir bien un entier : par exemple :

$id = intval($_GET["id"]);

Bon, personne n'est à l'abri de coquilles ... (même si très visibles)


En l'occurence, ici la coquille permettrait à quelqu'un d'envoyer le
code suivant :

http://cheztoi.fr/tapage.php?id=0' OR visible='false

Ca permettrait par exemple de voir les enregistrements théoriquement
invisibles de ta table ... voire pire, droper des tables !!

j'a rien compris à ce que tu dis
1) comment sécurise t-on $id = $_GET[id] ?
2) et à quoi çà sert ?
(on n'envoie tt de même pas un numéro de CB par cette méthode !?)

Donc pas de fonction "maison" générique à tout faire ?
Faut se refarcir la totale à tous coups ?
Ou bien n'ai-je point compris où était la crasse ?


non, non, par pitié, ne recodez pas tout :) de très bonnes classes
d'abstraction db existent ...

--
@+

Benjamin
metaconsult



Avatar
ASM
En l'occurence, ici la coquille permettrait à quelqu'un d'envoyer le
code suivant :

http://cheztoi.fr/tapage.php?id=0' OR visible='false

Ca permettrait par exemple de voir les enregistrements théoriquement
invisibles de ta table ... voire pire, droper des tables !!


Bon ... çà continue à me rester bien mystérieux tout çà.

et je risque d'en faire encore qques unes des cagades !



Ha ? comme je ne l'ai pas trouvé dans mon dico :

cagade = erreur, bêtise, crotte (merde)
caguer = Déféquer (chier)
cagadou = WC (chiotte)

c'est de l'occitant ou prouvençào ou tout au moins du parler du midi
j'ai fait une grrausseu cagaAde = j'ai fait une grossière erreur

Et comme toujours, Google est ton ami :
http://assoc.wanadoo.fr/cyber-montpezat/parlerh.htm
et on y vois que de Marseille à Toulouse, c'est bien connu :-)
http://www.marseillais-du-monde.org/dictionnaire.php3

--
Stephane Moriaux et son [moins] vieux Mac