Vous n'êtes pas identifié(e).
Pages :: 1
Voila je fais un moteur de recherche a partir d'un formulaire qui va regarder dans une base de données et affiche les résultats trouvés.
Voila le code :
echo '<p>Résultats de votre recherche.</p>';
echo 'Il y a <b>'.$nb_resultats.'</b> :';
if($nb_resultats > 1) { echo ' <b>résultats </b>'; } else { echo ' <b>résultat</b>'; }
echo "<br></br><br></br>";
while($resultat = mysql_fetch_assoc($requete))
{
echo ''.$resultat['titre'].' - '.$resultat['annee].' - '.$resultat['genre'].'' ;
echo "<br></br>";
}
else
{
echo '<p>Pas de résultats</p>';
echo '<p>Nous n\'avons trouvé aucun résultat pour la requête <b>'.$recherche.'</b>. Réessayez avec un autre terme.</p>';
}
mysql_free_result;
fermerbase();
}
}
J'aimerais savoir si a partir des $_GET c'est (déjà) correct et assez sécurisé, sachant que le paramètre est passé en url en fonction de la recherche
J'ai utilisé mysql_real_escape_string, mais j'ai cru comprendre que ce n'est utilisé que quand on ajoute des données dans une base, c'est superflu ?
Hors ligne
Salut,
Comme tu dis, vu que c'est pour la recherche, si quelqu'un s'amuse à chercher [en modifiant ta variable du $_GET] et que cela ne correspond à rien dans ta base, il arrivera sur la page "erreur 404" que tu auras bien évidement déjà défini
Par contre, ATTENTION s'il te prenait l'envie de stocker les mots que les gens recherchent pour optimiser le référencement interne de tes fiches... car là, il y aura stockage, donc RISQUES...
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
C'est bien ce que je pensais, Merci bien ^^
Hors ligne
Salut,
J'ai utilisé mysql_real_escape_string, mais j'ai cru comprendre que ce n'est utilisé que quand on ajoute des données dans une base
Absolument pas, tu risque une injection SQL même avec un select.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Salut,
Thomas a écrit :J'ai utilisé mysql_real_escape_string, mais j'ai cru comprendre que ce n'est utilisé que quand on ajoute des données dans une base
Absolument pas, tu risque une injection SQL même avec un select.
Donc je le laisse.
Mais si je fais un simple affichage avec une requete sql je dois aussi l'utiliser ? Comment je peux securiser un peu plus ?
Hors ligne
Du moment que tu fait une requête SQL tu dois la sécuriser.
mysql_real_escape_string convient très bien là.
Par contre tu fait :
$requete = mysql_real_escape_string($recherche);
Ne serai-ce pas plutôt :
$recherche = mysql_real_escape_string($recherche);
??
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Du moment que tu fait une requête SQL tu dois la sécuriser.
mysql_real_escape_string convient très bien là.
Par contre tu fait :
$requete = mysql_real_escape_string($recherche);
Ne serai-ce pas plutôt :
$recherche = mysql_real_escape_string($recherche);
??
Oui parfaitement, je corrige ca, merci bien !
Hors ligne
Dans un même genre d'idée j'aimerais afficher les mots clés d'un film sur chacune de mes pages (films), mais au lieu de recopier xx fois la même requete sur chacune de mes pages en ne changeant que l'id du film, j'aimerais savoir si c'est possible de faire :
- un array avec "l'id" du film, avec sa correspondance "lien"
et
- en fonction de la page adapter <b>une seule</b> requête
arrayfilms.php
Ex : ("SELECT id, titre, lien FROM films")
Je mets en array pour avoir
$array['id]['lien']
1 = films/Star-Wars.php
2 = films/Le-seigneurs-des-anneaux.php
....
Après j'execute la requete en fonction de l'id (qui changera, en fonction de la page)
("SELECT id, titre FROM films LEFT JOIN mot_association ON films.id = mot_association.films_id WHERE films.id=$array['id']
dans ma page Star-Wars.php
dire je suis dans la page Star-Wars.php donc l'id = 1
et executer la requete sql
En gros avoir le moins de code possible sur ma page film, mais surtout n'avoir <b>qu'une seule requete.</b>
Mais je me complique peut etre la tête, il y a peut être plus simple ?
Hors ligne
Pages :: 1