Problème de variables dans mon rewriting, valeur limitée ??

Nouveau WRInaute
Bonjour j'ai le souci suivant.

j'ai dans mon fichier .htaccess la syntaxe suivante :
Code:
RewriteRule ^motscles,(.*),([a-z0-9A-Z]+)\.html$  /recherche.php?var1=$1&var2=$2 [L]

Sur ma page test j'ai créer deux liens par image pour tester le rewriting dans une boucle.
Les variables sont ensuite transmises à une requete Sql ... et ma page recherche m'affiche un catalogue.

Code:
lien1a : recherche.php?var1=pommes&var2=AbCd0
lien1b : motscles,pommes,AbCd0.html

Code:
lien2a : recherche.php?var1=poires&var2=AxSD1d
lien2b : motscles,poires,AbCd0.html
...

Dans les deux cas le rewriting fontionne bien !
J'arrive toujours sur la bonne page mais lorsque Var2 à une longeur de chaine plus grande
le lien html me renvoi un erreur SQL comme si la Var2 n'existait pas ou etait eronnée alors qu'en version php, tout fonctionne !
Exemple :
Code:
lien3a : recherche.php?var1=poires&var2=AxSD1dVFtRz03459Rf8xCs [L] (PAGE TROUVEE  - SQL OK)
lien3b : motscles,poires,AxSD1dVFtRz03459Rf8xCs.html (PAGE TROUVEE - SQL PAS DE REPONSE TROUVEES)

Je croyais que du moment que la page s'affichait, tout devait fonctionner pareil ?
La longueur de la valeur d'une variable est elle limitée dans le rewritting ???
Sinon d'où provenir le problème, je tourne en rond depuis toute la soirée !!

Merci d'avance pour votre lumière.
 
WRInaute impliqué
Imprime la veluer des variables dans ta page avant d'interrroger la base de donnée. Tu verra bien ce qui se passe.

Je n'ai rien lu sur une limite en longueur des variables, mais elle existe peut etre.
 
WRInaute accro
Re: Problème de variables dans mon rewriting, valeur limitée

efrancilien a dit:
La longueur de la valeur d'une variable est elle limitée dans le rewritting ???

Pas de limite d'Apache mais vu que la longueur de l'url réécrite est limité à 256 caractères. La variable pourra faire max ~250 caracteres
 
Nouveau WRInaute
Problème de casse en retour de $_GET

voilà le resulat :

Code:
Valeur de $_GET['var2'] recupérée par la version php
D0DhTJWHioccKtmXOSnQU4Wb09FtRfrV


Code:
Valeur de $_GET['var2'] recupérée par la version rewittée
d0dhtjwhioccktmxosnqu4wb09ftrfrv

Je précise que le lien 1 et 2 de depart contient bien dans les deux cas :
Code:
D0DhTJWHioccKtmXOSnQU4Wb09FtRfrV
Pourquoi mon $_GET['var2'] issu de mon rewritting modifie t'il la casse de certains caractères et comment eviter qu'il le fasse ?

merci encore.
 
WRInaute impliqué
Ca met en minuscule apparament donc. Mais ça ne le fait pas avec des chaines plus courtes?

Sinon, on m'a toujours dit que c'était pas une bonne idée d'utiliser des majuscules dans les URL... Bon, ça ne résoud pas le problème, ça le contourne.

Quelle version d'apache tu as?
 
Nouveau WRInaute
Pour la version apache, c'est celle installée avec le kit EasyPh 1.8
En fait, j'ai fait une erreur d'analyse, ce n'est pas une question de longueur de chaine mais bien un probleme de casse.
Toutes les majuscules de l'URL sont transformées en minuscules par le serveur au moment du rewriting.
Concernant la valeur, je la récupère d'une API que j'exploite, donc je ne peux pas la modifier !

N'ayant pas trouvé comment faire directement, je me suis monté un fonction qui crypte la valeur dans l'url et qui la décrypte ensuite sur la page cible, je n'ai trouvé que cela pour résoudre mon problème. Pas super catholique mais au moins tout fonctionne désormais !

Merci pour vos réponses à tous.

Ps voici le code utilisé, on sait jamais çà peut servir à d'autres !

Code:
Function Crypte($Chaine) {
		$PassCrypte="";
		$keys = array("a" => "00", "b" => "01", "c" => "02", "d" => "03", "e" => "04", "f" => "05", 
              "g" => "06", "h" => "07", "i" => "08", "j" => "09", "k" => "10", "l" => "11", 
              "m" => "12", "n" => "13", "o" => "14", "p" => "15", "q" => "16", "r" => "17", 
              "s" => "18", "t" => "19", "u" => "20", "v" => "21", "w" => "22", "x" => "23", 
              "y" => "24", "z" => "25", 
              "A" => "26", "B" => "27", "C" => "28", "D" => "29", "E" => "30", "F" => "31", 
              "G" => "32", "H" => "33", "I" => "34", "J" => "35", "K" => "36", "L" => "37", 
              "M" => "38", "N" => "39", "O" => "40", "P" => "41", "Q" => "42", "R" => "43", 
              "S" => "44", "T" => "45", "U" => "46", "V" => "47", "W" => "48", "X" => "49", 
              "Y" => "50", "Z" => "51",
			  "0" => "aa", "1" => "bb", "2" => "cc", "3" => "dd", "4" => "ee", "5" => "ff",
			  "6" => "gg", "7" => "hh", "8" => "ii", "9" => "jj"); 
 
		$number = strlen($Chaine); 
		for ($i=0; $i<$number; $i++) { 
			$PassCrypte.=$keys[substr($Chaine, $i, 1)];
		}
return $PassCrypte;
}






Code:
function Decrypte ($Chaine){
		$PassDeCrypte="";
		$keys = array("00" => "a", "01" => "b", "02" => "c", "03" => "d", "04" => "e", "05" => "f", 
	              "06" => "g", "07" => "h", "08" => "i", "09" => "j", "10" => "k", "11" => "l", 
	              "12" => "m", "13" => "n", "14" => "o", "15" => "p", "16" => "q", "17" => "r", 
	              "18" => "s", "19" => "t", "20" => "u", "21" => "v", "22" => "w", "23" => "x", 
	              "24" => "y", "25" => "z", 
	              "26" => "A", "27" => "B", "28" => "C", "29" => "D", "30" => "E", "31" => "F", 
	              "32" => "G", "33" => "H", "34" => "I", "35" => "J", "36" => "K", "37" => "L", 
	              "38" => "M", "39" => "N", "40" => "O", "41" => "P", "42" => "Q", "43" => "R", 
	              "44" => "S", "45" => "T", "46" => "U", "47" => "V", "48" => "W", "49" => "X", 
	              "50" => "Y", "51" => "Z",
				  "aa" => "0", "bb" => "1", "cc" => "2", "dd" => "3", "ee" => "4", "ff" => "5",
				  "gg" => "6", "hh" => "7", "ii" => "8", "jj" => "9"); 
			$number = strlen($Chaine); 
			for ($i=0; $i<$number; $i=$i+2) {
			$PassDeCrypte.=$keys[substr($Chaine,$i,2)];
			}
return $PassDeCrypte;
}
[/code]
 
Discussions similaires
Haut