problème URL rewriting avec un parametre "texte"

Nouveau WRInaute
Bonjour,

Je voudrais réécrire URL où un des parametres est le texte (l'instruction pour MySQL). Et ça ne marche pas.:(

Dans .htaccess:

RewriteRule ^cherche1-(text)-([0-9]+)-([0-9]+)\.html$ cherche1.php?uslovie=$1&numero_de_page=$2&kol_page=$3 [L]

Dans le fichier .php je change

<a href='./cherche1.php?uslovie=$uslovie&numero_de_page=$sled&kol_page=$kol_page' target='_self'><b><i><font size='-1' color='#01202a'>Suivante</font></i></b></a></div>

en

<a href='./cherche1-$uslovie-$sled-$kol_page.html' target='_self'><b><i><font size='-1' color='#01202a'>Suivante</font></i></b></a></div>

où $uslovie - l'instruction pour MySQL
$sled - le numéro de la page suivante
$kol_page - le nombre des pages

La reponse est:

Forbidden

You don't have permission to access /femmes_resultat/cherche1- filles, connaissance_langues, niveau_de_langue WHERE age>=18 AND age<=70 AND taille>=0 AND taille<=176 AND id_poids>=0 AND id_poids<=101 AND couleur_yeux>=0 AND couleur_yeux<=100 AND couleur_cheveux>=0 AND couleur_cheveux<=100 AND taille_p>=0 AND taille_p<=176 AND taille_t>=0 AND taille_t<=176 AND taille_h>=0 AND taille_h<=176 AND si_a_enf>=0 AND si_a_enf<=3 AND id_educ>=0 AND id_educ<=100 AND id_ville>=0 AND id_ville<=10000 AND id_sit_fam>=0 AND id_sit_fam<=4 AND id_pays>=0 AND id_pays<=10000 AND connaissance_langues.id_langue>=0 AND connaissance_langues.id_langue<=100 AND filles.id_fille=niveau_de_langue.id_fille AND connaissance_langues.id_langue=niveau_de_langue.id_langue AND filles.id_fille>2000 ORDER BY filles.age-2-16.html on this server.

Est-ce que c'est possible de garder l'instruction pour MySQL comme je l'ai fait?

Avec des parametres simple ça marche (par example, je n'ai pas de problèmes avec
RewriteRule ^voir_page-([0-9]+)\.html$ voir_page.php?id_fille=$1 [L]
et appele de fichier voir_page.php ce trouve dans le même fichier que cherche1.php)

Pouviez-vous m'aider, s'il vous plait?
Merci en avance.

Yulia.
 
WRInaute occasionnel
Et avec ça :
Code:
RewriteRule ^cherche1-(.+)-([0-9]+)-([0-9]+)\.html$ cherche1.php?uslovie=$1&numero_de_page=$2&kol_page=$3 [L]
 
WRInaute accro
et comme ca ?

Code:
RewriteRule ^cherche1-([^/]*)-([^/]*)-([^/]*)\.html$    /cherche1.php?uslovie=$1&numero_de_page=$2&kol_page=$3 [L]
 
WRInaute discret
Je me permet quand même de sortir de la question...

Où est l'intérêt du rewriting ici ? Vu l'immensité de l'url, elle sera détestée par google, quoi qu'il se passe. Autre chose, si le site est en prod et que tu éxécutes la requête présente dans l'url, tu prend des risques énormes. :|
 
WRInaute accro
jvgamers a dit:
Je me permet quand même de sortir de la question...

Où est l'intérêt du rewriting ici ? Vu l'immensité de l'url, elle sera détestée par google, quoi qu'il se passe. Autre chose, si le site est en prod et que tu éxécutes la requête présente dans l'url, tu prend des risques énormes. :|

Tu n'a pas tord sur 1 point. Il est préférable de passer maximum 2 paramètres dans l'url. Celle de Yulia en a 3.
De la à prendre des 'risques énormes', il faut relativiser. J'ai des urls bien plus longue que la sienne qui sont trés bien indexés :wink:

.
 
WRInaute discret
Le risque énorme ne vient pas de la longueur de l'url, ça c'est juste un motif de mauvaise indexation. Le risque vient du fait de passer en paramétre une requête mysql... Suffit de modifier l'url et on peut bidouiller facilement la base de donnée.
 
WRInaute accro
jvgamers a dit:
Le risque énorme ne vient pas de la longueur de l'url, ça c'est juste un motif de mauvaise indexation. Le risque vient du fait de passer en paramétre une requête mysql... Suffit de modifier l'url et on peut bidouiller facilement la base de donnée.

+1

mouuarff, j'avais pas vu ; ) Je l'avais encore jamais vu celle la, pas etonnant que ca beug !!!

Dit Yulia, va faire un petit tour sur www.siteduzero.com , quelque lecons de base me semble indispensable à ton niveau.

Bon courage ; )

.
 
Nouveau WRInaute
Merci pour vos reponses.
Vous avez raison, je n'ai pas pensé à la sécurité. Merci pour cette reflection.
Merci aussi pour www.siteduzero.com, j'ai fait un petit tour, mais leur example d'affichage des pages est plus simple de ce dont j'ai besoin.:(
Si dans mon URL je supprime la requête MySQL, mais je garde les données des paramétres (genre http://... cherche1-18-70-0-176-0-101-...-10-16.html ), est-ce que ce sera mieux?
Autrement, je n'arrive pas à comprendre comment passer les paramétres de la requête (qui changent de requête en requête) de page en page.:(

Yulia.
 
WRInaute accro
Je me permet d'insister, mais il te manque les notions de base en PHP/MySQL. Les paramètres des pages passent par la methode GET et c'est la LIMIT de la requete SQL qui détermine la page à ouvrir

Code:
$page = isset($_GET['page']) ? $_GET['page'] : '';

$limit_str = "LIMIT ". $page * $limit .",$limit"; 
$result = mysql_query("
                      SELECT *  
                      FROM table  
                      ORDER BY id  
                      ASC $limit_str");

Regarde les tutos sur WRI, le siteduzero, phpdebutant, phpsources, phpcs...

.
 
Nouveau WRInaute
Je comprends ce que vous voulez dire, mais dans votre example il y a seulement un paramètre (page) qui est passé. Vous choisissez tous les données de la table. Dans ma requête MySQL je dois passer la condition (WHERE) avec beaucoup de paramètres!
Example
SELECT ... FROM ... WHERE age>=$age_recu_min AND age<=$age_recu_max AND
taille>=$taille_recu_min AND taille<=$taille_recu_max AND
id_poids>=$poids_recu_min AND id_poids<=$poids_recu_max AND
couleur_yeux>=$couleur_yeux_min AND couleur_yeux<=$couleur_yeux_max AND
couleur_cheveux>=$couleur_cheveux_min AND
...
...
AND
... ORDER BY ...

Et tous ces paramètres sont variables de requêtes en requêtes. Ce n'est pas LIMIT qui pose des problèmes, mais comment garder la condition (WHERE) de pages en pages?

P.S. C'est possible qu'il me manque les notions de base en PHP/MySQL: j'ai appris seule avec des livres, mais c'est pour ça que je pose des questions.:)
 
WRInaute accro
Pourquoi veux tu passer la requete entière ? ne passe que les variables qui te sont neccessaires dans ton URL ;)

regarde cet exemple :
-http://www.ame-soeur.info/recherche-0-France-21-23-1-0-80.html
=> sexe feminin de France, entre 21 et 23 ans, de 80 à 100



Donc pour toi ton url sera du genre :

cherche1.php?age_recu_min=$age_recu_min&age_recu_max=$age_recu_max&taille_recu_min=$taille_recu_min&poids_recu_min=$poids_recu_min&taille_recu_max&$taille_recu_max...

Et tu n'as pas vraiment le choix ;)

.
 
Discussions similaires
Haut