OVH Cloud OVH Cloud

Logiciel

12 réponses
Avatar
Pathelsy
Bonjour,
je m'interesse fortement au PHP depuis un ptit moment. J'utilise le plus
souvent dreamveaver 4 pour travailler car c'est un très bon logiciel
surtout pour le html.Mon site est composé d'un bon nombres de pages et
fichiers.
Je souhaiterai savoir s'il existe un logiciel qui soit en mesure de
modifier un lien récurant d'un seul clic (en fait un vrai gestionaire de
site) sur toutes les pages de mon site (lien en html ou en balises php).
Ceci m'interesse car je souhaite modifier mon système d'imbrication qui
est du style:
index.php?page=nom_de_la_page
avec le script:

<script language="php">
// si page n'est pas definie, alors la page d'accueil se lance
if(!isset($page))
{
include "accueil.htm";
}
// si la page est definie, alors, on l'inclut !
else
{
// on vérifie que la page existe
if(file_exists("$page.htm"))
{
include "$page.htm";
}
else if(file_exists("$page.html"))
{
include "$page.html";
}
else if(file_exists("$page.php"))
{
include "$page.php";
}
else if(file_exists("$page"))
{
include "$page";
}
// La page demandée est introuvable, le serveur renvoie 404
else
{
include "erreur404.htm";
}
}</script>



par celui-ci
<?
if(isset($_GET['mod']))
{
if($_GET['mod']=='news') include('news.php');
elseif($_GET['mod']=='soumettrenews') include('soumettrenews.php');
elseif($_GET['mod']=='voirnews') include('voirnews.php');
elseif($_GET['mod']=='articles') include('articles.php');
elseif($_GET['mod']=='voirarticle') include('voirarticle.php');
}
else
{
include ('accueil.php')
}
?>

Ce changement m'oblige à changer de nombreux liens et j'aimerai ne pas
en oublier un un.


Merci.

10 réponses

1 2
Avatar
bruno modulix
Pathelsy wrote:
Bonjour,
(snip)

Je souhaiterai savoir s'il existe un logiciel qui soit en mesure de
modifier un lien récurant d'un seul clic (en fait un vrai gestionaire de
site) sur toutes les pages de mon site (lien en html ou en balises php).


perl, python, sed ou awk font ça très bien... à condition de savoir leur
demander gentiment !-)

Ceci étant, il me semble que dreamweaver sait faire ça aussi, non ?

Ceci m'interesse car je souhaite modifier mon système d'imbrication
(snip)

par celui-ci
<?
if(isset($_GET['mod']))
{
if($_GET['mod']=='news') include('news.php');
elseif($_GET['mod']=='soumettrenews') include('soumettrenews.php');
elseif($_GET['mod']=='voirnews') include('voirnews.php');
elseif($_GET['mod']=='articles') include('articles.php');
elseif($_GET['mod']=='voirarticle') include('voirarticle.php');
}
else
{
include ('accueil.php')
}
?>


utilise plutôt l'instruction switch:

if(isset($_GET['mod'])) {
switch ($_GET['mod']) {

case 'news':
include('news.php');
break;

case 'soumettrenews':
include('soumettrenews.php');
break;

case (...) :
(etc)

default:
include ('accueil.php');
break;
}
}
else {
include ('accueil.php')
}

Ce changement m'oblige à changer de nombreux liens et j'aimerai ne pas
en oublier un un.


Louable intention. BTW, pense à ajouter un système qui te génère les
menus et autres éléments de navigation, ça te fera gagner du temps pour
les modifications future !-)

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
Guillaume Bouchard
Pathelsy wrote:
Bonjour,


Bonjour.

je m'interesse fortement au PHP depuis un ptit moment. J'utilise le plus
souvent dreamveaver 4 pour travailler car c'est un très bon logiciel
surtout pour le html.


Dreamweaver est un tres bon logiciel, mais il ne sait pas faire de html.

index.php?page=nom_de_la_page

avec le script:
[...]


Heureusement que tu veux changer, c'etait la pire saloperie en matière
de failles.


if(isset($_GET['mod']))


Tu ne pas pas seulement utiliser $_GET['page'] ? Je suis curieux mais
pourquoi te fatigues tu pour rien ?

--
Guillaume.

Avatar
Sebastian 'CrashandDie' Lauwers
bruno modulix wrote:

[...]

utilise plutôt l'instruction switch:


L'éternelle bataille entre pro-switch et pro-if/else...

if(isset($_GET['mod'])) {
[... reste du switch ...]


Une autre technique kivabien:

<php>
$pages = array (
'home' => 'includes/home.php',
'bio' => 'includes/biography.php',
'pics' => 'includes/pictures.php',
'vidz' => 'includes/videos.php',
'zik' => 'includes/music.php',
'info' => 'includes/information.php',
'contact' => 'includes/contact.php',
'admin' => 'includes/administration.php',
'error' => 'includes/error.php',
'liens' => 'includes/liens.php'
);


if (!isset ($_GET['page']))
$page = 'includes/home.php';

else if (array_key_exists ($_GET['page'], $pages)) {
$page = $_GET['page'];
$page = $pages[$page];

}
else
header ('Location: main.php');

</php>

Remarquez comme les noms de fichiers sont différents du nom appellé par
$_GET... Car si nom appellé est juste le nom sans le .php, ce n'est pas
d'une réelle utilité. Les fichiers inclus devraient dans la plupart des
cas être dans un dossier, protégé par .htaccess deny from all, ou hors
de l'arborescence du site.


Ce changement m'oblige à changer de nombreux liens et j'aimerai ne pas
en oublier un un.



Je ne sais pas s'il existe un tel programme, cependant, pourquoi ne pas
se référer à la fonction replace des éditeurs de texte? Si le nombre de
pages est vraiment très important, une petite heure de lecture de manuel
sur les fonctions str* te permettra sans doute de modifier les liens
souhaités.

[...]


Amicalement,
S.


Avatar
Eric
Je ne sais pas s'il existe un tel programme, cependant, pourquoi ne pas
se référer à la fonction replace des éditeurs de texte? Si le nombre de
pages est vraiment très important, une petite heure de lecture de manuel
sur les fonctions str* te permettra sans doute de modifier les liens
souhaités.


Je vais répondre un poil à coté de la plaque, mais sous Dreamweaver MX, avec
un ctrl+F et en choisissant "site" à la place de "document actif" dans la
boite de dialogue, ca fait le remplacement pour toi ... à la condition que
ce soit écrit de la meme façon dans toutes les pages (meme espaces, retour à
la ligne etc).
La solution de Sebastian est la meilleure selon moi, mais profites-en pour
mettre tout ce qui est code récurrent dans une fonction ou dans un fichier
que tu appelleras par un include.

Bon courage !
PS : je suis un pro switch si on fait un sondage ! lol

Avatar
Guillaume Bouchard
Sebastian 'CrashandDie' Lauwers wrote:
L'éternelle bataille entre pro-switch et pro-if/else...


Moi je vote POUR ! (mais pour quoi ?)

Une autre technique kivabien:


kavamémvachmenbienmépatropkanmem

[...]
else if (array_key_exists ($_GET['page'], $pages)) {
$page = $_GET['page'];
$page = $pages[$page];


Tu m'expliques là ?

$page = $pages[$_GET['page']];

header ('Location: main.php');


Haaa, mon coeur !

1) l'entete Location prend une url ABSOLUE. Marquer dans les RFC... Je
sais que cela marche, mais c'est pas normé et sela peux ne plus marcher
un jour.
2) Machine à laver !!: Rechercher --> "John Gallet" + "Header" + "livreur"

Remarquez comme les noms de fichiers sont différents du nom appellé par
$_GET...


D'un autre coté, je ne sais pas si c'est bien... Parce que la page
toto?login qui pointe vers une faq, c'est lourd.

Car si nom appellé est juste le nom sans le .php, ce n'est pas
d'une réelle utilité.


c'est clair que livre.php c'est plus propre que index.php?page=livre.php
et le pire c'est que cela demande MOINS de code et MOINS de maitenance
pour l'ajout d'une page.

livre.php:
<?php

require('entete');

?>Milieu<?php

require('pied');

?>

Les fichiers inclus devraient dans la plupart des
cas être dans un dossier, protégé par .htaccess deny from all, ou hors
de l'arborescence du site.


Moué, je suis d'accord, mais que cela n'empeche pas de coder proprement
dans ces fichiers...

En plus avec la méthode citée plus haut, pas de probleme de fichier
appelés par dans leur contexte. Sauf avec pied, mais c'est plus facile à
proteger que quand il faut protegé tous le reste.

Je ne sais pas s'il existe un tel programme, cependant, pourquoi ne pas
se référer à la fonction replace des éditeurs de texte?


Mon éditeur de texte fait du replace sur plusieurs fichiers avec
expressions régulières. Donc cela existe. Mais c'est vrai que cela ne
prive en rien de lire la doc de sed/awk/whatUwant.

Si le nombre de
pages est vraiment très important, une petite heure de lecture de manuel
sur les fonctions str* te permettra sans doute de modifier les liens
souhaités.


Ton éditeur de texte si il gere pas "un nombre important de page" c'est
que faut le jeter...

--
Guillaume.
"The best text editor in the whole word: cat"

Avatar
FightClub!

Je vais répondre un poil à coté de la plaque, mais sous Dreamweaver MX, avec
un ctrl+F et en choisissant "site" à la place de "document actif" dans la
boite de dialogue, ca fait le remplacement pour toi ... à la condition que
ce soit écrit de la meme façon dans toutes les pages (meme espaces, retour à
la ligne etc).


Pour moi c'est Pomme-F mais sur le reste je suis d'accord ;)

La solution de Sebastian est la meilleure selon moi, mais profites-en pour
mettre tout ce qui est code récurrent dans une fonction ou dans un fichier
que tu appelleras par un include.

Bon courage !
PS : je suis un pro switch si on fait un sondage ! lol


+1

--

http://SurveilleTonSite.sd2i.org
... un site web en panne ne sert à rien !

Avatar
John Gallet
Bonjour,

else if(file_exists("$page"))
{
include "$page";
}


Quelqu'un disposant de php5 pourrati-il vérifier si file_exists ne va
pas maintenant être elle aussi capable de renvoyer TRUE sur du fichier
distant ? Il y a un truc qui me chiffone depuis un moment à la lecture
du manuel :
http://fr2.php.net/file_exists

Tip: As of PHP 5.0.0 this function can also be used with some URL
wrappers. Refer to Appendix L for a listing of which wrappers support
stat() family of functionality.

Sur http://fr2.php.net/manual/en/wrappers.http.php on dit que stat() ne
fonctionne pas. Pourquoi mettre ce "tip" alors ? Ca me parait clair
comme de la confiture de veilles chaussettes^Wsockets, ce truc.

JG
--
JR> Le progrès. Maintenant sur CD à dos de chameau. Quel protocole?
La détection de collision. Si deux chameaux se téléscopent, on
retransmet un kangourou.
-+- JYB in GNU : C'est cha mot pour mot -+-

Avatar
Sebastian 'CrashandDie' Lauwers
Guillaume Bouchard wrote:

Moi je vote POUR ! (mais pour quoi ?)


Moi je vote pas, j'ai pas ma carte d'électeur

kavamémvachmenbienmépatropkanmem


Moi j'aime bien, ça marche, c'est moi qui l'ai trouvé, donc j'aime bien,
donc ... (si vous prouvez que c'est Le Mal (c), je serais heureux de
changer)

Tu m'expliques là ?

$page = $pages[$_GET['page']];


Si ça peut faire plaisir... J'aime pas utiliser directement $_GET comme
ça, enfin c'est vrai qu'en y repensant, c'était un peu débile.


header ('Location: main.php');



Haaa, mon coeur !


Gnarf gnarf gnarf, quand j'ai relu mon message j'étais certain que
j'allais avoir droit à l'histoire du livreur de John... Cependant,
j'avais écrit ça de tête, et j'avais franchement le poids d'aller
chercher l'URI absolue. De plus l'était tard, j'allais me coucher, bref...

Méa Culpa, méa culpa, méa maxima culpa...

header (Location: ' . $_SERVER['DOCUMENT_ROOT'] . '/main.php');
Voilà, content?

D'un autre coté, je ne sais pas si c'est bien... Parce que la page
toto?login qui pointe vers une faq, c'est lourd.


La seule chose que je veux dire, c'est qu'il ne doit être trop facile
pour un utilisateur A La Recherche De La Nouvelle Faille (tm) de deviner
les noms des fichiers. Personnelement je déclare une constante dans le
fichier qui seul être autorisé à appeller, et je regarde si cette
constante est présente.
Méthode vue chez phpBB si ma mémoire ne me fait défaut.

c'est clair que livre.php c'est plus propre que index.php?page=livre.php
et le pire c'est que cela demande MOINS de code et MOINS de maitenance
pour l'ajout d'une page.


Rien compris.

livre.php:
<?php

require('entete');

?>Milieu<?php

require('pied');

?>


Oui, c'est donc la méthode de base, on utilise un header et un footer,
qu'on accole à toutes les pages. Ainsi si on doit changer quelquechose
dans le menu (par exemple, on modifie toutes les pages d'un coup, seul
le contenu des pages varie).

Moué, je suis d'accord, mais que cela n'empeche pas de coder proprement
dans ces fichiers...


On ne code proprement dans ses fichiers que si on le souhaite
franchement. Quelqu'un qui n'a pas envie de coder proprement ne le fera
pas, et ce, peu importe le "directory structure" (poids de chercher
l'équivalent en français)

[...]

Mon éditeur de texte fait du replace sur plusieurs fichiers avec
expressions régulières. Donc cela existe. Mais c'est vrai que cela ne
prive en rien de lire la doc de sed/awk/whatUwant.


J'ai toujours les fonctions search/replace... Gain de temps énorme pour
pour peu qu'on n'oublie pas de les utiliser au bon moment, question de
ne pas recommencer à la moitié de la page pour cause de flèmingite aïgue

Ton éditeur de texte si il gere pas "un nombre important de page" c'est
que faut le jeter...


My point being, qu'il ne me semble pas avoir vu dans Notepad une
fonction pour rechercher ou remplacer quelquechose dans une série de
fichiers.

Amicalement,
S.


Avatar
Guillaume Bouchard
Sebastian 'CrashandDie' Lauwers wrote:
Moi je vote pas, j'ai pas ma carte d'électeur


C'est un tord, voter c'est une liberté auquel tu as le droit, ne la
gache pas. Pense à ceux qui sont mort pour que l'on ai ce droit.

Gnarf gnarf gnarf, quand j'ai relu mon message j'étais certain que
j'allais avoir droit à l'histoire du livreur de John.
header (Location: ' . $_SERVER['DOCUMENT_ROOT'] . '/main.php');
Voilà, content?


Toujours pas, repense à l'histoire du livreur de John.
C'est l'histoire d'un livreur. Non on va innover tient. C'ets l'histoire
d'une requete http sur un serveur. Elle attend une reponse et on lui
repond : Retourne voir mon voisin.
Vu de l'exterieur, cela fait du temps en plus, du transfert en plus.
Vu de l'interieur cela fait 2x plus de requetes à traiter.

La seule chose que je veux dire, c'est qu'il ne doit être trop facile
pour un utilisateur A La Recherche De La Nouvelle Faille (tm) de deviner
les noms des fichiers


Et le jour où le nom des fichiers devient publique ?

Personnelement je déclare une constante dans le
fichier qui seul être autorisé à appeller, et je regarde si cette
constante est présente.


Méthode correct, mais tu n'est pas à l'abris d'un oubli.

Méthode vue chez phpBB si ma mémoire ne me fait défaut.


PhpBB c'est l'exemple même de l'usine à gaz propulsé par rayon
photonique à induction electrostatique.

c'est clair que livre.php c'est plus propre que
index.php?page=livre.php et le pire c'est que cela demande MOINS de
code et MOINS de maitenance pour l'ajout d'une page.



Rien compris.


soit tu fais index.php?page=toto et tu fais un switch sur ta page index,
soit tu fais :

require('entete');

?>Milieu<?php

require('pied');



Ce qui :
1) coute moins de code (au pire tu le met en auto include sur ton
éditeur de texte ou en fichier squelette que tu recopies à chaques fois.
2) Pose moins de problème de maniabilité. En effet il est toujours plus
simple de rajouter une page avec les require qui vont bien que d'ajouter
un bout d'include quelque part et de modifié la liste des fichiers
incluables de ton index.php

Ton *éditeur de texte* si il gere pas "un nombre important de page"
c'est que faut le jeter...


My point being, qu'il ne me semble pas avoir vu dans *Notepad* une
fonction pour rechercher ou remplacer quelquechose dans une série de
fichiers.


J'ai parlé d'un éditeur de texte. Pour être un éditeur, un soft à besoin
avant tout d'étre un visualisateur, ce que ne fait pas notepad (esseye
d'ouvrir un fichier avec les fin de lignes en n et rigole)...

--
Guillaume.


Avatar
Sebastian 'CrashandDie' Lauwers
Guillaume Bouchard wrote:

C'est un tord, voter c'est une liberté auquel tu as le droit, ne la
gache pas. Pense à ceux qui sont mort pour que l'on ai ce droit.


On est à la limite de la Charte (bha non tiens, c'est hors charte,
heureusement que le reste du message et du fil rattrape le coups).

Ce n'est pas que j'ai pas eu envie, c'est que je n'ai pas eu le temps de
m'en occuper, et n'étant pas français, la bureaucratie possède l'art de
toujours me compliquer les choses... J'ai envie de voter pour la
Constitution Européenne, hélàs je pense avoir été pris par le temps.

Toujours pas, repense à l'histoire du livreur de John.
C'est l'histoire d'un livreur. Non on va innover tient. C'ets l'histoire
d'une requete http sur un serveur. Elle attend une reponse et on lui
repond : Retourne voir mon voisin.
Vu de l'exterieur, cela fait du temps en plus, du transfert en plus.
Vu de l'interieur cela fait 2x plus de requetes à traiter.


Aaaaahh....

<php>
}
else
$page = 'includes/home.php';
</php>

Mieux comme ça? Ainsi, on envoie la page, sans jouer au ping pong avec
le client, même si la page demandée n'existe pas, on envoie la page
d'accueil de base...

Guillaume, je savais que je t'aimais bien, mais là, tu m'obliges à
t'aimer...

Et le jour où le nom des fichiers devient publique ?


Alors ce jour là on est heureux que les fichiers soient dans un dossier
protégé par .htaccess et qu'il y ai une vérification dessus.

Méthode correct, mais tu n'est pas à l'abris d'un oubli.


Je prends notte.

PhpBB c'est l'exemple même de l'usine à gaz propulsé par rayon
photonique à induction electrostatique.


Guillaume (tiens, je t'appelles de plus en plus par ton prénom, un
signe?), il est tard, et les thèses kiveuriendire j'ai eu ma dose pour
la soirée... (c'est l'interrupteur polyarithmique de nanoactivité
subspatiale qui détermine le coefficient de charge des particules à
neutron antigravitationnels et qui permet, si correctement branché sur
un circuit collinaire avec multiplicateur de charge permettrait de
voyager dans le temps)

soit tu fais index.php?page=toto et tu fais un switch sur ta page index,
soit tu fais :

require('entete');

?>Milieu<?php

require('pied');




Ce qui :
1) coute moins de code (au pire tu le met en auto include sur ton
éditeur de texte ou en fichier squelette que tu recopies à chaques fois.


Perso mon éditeur de texte, il ne fait que la collorisation syntaxique,
et je ne lui en demande pas plus (ZDE qui te fini les lignes en essayant
de comprendre ce que tu fais, sans y arriver et te faire perdre plus de
temps qu'autre chose, non merci [j'ai pris un extrème, je suis sûr qu'il
y a au moins un éditeur qui est très pratique avec auto-include etc...
Mais j'ai pas envie d'être corrigé la dessus, chacun son éditeur, chacun
ses façons générales de procéder])

2) Pose moins de problème de maniabilité. En effet il est toujours plus
simple de rajouter une page avec les require qui vont bien


Un jour (tiens, c'est aujourd'hui), quelqu'un m'a dit:

Méthode correct, mais tu n'est pas à l'abris d'un oubli.


que d'ajouter
un bout d'include quelque part et de modifié la liste des fichiers
incluables de ton index.php


J'avais utilisé cette technique sur un des premiers gros projets sur
lequel j'étais. J'avais complètement oublié que c'était pratique, faudra
que je revoie ma façon de faire.

J'ai parlé d'un éditeur de texte. Pour être un éditeur, un soft à besoin
avant tout d'étre un visualisateur, ce que ne fait pas notepad (esseye
d'ouvrir un fichier avec les fin de lignes en n et rigole)...


Encore une fois, chaque codeur utilise les outils qui lui vont bien,
avec lesquels ils ont leurs petites habitudes et façon de procéder
suivant l'importance des projets, et des besoins de ceux-ci, auxquels
ils participent. Notepad convient très bien pour l'édition/création de
petits scripts, mais il est plutôt restreint, c'est sûr.

Amicalement,
S.



1 2