liens PHP qui ont cessé de fonctionner tout bonnement...

Eléphanteau du PHP | 13 Messages

07 sept. 2006, 07:11

Salut.

Récément, les liens de mon site codé avec des bases PHP a cessé de fonctionné. Sinon, il a fonctionné correctement durant plus de 2 ans et le code n'avait pas été ré-édité depuis.

Ici j'ai attaché un exemple de code que j'utilise. J'ai tout condensé:



Est-ce que quelqu'un pourrait tester sur un serveur et m'indiquer pourquoi les liens ne marchent plus correctement?

mais bref, le ficher index ressemble à ceci;

Code : Tout sélectionner

<!------------------------> <!- METAS -> <!------------------------> <html> <head> <meta http-equiv="Content-Language" content="fr-ca"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Testing PHP links</title> </head> <body> <!---------------------------> <!- INITIALIZATION (PHP) ---> <!---------------------------> <?php // language by default $lang = ($lang) ? $lang : "en"; // page by default $page = ($page) ? $page : "news"; ?> <!------------------------> <!- LANGUAGE SELECTION -> <!------------------------> <table border="1" cellpadding="3" cellspacing="4" width="26%" bordercolor="#666666"> <tr> <td width="50%" bgcolor="#666666" align="center"> <?php echo "<a href=\"index.php?lang=".en."\">"; ?> English </a> </td> <td width="50%" bgcolor="#666666" align="center"> <?php echo "<a href=\"index.php?lang=".fr."\">"; ?> French </a> </td> </tr> </table> <!------------------------> <!- MAIN STUFF -> <!------------------------> <br><br> <table border="1" cellpadding="3" cellspacing="4" width="600" bordercolor="#666666"> <tr> <td colspan="3"><? include ("$lang/$page.txt") ?></td> </tr> </table> </body> </html>
Modifié en dernier par karvboy le 05 janv. 2007, 09:56, modifié 1 fois.

Mammouth du PHP | 19672 Messages

07 sept. 2006, 07:59

Au vu du code de ta page index affichée ici, je dirais en première approche que ton site était basé sur une configuration de PHP incluant une directive register_globals à ON qui serait passée à OFF lors d'une mise à jour de l'hébergeur.

Or dans ton code, tu as des variables non définies : "$lang" et "$page" qui doivent correspondre à $_GET['lang'] et $_GET['page']. Il te faut donc commencer par initialiser les variables en leur assignant une valeur :
<?php
/* Récupération des paramètres avec valeur par défaut */
$lang = (isset($_GET['lang'])) ? $_GET['lang'] : "en";
$page = (isset($_GET['page'])) ? $_GET['page'] : "news";
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

07 sept. 2006, 19:12

thanks! is there a page that teach how to deal with variable inside links?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 sept. 2006, 19:24

En français ? In English ?
En attendant => siteduzero

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

07 sept. 2006, 21:57

thanks! is there a page that teach how to deal with variable inside links?
Je suis désolé, j'étais dans la lune! Je suis tellement habituer de communiquer sur des forums anglophone!

traduction: Y'a t'il des pages web qui enseigne comment manipuler des variables à l'intérieur d'un lien?

je comprends parfaitement l'anglais aussi, donc ne soyez pas limité dans vos suggestions! :) merci!

Eléphanteau du PHP | 13 Messages

09 sept. 2006, 06:56

Je voudrais savoir si je suis correct avec ce petit passage. Ça marche quand je test, mais je voudrais être certain que c'est la bonne marche à suivre;

notez que j'ai deux dossiers: /fr et /en possédant chacun texte.txt
<a href="index.php?lang=fr"> Français </a>
<br><br>
<a href="index.php?lang=en"> English </a>

<br><br>
<?php echo $_GET['lang']; ?>

<? $lang2 = $_GET['lang']; ?>

<br><br>

<? include("$lang2/texte.txt");?>
c'est surtout le passage en blue qui me fait hésiter!

Merci!

Mammouth du PHP | 19672 Messages

09 sept. 2006, 08:18

tu devrais procéder en mettant une valeur par défaut : si en effet il n'y a pas de paramètre dans ton url, tu auras une erreur : donc tu pourrais faire comme ceci:
<a href="index.php?lang=fr"> Français </a>
<br><br>
<a href="index.php?lang=en"> English </a>

<br><br>
<?php
$lang2 = isset($_GET['lang']) ? $_GET['lang'] : "fr";
echo $lang2;
?>

<br><br>
<?php
include($lang2 ."/texte.txt");
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

09 sept. 2006, 12:43

$lang2 = isset($_GET['lang']) ? $_GET['lang'] : "fr";
une question. Que signifie le '?' au centre de l'affirmation? et à quoi sert le ':' ?

Mammouth du PHP | 19672 Messages

09 sept. 2006, 12:58

regarde dans le forum FAQ et cherche un titre avec "Opérateur ternaire", tu auras toutes les explications détaillées ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: