URL rewriting et formulaire

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Hayu, 24 Septembre 2012.

  1. Hayu
    Hayu Nouveau WRInaute
    Inscrit:
    24 Septembre 2012
    Messages:
    16
    J'aime reçus:
    0
    Bonjour,

    Je me permet de poster ce message afin de vous faire part d'un problème que je n'arrive pas à solutionner.

    J'ai suivi la méthode de "Spout"
    https://www.webrankinfo.com/forum/pratique-htaccess-lire-avant-poser-t13288 ... l#p1217718
    Mais je coince sur un petite point .

    Mon formulaire
    Code:
    	<form method="GET" action="">
    		Enter a value for $_POST['some_text']: <input type="text" name="some_text" />
    		<input type="submit" />
    	</form>
    
    Traitement de données URL
    Code:
    $type = 'GET';//QUERY_STRING, REQUEST_URI, PATH_INFO ou GET
    
    switch ($type) {
        case 'QUERY_STRING':
        case 'PATH_INFO':
            $url = $_SERVER[$type];
            break;
    
        case 'REQUEST_URI':
            $url = substr($_SERVER[$type], strlen($_SERVER['SCRIPT_NAME']));
            break;
    
        case 'GET':
            $url = $_GET['some_text'];
            break;
    
        default:
            break;
    }
    
    $params = explode('/', $url);
    array_shift($params);//Suppression du premier paramètre vide
    
    //Récupération des variables pour l'exemple: http://example.com/module/action/param1/param2
    list($module, $action, $param1, $param2) = $params;
    echo sprintf('module: %s<br />action: %s<br />param1: %s<br />param2: %s<br />', $module, $action, $param1, $param2);
    
    .Htaccess
    Code:
    Options -Indexes
    RewriteOptions Inherit
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^recherche/(.+)$ recherche.php?some_text=/$1 [L,QSA]
    
    Traitement du code (ça fonctionne)
    Code:
    if(isset($_GET['some_text']) && $_GET['some_text'] != NULL)
    	{
    	$requete = rename_dir($_GET['some_text']);
    	//$requete_new=explode("recherche.php?requete=", $_SERVER['REQUEST_URI']);
    	//if(rename_dir($requete_new[1])!=rename_dir($_SESSION['some_text']) && $requete_new[1]!=NULL){$requete=$requete_new[1];}
    	$req = $GLOBALS['connexion']->prepare("SELECT * FROM cleusb WHERE ref LIKE :requete or gamme LIKE :requete ORDER BY id DESC");
    	$req->execute(array('requete' => '%'.$requete.'%'));
    	$nb_resultats = $req->rowCount(); 
    	if($nb_resultats != 0)
    		{?>
    		<h3>R&eacute;sultats de votre recherche.</h3>
    		<p>Nous avons trouv&eacute; <?php echo $nb_resultats; 
    		
    		
    		if($nb_resultats > 1) { echo 'r&eacute;sultats'; } else { echo 'r&eacute;sultat'; } 
    		?>
    		dans notre base de donn&eacute;es. Voici les fonctions que nous avons trouv&eacute;es :<br/><br/>
    		<?php
    		while( $donnees = $req->fetch(PDO::FETCH_OBJ) )
    			{
    			?>
    			<a href="fonction.php?id=<? echo $donnees->id; ?>"><? echo $donnees->ref ?></a><br/>
    			<?php
    			} 
    		?>
    		<br/>
    		<br/>
    		<a href="recherche.php">Faire une nouvelle recherche</a></p>
    		<?php
    		} 
    	else
    		{ ?>
    		<h3>Pas de r&eacute;sultats</h3>
    		<p>Nous n'avons trouv&eacute; aucun r&eacute;sultat pour votre requ&ecirc;te. <a href="recherche.php">R&eacute;essayez</a> avec autre chose.</p>
    		<?php
    		}
    		$req->closeCursor(); 
    	} ?>
    

    Je voudrai que quand une personne effectue une recherche l'url soit du type
    http://www.site.com/recherche/[Var]

    en tapant dans ma barre d'url http://www.site.com/recherche/[Var] j'arrive directement sur la bonne page mais en cliquant via mon formulaire pas moyen il me retourne toujours http://www.site.com/recherche.php?... (pas moyen de faire passer le $_GET dans la action du formulaire)
    Il y a t-il une solution pour contourner cela sans passer par un script de soumission javascript un peu comme http://equidir.com/fr/annuaire/search/test ?
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 029
    J'aime reçus:
    291
  3. Hayu
    Hayu Nouveau WRInaute
    Inscrit:
    24 Septembre 2012
    Messages:
    16
    J'aime reçus:
    0
    Ok merci pour ta réponse rapide, ça fonctionne assez bien après avoir bidouillé un peu
    Par contre quand j'ai recherche vide avec l'url recherche/ j'ai une page d'erreur comme si l'url rewriting ne fonctionnait plus.
    de plus quand on tape par exemple /recherche/recherche/recherche/test on arrive toujours à la page de recherche pareil pour ton site perso. Ce n'est pas considéré comme de duplicate content ça?

    Code:
    
    <?php
    if(isset($_SESSION['some_text']) && $_SESSION['some_text'] != NULL)
    	{
    	$requete = rename_dir($_SESSION['some_text']);
    	$requete_new=explode("/impors/recherche/", $_SERVER['REQUEST_URI']);
    	echo  $_SERVER['REQUEST_URI'];
    	if(rename_dir($requete_new[1])!=rename_dir($_SESSION['some_text']) && $requete_new[1]!=NULL){$requete=rename_dir($requete_new[1]);}
    	$req = $GLOBALS['connexion']->prepare("SELECT * FROM cleusb WHERE ref LIKE :requete or gamme LIKE :requete ORDER BY id DESC");
    	$req->execute(array('requete' => '%'.$requete.'%'));
    	$nb_resultats = $req->rowCount(); 
    	if($nb_resultats != 0)
    		{?>
    		<h3>R&eacute;sultats de votre recherche.</h3>
    		<p>Nous avons trouv&eacute; <?php echo $nb_resultats; 
    		
    		
    		if($nb_resultats > 1) { echo 'r&eacute;sultats'; } else { echo 'r&eacute;sultat'; } 
    		?>
    		dans notre base de donn&eacute;es. Voici les fonctions que nous avons trouv&eacute;es :<br/><br/>
    		<?php
    		while( $donnees = $req->fetch(PDO::FETCH_OBJ) )
    			{
    			?>
    			<a href="fonction.php?id=<? echo $donnees->id; ?>"><? echo $donnees->ref ?></a><br/>
    			<?php
    			} 
    		?>
    		<br/>
    		<br/>
    		<a href="recherche.php">Faire une nouvelle recherche</a></p>
    		<?php
    		} 
    	else
    		{ ?>
    		<h3>Pas de r&eacute;sultats</h3>
    		<p>Nous n'avons trouv&eacute; aucun r&eacute;sultat pour votre requ&ecirc;te "<? echo htmlspecialchars($requete_new[1]); ?>". <a href="recherche.php">R&eacute;essayez</a> avec autre chose.</p>
    		<?php
    		}
    		$req->closeCursor(); 
    	} ?>
    
    
    
    	<form method="POST" action="">
    		<p>Enter a value for $_POST['some_text']: <input type="text" name="some_text" /></p>
    		<p><input type="submit" /></p>
    	</form>
    
    Code:
    	if (isset($_POST['some_text']) && $_POST['some_text']!=NULL) {
    	$_SESSION['some_text'] = $_POST['some_text'];
    
    	header ('HTTP/1.1 303 See Other');
    	header ('Location: ../recherche/'.rename_dir($_POST['some_text']));
    


    Code:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^recherche/(.+)$ recherche.php?some_text=/$1 [L,QSA]
    
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 029
    J'aime reçus:
    291
    C'est la règle de rewrite qui s'attend à qqch après recherche/
     
  5. Hayu
    Hayu Nouveau WRInaute
    Inscrit:
    24 Septembre 2012
    Messages:
    16
    J'aime reçus:
    0
    Ok merci j'ai corrigé

    Merci pour ton aide

    Petite question, car j'aime comprendre mon code : Pourquoi utilise t-on [QSA] dans la règle de ré-écriture dans l'Htaccess?
     
Chargement...
Similar Threads - rewriting Forum Date
supprimer /index.html sans url rewriting, possible ? URL Rewriting et .htaccess 13 Novembre 2019
Je bloque sur le rewriting des URL contenant un ? URL Rewriting et .htaccess 3 Septembre 2019
récupération du get après rewriting URL Rewriting et .htaccess 21 Juin 2019
Ralentissement url rewriting URL Rewriting et .htaccess 1 Mai 2019
URL Rewriting Débuter en référencement 17 Avril 2019
Conflit de redirection 301 et Urlrewriting Netlinking, backlinks, liens et redirections 20 Février 2019
URL REWRITING et redirection 301 URL Rewriting et .htaccess 24 Janvier 2019
URL Rewriting : difficultés avec RewriteCond ? URL Rewriting et .htaccess 5 Décembre 2018
Résolu URL Rewriting : Garder l'adresse non transformée dans le navigateur URL Rewriting et .htaccess 2 Décembre 2018
Mes débuts dans l'URL Rewriting URL Rewriting et .htaccess 14 Novembre 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice