Chemin de page en php et remplacement de lien [resolu]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Chemin de page en php et remplacement de lien [resolu]

Re: Chemin de page en php et remplacement de lien [resolu]

par oblab » 06 févr. 2011, 01:53

J'ai trouvé tout seul ma réponse grâce à un preg_replace :

$linkArray = preg_replace('`\/galeries\/`', '/',$linkArray);

on recherche /galeries/ dans l'Url que l'on remplace par un / (slash) et on demande ensuite de renvoyer le linkArray qui en résulte
Pour certain ça paraît évident, mais pas pour un débutant en php

Re: Chemin de page en php et rewritting d'urls

par oblab » 27 janv. 2011, 01:57

Merci ! oui une regex semble être la solution, je suis parvenu à supprimer l'affichage "galeries" dans mon chemin de page.

Par contre, impossible d'enlever le "/galeries/ des urls, j'ai essayé avec un preg_replace, mais je ne suis pas trop doué en php... :?

Une idée

Re: Chemin de page en php et remplacement de lien

par Maitrepylos » 26 janv. 2011, 10:03

Comme je te l'ai dit, c'est dans tes pages affichant le lien que tu dois travailler, et avec une simple regex cela devrais ne pas trop poser de souci.

Re: Chemin de page en php et remplacement de lien

par oblab » 26 janv. 2011, 09:56

Merci beaucoup pour ces premiers éléments de réponses,

L'idée ne serait pas de supprimer "galeries" via un rewritting d'url, mais plutôt de cacher ce niveau d'arborescence dans le chemin de page. N'existe-t-il pas un équivalent de type "display none" que je pourrais intégrer au code php de mon chemin de page ?

Re: Chemin de page en php et remplacement de lien

par Maitrepylos » 25 janv. 2011, 11:01

Bonjour,

Le souci est que tu utilises un cms, si dans ton code, on supprime la partie que tu désires, cela risque d'avoir des effets de bord indésirable dans l'ensemble de ton site.

L'idéal serais alors de modifier ce lien dans chaque page l'affichant.

Chemin de page en php et remplacement de lien [resolu]

par oblab » 23 janv. 2011, 17:42

Bonjour à tous,

JE souhaite utiliser un chemin de page en php dont vous trouverez le code ci-dessous. ce chemin sera appelé dans des pages situées dans un répertoire "galeries" de mon site. Mais je veux que ce chemin de page renvoie à des urls situées sur mon cms. En d'autre terme, je cherche le moyen de supprimer le répertoire "galeries" du chemin de page (string et link).

Exemple : actuellement mon chemin de page me donne "Accueil / galeries / XXeme_siecle / galerie1" lorsque je suis dans la galerie 1. Je veux supprimer "galeries" pour obtenir "Accueil / XXeme_siecle / galerie1" afin de permettre à l'utilisateur d'accéder à la page XXeme_siècle de mon cms.

Quel code dois-je ajouter à mon fichier backlinks.php

Merci !

Mon fichier backlinks.php :
<?php

$convert_toSpace = true;	// true if script should convert _ in folder names to spaces
$upperCaseWords = true;	// true if script should convert lowercase to initial caps
$topLevelName = "Accueil";		// name of home/root directory
$separator = " > ";		// characters(s) to separate links in hierarchy (default is a > with 2 spaces on either side)

// find index page in directory...
function MPBCDirIndex($dir) {
	$index = '';
	@$dir_handle = opendir($dir);
	if ($dir_handle) {
		while ($file = readdir($dir_handle)) {
			$test = substr(strtolower($file), 0, 6);
			if ($test == 'index.') {
				$index = $file;
				break;
				}
			}
		}
	return $index;
	}

// make clean array (trim entries and remove blanks)...
function MPBCTrimArray($array) {
	$clean = array();
	for ($n=0; $n<count($array); $n++) {
		$entry = trim($array[$n]);
		if ($entry != '') $clean[] = $entry;
		}
	return $clean;
	}

// function to prep string folder names if needed...
function MPBCFixNames($string) {
	global $convert_toSpace;
	global $upperCaseWords;
	if ($convert_toSpace) $string = str_replace('_', ' ', $string);
	if ($upperCaseWords) $string = ucwords($string);
	return $string;
	}

$server = (isset($_SERVER)) ? $_SERVER : $HTTP_SERVER_VARS;

$htmlRoot = (isset($server['DOCUMENT_ROOT'])) ? $server['DOCUMENT_ROOT'] : '';
if ($htmlRoot == '') $htmlRoot = (isset($server['SITE_HTMLROOT'])) ? $server['SITE_HTMLROOT'] : '';

$pagePath = (isset($server['SCRIPT_FILENAME'])) ? $server['SCRIPT_FILENAME'] : '';
if ($pagePath == '') $pagePath = (isset($server['SCRIPT_FILENAME'])) ? $server['SCRIPT_FILENAME'] : '';

$httpPath = ($htmlRoot != '/') ? str_replace($htmlRoot, '', $pagePath) : $pathPath;

$dirArray = explode('/', $httpPath);
if (!is_dir($htmlRoot.$httpPath)) $dirArray = array_slice($dirArray, 0, count($dirArray) - 1);

$linkArray = array();
$thisDir = '';
$baseDir = ($htmlRoot == '') ? '' : $htmlRoot;
for ($n=0; $n<count($dirArray); $n++) {
	$thisDir .= $dirArray[$n].'/';
	$thisIndex = MPBCDirIndex($htmlRoot.$thisDir);
	$thisText = ($n == 0) ? $topLevelName : MPBCFixNames($dirArray[$n]);
	$thisLink = ($thisIndex != '') ? '<a href="'.$thisDir.$thisIndex.'">'.$thisText.'</a>' : $thisText;
	if ($thisLink != '') $linkArray[] = $thisLink;
	}

$results = (count($linkArray) > 0) ? implode($separator, $linkArray) : '';
if ($results != '') print('<div class="backlinks">'.$results.'</div>');

?>