url rewriting

 
patrick888
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 103
Inscription: Jeu Aoû 02, 2007 20:17

url rewriting

Message le Sam Mai 10, 2008 22:03

Bonjour,j'ai un petit probleme de url rewriting que je n'arrive pas à résoudre, alors j'ai tout repris depuis le début.
j'ai 3 pages php:

1: rotisserie-livraison-rotis.php
2: livraison-rotis.php
3: rotisserie.php

la premiere liant vers la deuxieme. la deuxieme vers la troisieme.

1:la premiere enumere la liste des départements
2:la deuxieme enumere la liste des villes du département ou se trouvent les rotisseries
3:la troisieme enumere les rotisseries de la ville, avec adresses...

les codes correspondants a chaque page sont les suivants:

1: rotisserie-livraison-rotis.php

Code: Tout sélectionner
<?php
$sql = ("SELECT DISTINCT departement FROM livraison_rotis ORDER BY departement");
$result = mysql_query($sql);

echo '<ul>';

while ($row = mysql_fetch_assoc($result)) {
echo '<li><a href="livraison-rotis.php?departement='.$row['departement'].'">'.$row['departement'].'</li>';
}

echo '</ul>';
?>


2: livraison-rotis.php

Code: Tout sélectionner
<?php
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville");
$result = mysql_query($sql);

echo '<ul>';

while ($row = mysql_fetch_assoc($result)) {
echo '<li><a href="rotisserie.php?ville='.$row['ville'].'">'.$row['ville'].'</li>';
}

echo '</ul>';
?>

et
Code: Tout sélectionner
<?php echo $_GET['departement']; ?>


3: rotisserie.php

Code: Tout sélectionner
<?php
$ville = $_GET['ville'];

$sql = ("SELECT nom,adresse,code_postal,ville,ville,tel,fax,mail FROM livraison_rotis WHERE ville='$ville' ORDER BY nom");
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
echo '<ul>';
echo '<li>'.$row['nom'].'</li>';
echo '<li>'.$row['adresse'].'</li>';
echo '<li>'.$row['code_postal'].'</li>';
echo '<li>'.$row['ville'].'</li>';
echo '<li>'.$row['tel'].'</li>';
echo '<li>'.$row['fax'].'</li>';
echo '<li>'.$row['mail'].'</li>';
echo '</ul>';
}
?>

et
Code: Tout sélectionner
<?php echo $_GET['ville']; ?>


tout marche nikel, mes départements apparaissent, mes villes, mes adresses, selont les pages.

apres, pour l'url rewriting, j'ai un soucis, plus rien ne marche.

je voudrais que la page 2: livraison-rotis.php s'affiche de cette maniere:

Code: Tout sélectionner
/livraison-rotis-BOUCHES-DU-RHONE.html


que la page 3: rotisserie.php s'affiche aussi de cette maniere
Code: Tout sélectionner
/rotisserie-JUAN-LES-PINS.html


au lieu de
Code: Tout sélectionner
/livraison-rotis.php?departement=BOUCHES%20DU%20RHONE


et
Code: Tout sélectionner
/rotisserie.php?ville=JUAN%20LES%20PINS


Si quelqu'un pouvait me donner un coup de main, ça fait une bonne semaine que je galere comme un ane.

j'ai un .htaccess ci dessous
Code: Tout sélectionner
RewriteEngine on
RewriteRule livraison-rotis-(.*)\.html$ /livraison-rotis.php?departement=$1 [L]
RewriteRule rotisserie-(.*)\.html$ /rotisserie.php?ville=$2 [L]



j'ai changé le code de la premiere page comme ci dessous:
Code: Tout sélectionner
<?php
$sql = ("SELECT DISTINCT departement FROM livraison_rotis ORDER BY departement");
$result = mysql_query($sql);

echo '<ul>';

while ($row = mysql_fetch_assoc($result)) {
echo '<li><a href="livraison-rotis-'.preg_replace("/ /","-",$row['departement']).'.html">'.$row['departement'].'</li>';
}

echo '</ul>';
?>

et de la deuxieme page comme ça:
Code: Tout sélectionner
<?php
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville");
$result = mysql_query($sql);

echo '<ul>';

while ($row = mysql_fetch_assoc($result)) {
echo '<li><a href="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html">'.$row['ville'].'</li>';

}

echo '</ul>';
?>


avec des départements ou des villes pas composés, du style Paris, Marseille, Nice, tout est nikel, l'url, les noms des villes et des départements, mais pour des departements et villes composés de plusieurs mots, aix en provence par exemple, l'url s'affiche correctement, mais le nom de la ville ne s'affiche pas sur la page,et les liens vers les villes de ce département ne s'affichent pas non plus... mais par contre, sur la page rotisserie.php, les adresses, num telephone, fax, s'affichent correctement, mais sans le nom de la ville qui ne veut pas s'afficher.

pourquoi, je ne comprends pas.

Si quelqu'un navait une autre idée pour .htaccess ou pour mon code php, je ne m'en sortirais pas tout seul, c'est sur!

Un grand merci à qui m'aidera et me sauvera de mon stress :)


Patrick

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


phloam
WRInaute accro
WRInaute accro
 
Messages: 1365
Inscription: Ven Avr 08, 2005 23:06

Message le Dim Mai 11, 2008 1:00

J'ai malheureusement pas le courage de lire tout ton post mais j'ai remarqué ca : <?php echo $_GET['departement']; ?> et ca <?php echo $_GET['ville']; ?>

Tu devrais quand même filtrer ce qui arrive en GET avant de l'afficher sur une page sauf si tu souhaites que ton site devienne le paradis du xss ,de l'injection de liens et des hackers...

Aussi tu utilises ces varisble non filtré dans ta requête sql :
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville");

C'est idéal pour quelqu'un qui voudrais te faire une injection sql ou pire effacer ta bdd...

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 21:12

Message le Dim Mai 11, 2008 10:34

Je te donne la démarche pour ta deuxième page.

Si tu veux que l'adresse soit livraison-rotis-BOUCHES-DU-RHONE.html au lieu de livraison-rotis.php?departement=BOUCHES-DU-RHONE

il faut faire de l'url rewriting effectivement, et changer les liens que tu utilise.

Pour la récriture :

Code: Tout sélectionner
RewriteEngine On

RewriteRule livraison-rotis-(.*)\.html livraison-rotis.php?departement=$1


Ensuite dans le code de la page rotisserie-livraison-rotis.php il faut que tu remplace la ligne

Code: Tout sélectionner
echo '<li><a href="livraison-rotis.php?departement='.$row['departement'].'">'.$row['departement'].'</li>';


par

Code: Tout sélectionner
echo '<li><a href="livraison-rotis-'.$row['departement'].'.html">'.$row['departement'].'</li>';


En clair, n'utilise que les adresses html.

patrick888
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 103
Inscription: Jeu Aoû 02, 2007 20:17

Message le Dim Mai 11, 2008 18:07

Merci de vos reponses, en fait, avec le nouveau .htaccess et le changement de code php, ça ne me change pas les espaces en - contrairement à mon ancien code donc ça me fait un truc du genre %s.
et concernant l'histoire de $get, je ne savais pas que ça pouvait etre dangeureux comme ça, mais de toute maniere, je suis incapable de changer ça! je suis trop nul ;)

Patrick

Bon, ça y est, c'est résolu, je m'étais embobiné au niveau des codes

Code: Tout sélectionner
$ville = $_GET['ville'];

$sql = ("SELECT nom,adresse,code_postal,ville,ville,tel,fax,mail FROM livraison_rotis WHERE ville='$ville' ORDER BY nom");


j'avais mélangé les variables villes avec les départements, un petit méli mélo quoi,
Merci de vos aides réspectives.

il y a quand meme cette histoire de bdd qui serait piratable par le biais de $_GET; si quelqu'un avait plus de renseignements à ce sujet...

Encore une fois merci

Patrick

 

Modérateurs: HawkEye, WebRankInfo, fandecine

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité