LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 18/02/2007 à 12:28
Vérifier si un lien existe déjà dans une BDD
Quand tu as besoin de faire du transactionnel.

En gros, tu as besoin d'innod dès lors que tu fais une action sur plusieures tables via un seul script.

Grace à innodb, tu lances une transaction.
Tu fais ton insert dans la table 1.
Si ton insert plante, tu rollback la transation (et la, tu es sur que ton insert n'a pas été fait), sinon tu fais un autre insert dans la table 2. Si cette deuxieme requete fait du caca, tu rollback la transation (et la, en rollbackant, ce sont la requete 2 ET la requete 1 qui sont annulées), sinon, tu la commit.

Bref, ca permet de garder une base intègre.

Le cas typique d'utilisation : pour un forum, pour un nouveau sujet, souvent tu fais un insert dans une table sujet et une table message. En innodb, tu es assuré à 100% de ne pas avoir un sujet sans message.
LA GLOBULE
le 17/02/2007 à 12:00
Vérifier si un lien existe déjà dans une BDD
C'est surement mieux, mais ca te coutera deux requetes SQL.

Des que tu lances mysql_real_escape_string n'importe ou dans ton code, ca fait appel à mysql pour savoir ce qui doit etre escapé en fonction de l'encodage. Bref, c'est plus couteux.

En conséquences, pour utiliser mysql_real_escape_string, il faut que ta connexion mysql soit déja établi sinon tu te manges une erreur alors qu'avec mysql_escape_string non.

Apres, c'est sur, la fonction real donne de meilleurs résultats, mais c'est pas forcemment la plus pratique à utiliser (chez moi, par exemple, quand j'ecris ma requete SQL, ma connexion à MySQL n'est pas encore faite, ma connexion se fait au moment ou je lance la query dans une fonction SQL : bref, je ne peux pas utiliser cette fonction à moins de faire des trucs crades).
LA GLOBULE
le 12/02/2007 à 21:51
Affichage de liens classés par catégorie
C'est pas parce que ca marche que c'est bien.

Si tu as 10 catégories qui ont x sous catégories chacune, tu vas faire 11 requetes SQL sur une seule page alors que tout peut se faire en une seule requete SQL.

<?php
$sql = "SELECT categorie.idcategorie, categorie.nom, lien.lien FROM categorie, lien WHERE lien.idcategorie = categorie.idcategorie ORDER BY categorie.idcategorie ASC, lien.idcategorie ASC";
$req = mysql_query($sql) or die ($sql.' '.mysql_error());

$temp = '';

while ($data = mysql_fetch_array($req)) {
if ($temp != $data['idcategorie']) {
echo 'Catégorie : '.$data['nom'].'';
$temp = $data['idcategorie'];
}
echo 'Lien : '.$data['lien'].'';
}
mysql_free_result($req);
?>
LA GLOBULE
le 12/02/2007 à 19:54
get_html_translation_table
Qu'est ce qui t'empêche de faire cela en PHP avant d'afficher ce que contient ta base ?
LA GLOBULE
le 10/02/2007 à 12:35
problème sur req SQL complexe
Si tu me dump un bout de ta base de données avec les structures des tables et les données d'un user, je veux bien t'aider :) (mais la, j'ai trop la flemme de créer ca et de remplir à la main les tables)
LA GLOBULE
le 10/02/2007 à 01:18
Comment securiser une requette SQL
Plusieures regles simples :
- controler par des regex ou autres ce que tu comptes rentrer en base
- utiliser les fonctions d'escape adaptées à ta base de données (mysql_escape_string ou mysql_real_escape_string) : on doit utiliser addslashes QU'EN DERNIERE SOLUTION (c'est à dire lorsque PHP ne propose pas de fonction d'escape pour un SGBD, mais ce n'est pas le cas pour MySQL)
- utiliser la fonction intval de PHP au lieu de mysql_escape_string lors de condition sur des champs numériques
- ne pas afficher les erreurs de PHP et/ou de MySQL en production
- protéger tes champs SQL via des backquotes : `

Voila, si tu suis toutes ces regles à la lettre, ton site sera plus sécurisé que 80% des sites fais en PHP

Faut le reconnaitre : PHP est simple d'accès. Beaucoup de gens font de la merde avec en se disant "ca marche donc c'est bon". Ben oui mais non.... La programmation, c'est un vrai métier qui s'apprend, et la sécurité est un élément important lors du développement d'un site.

Je ne jette pas la pierre sur les autres, moi meme il y a 7 ans, je ne pretais que tres peu attention à ces problèmes (c'est d'ailleurs principalement pour ca que la v4 met du temps à sortir : je veux qu'elle soit "parfaite"), mais c'est une erreur.
LoadingChargement en cours