[RESOLU] Probleme de href

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 : [RESOLU] Probleme de href

Re: [RESOLU] Probleme de href

par Saian » 11 août 2020, 16:07

J'imagine que quand tu es dans un script dans un sous répertoire, tu n'obtiens pas la même valeur avec $base et du coup les liens ne sont plus bons. ;)

Re: Probleme de href

par Nguyenfr » 09 août 2020, 15:32

Salut Saian,
Ca marche, merci beaucoup, mais c'est un peu bizarre, cad: dans fonction href si je mets en dur "/V1/" ca marche et si je mets comme :
<?php
function href($path) {
$base = $_SERVER['PHP_SELF'];
$base = dirname ($base)."/";
return $base.$path;
}
?>
Ca marche premier fois, et apres ca ne marche plus, poutant j'ai bien recuperer "/V1/". En tout cas ca marche.
Merci encore beaucoup a toi.

Re: Probleme de href

par Saian » 08 août 2020, 15:32

Tu ne sais pas déclarer une fonction ? Pour la documentation c'est par ici : https://www.php.net/manual/fr/language.functions.php

Tu pourrais par exemple faire une fonction href :
<?php
function href($path) {
  $base = '/v1/';
  return $base.$path;
}
?>
<a href="<?php echo href('page1/page1.php'); ?>">Page 1</a>

Pour ce qui est de sa déclaration, généralement tu vas mettre ça dans un fichier de fonctions que tu inclus dans toutes les pages où nécessaire. La j'ai fait une fonction super basique, libre à toi d'améliorer ça. Si tu changes d'environnement, tu n'as qu'à corriger cette fonction et si en plus tu peux récupérer $base de façon automatique, bingo.

Re: Probleme de href

par Nguyenfr » 08 août 2020, 06:53

Bonjour Saian,
Je suis ton conseil et j'arrive a recuperer le racine par :

$racine = $_SERVER['PHP_SELF'];
$racine = dirname ($racine);
Mais je n'arrive pas a faire comme tu me conseille comme passer une fonction malgre j'ai bien cherche sur le net. Peux-tu m'aider ? je suis nouveau sur php et je connais pas beaucoup.
Merci a toi

Re: Probleme de href

par Saian » 06 août 2020, 15:59

Comme déjà dit, à mon sens il faut faire une fonction qui construit l'adresse absolue à partir de l'adresse relative.

Ton site est déjà dans un sous répertoire v1, qui pourrait devenir v2, etc et qui pourrait totalement sauter une fois en production.

Pour moi la solution la plus simple est d'avoir une fonction à laquelle tu passes page1/page1.php et qui automatiquement va ajouter le /v1/. Et si tu passes sur du /v2 voir sur rien, tu as juste à modifier le code de cette fonction.

Dans ton cas, sans faire cette fameuse fonction, une syntaxe <a href="../page1/page1.php">Page 1</a> devrait fonctionner tant que le menu est inclus dans des pages qui sont dans un sous répertoire.

Si jamais tu es dans un sous sous répertoire (ou plus, genre page1/rep1/page.php) ou que tu es dans le répertoire v1, les chemins ne seront plus bons.

Tu pourrais imaginer de définir une variable avant l'include avec le début du chemin absolu en fonction de la page où est inclus le menu, mais franchement pour moi c'est une solution à s'arracher les cheveux.

Re: Probleme de href

par Nguyenfr » 06 août 2020, 14:49

Bonjour,
Ca marche, mais v1 c'est le nom du repertoire qui contient tous, si je copie tous les programmes dans une autre repertoire le programme ne marche plus, comment je peux remplacer v1 par un autre truc.
Merci a ton aide.

Re: Probleme de href

par Saian » 06 août 2020, 14:32

Tu as juste à faire comme ça <a href="/v1/page1/page1.php">Page 1</a>

PS : après me concernant le mieux reste quand même de toujours passer par une fonction à laquelle tu peux passer le chemin relatif et qui va construire le lien complet sans ou avec le nom de domaine au besoin (un paramètre booléen absolute url).

Ainsi lors de n'importe quel changement d'environnement, tu peux toujours corriger tous les liens sans devoir les reprendre un par un. C'est pour moi un truc de base quand on fait des sites ou applications web.

Re: Probleme de href

par Nguyenfr » 06 août 2020, 14:27

Salut Saian,
Pour mon truc comment je doit corriger pour qu'il marche? j'ai tout essaye avec sans / avec / et ./ ou \ ou ..\ mais impossible.
si tu as un autre methode je suis preneur.
Merci a toi.

Re: Probleme de href

par Saian » 06 août 2020, 14:10

Salut, sans / au début du href, le lien est relatif. Donc si tu es dans un sous répertoire, le lien va partir du sous répertoire.

Si tu veux partir de la racine, ajoute simplement un / au début du href.

Probleme de href

par Nguyenfr » 06 août 2020, 13:41

Bonjour,
Quelqu'un peut m'aider pour mon probleme?

J'ai 1 fichier index.php et 4 repertoires :
html : Contient le fichier menu.html
css : Contient le fichier menu.css
page1 : Contient programme page1.php
page2 : Contient programme page2.php

Quand je lance le fichier index.php, il affiche le menu correcte .
Quand je clique le programme page2.php, il affiche le programme page2.php
Apres je clique le programme page1.php le programme plante le message comme :

Not Found
The requested URL /v1/page2/page1/page1.php was not found on this server.

Les sources :
menu.html
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<link href="css/menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="menu">
<ul>
<!---------->
<li>
<a href="#">Page 1</a>
<ul class="dropdown">
<li>
<a href="page1/page1.php">Page 1</a>
</li>
</ul>
<!---------->
<li>
<a href="#">Page 2 </a>
<ul class="dropdown">
<li>
<a href="page2/page2.php">Page 2</a>

</ul>
</div>
</body>
</html>
---------------------------------------

Page1.php
<?php
include("../html/menu.html");
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<link href="../css/menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<center>
<font size="5" >
<h1>Page 1</h1>
</font>
</center>
</body>
</html>
--------------------
Page2.php
<?php
include("../html/menu.html");
?>
<html>
<head>
<title>Đơn Đặt Hàng</title>
<meta charset="utf-8">
<link href="../css/menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1> Page 2</h1>
</body>
</html>
---------------------
index.php
<?php
include("html/menu.html");
?>


Merci a votre aide.
Nguyenfr