TOUT VOTRE SITE EN UNE SEULE PAGE : INDEX.PHP?MODULE=TRUCBIDULE ...
Utilisateur anonyme
-
11 juin 2003 à 21:26
cs_Children
Messages postés84Date d'inscriptionlundi 5 février 2007StatutMembreDernière intervention29 avril 2009
-
9 déc. 2008 à 18:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Fabrice88> J'ai écrit cette source il y a déjà un certain temps, il pourrait être légèrement amélioré. Je le laisse pour que ça donne juste une idée de méthode que chacun peut réimplémenter et personnaliser en fonction de ses besoins.
Pour ce qui est du référencement google, il t'est possible d'utiliser l'url-rewriting pour faire semblant d'avoir plusieurs pages simples. Tu as donc le beurre et l'argent du beurre : tu gères ton site avec un modèle de page unique, mais les url de ton sites restent simples et google croit voir un fichier par page. Saches toutefois que mapage.php?module=monmodule ne pose pas de problème à google.
Tu peux alors avoir quelquechose du genre :
www.monsite.ext/monmodule/mapage/
www.monsite.ext/monmodule/mapage.html
www.monsite.ext/mapage-id.html
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 déc. 2007 à 19:02
non ça change pas grand chose... par contre là ou ça peut jouer c'est si tu as trop de variable passées dans l'url... les googlebot apprécient moyennement mais...
www.monsite.ext/mapage.php?module=monmodule
ça pose pas spécialement de problème... .. .
cs_fabrice88
Messages postés97Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 7 août 2015 21 déc. 2007 à 08:32
sa vaut quoi niveau referencement ?
vue qu'on a plus qu'une page pour le site on risque pas d'avoir un mauvais referencement ?
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 2 déc. 2007 à 14:14
Ca n'a pas de sens ce que tu dis PYRRAH... il n'y a pas de raison de régler une faille qui est due au développeur... la faille include n'est pas due à php mais à l'utilisation que tu en fais... en développant correctement ton script tu n'aura pas de faille à l'inclusion... .. .
Moi ça me rassure pas trop avec la faille des includes sous PHP qui à l'heure actuelle n'est toujours pas réglé...
thor_le_asgard
Messages postés2Date d'inscriptionmercredi 23 mai 2007StatutMembreDernière intervention26 mai 2007 27 mai 2007 à 16:09
Une autre solution pour ce genre de script est d'utiliser un switch case comme ca pas de problemme de securité vu que l'on fait l'include en fonction de la variable envoyée. Je sais que c'est plus fastidieex mais c'est plus sécurisant !!
Tchao
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 3 avril 2007 à 02:26
Il reste une faille on peut faire une attaque directory transversal... .. .
function cleanVar($var)
{
return str_replace(array('../','..\\',"\0"),'',$var);
}
La source est maintenant corrigée, sans nécessiter que register_globals soit à On.
cs_CEPTA
Messages postés13Date d'inscriptionvendredi 24 janvier 2003StatutMembreDernière intervention28 mars 2007 2 avril 2007 à 19:11
slt,
vous avez pas un pt1 d'exemple sans variable global en entier correct...
cs_uzma
Messages postés3Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 7 octobre 2005 7 oct. 2005 à 18:31
aie !! maintenant j'ai un nouveau probléme !! de taille !!! c tout béte mais tres endicapent !!
a vous de voir !! ici http://mallet_p.club.fr/V4bonne/V4.php a parament tout va bien mais allé dans la rubrique symbole ( un des plu longue ! et la regarder les onglé anime et multimédia !! il ce son multiplier quel et ce prob ??? !!! aidez moi svp tennez si vous voulez voir la page http://mallet_p.club.fr/V4bonne.rar
Je ne peux pas t'aider beaucoup plus avec le peu d'information que tu laisse et le flou qui règne sur ton message. Donne un peu plus de détails sur ton problème et je pourrais peut-être t'aider. Essayer d'expliquer correctement un problème permet aussi de se poser les bonnes questions.
cs_uzma
Messages postés3Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 7 octobre 2005 26 août 2005 à 15:09
donc comment je peut faire pour que ca vienne au centre de ma page sans iframe et que quand je clique sur un lien de mon index ca aprraise au millieu ???
J'ai écrit ce code du temps où easyPHP mettait les register_globals à On par défaut. Maintenant c'est à Off pour des questions de sécurité (et c'est mieux).
Qu'est-ce qui ne va pas ?
Dans l'exemple de mon script, avec register_globals = On, si j'appelle index.php?mavariable=mavaleur, dans le script PHP la variable $mavariable sera définie avec $mavaleur. C'est dangereux car si le code est mal fait, on peut remplacer la valeur d'autres variables.
maintenant, il faut aller chercher les paramètres passés en url avec $_GET['mavariable'] et non plus avec $mavariable (ou $_POST, $_COOKIE, $_SESSION, ... suivant la méthode de passage de variable).
J'espère que ça pourra t'aider.
cs_uzma
Messages postés3Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 7 octobre 2005 26 août 2005 à 14:54
Bonjour !
moi j'ai un autre probléme j'ai fait toute mes page en php et j'aimerai qu'elle s'affiche au millieu de ma page quand j'ai cliquez sur un lien,a un endroit que j'ai définit sans scoll bare et iframe. j'ai donc fait le code suivant:
dans ma page d'accueil :
<? include("centre.php"); ?>
et dans une autre page qui s'apelle centre pour que puisse arriver les lien au millieu j'ai fait
elseif ($page=='FAQ') {include('faq.php');}
Mais je ne comprend pas pourquoi quand je clique sur le lien faq rien ne ce passe ca ne s'affiche pas au millieu comme je le souhaite et ca fait 1semaine que ej tourne autout du pot !!! SVP aidez moi !!!!
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 22 juin 2005 à 13:59
mieux vaut lire ça que d'être aveugle ^^
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 22 juin 2005 à 12:11
Je suis en train de préparer un super code source, et j'avais déjà pris la technique de totofweb. Voici mes conclusions.
Ca permet d'avoir un seul fichier de présentation dans lequel on colle tout ce qu'on veux. Sauf qu'il faut protéger par HTACCESS les fichiers qui serviront de calque: DENY FROM ALL
Il ne faut pas faire un truc du genre:
index.php?page=salut.php
Non, non, non !!! Plutôt:
index.php?page=UnNomDeCode
Et dans index.php, on aurait un tableau:
$Pages array('NomDeCode'> '007.php', 'GirlRubrique'=>'nanas.php', ....... );
Ainsi, les HTACCESS ne pourront jamais être affichés, et surtout le nom des fichiers servant de calques seront aussi protégés.
Reste ensuite à vérifier que le paramètre "page" se retrouve dans le tableau. Dans le cas contraire, on affiche la page d'accueil.
Autre point important. En passant par les tableaux, il suffit de renommer une case pour que tous les liens du site se modifient automatiquement.
Problème pour finir. Dans ces genres de trucs, si on fait "Précédent" dans MSIE, alors tout formulaire est purgé. Pas le droit à l'erreur quand on pste un formulaire, donc...
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 26 déc. 2004 à 14:16
Moi comme je l'ais dis sur un autre post voila ce que j'utilise...
<?php
// on définit le chemin du site
$path=$HTTP_SELF;
// on fait la vérif
if( file_exists( "$module.php" ) )
// si ok on inclue
include "$path/$module.php" ;
// sinon retour à l'accueil
else include 'accueil.php';
?>
Le $path sert à empecher l'inclusion d'une page exterieur au site... page qui pourrait contenir un script dangereux... à premiere vue, je dis bien à premiere vue, tu n'y a pas pensé... .. .
C'est plus simple que ta source vu qu'il n'y a qu'une variable... après ça dépend de la taille du site... moi c'est un tout petit site pour une assos... alors je ne pense pas avoir besoins d'appeler une page précise... .. .
Mais le probleme que j'ais c'est que je voudrais authentifier la page appelée pour interdire l'inclusion de page qui n'ont pas à l'être (comme le dit Tortuegeniale) je cherche et si je trouve je fais signe... .. . :o)
Difficile de t'aider sans avoir vraiment le code sous les yeux ... Mais déjà, vérifie que le fichier que tu veux inclure éxiste. Ensuite, regarde pourquoi la variable module est nulle (peut-être que tu t'es trompé quand tu appelle la variable ou que $module est mal initialisée, pour cela fait echo "var_module:".$module."
";).
sharkit
Messages postés27Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention 7 mai 2007 22 oct. 2003 à 00:43
Hello,
Toujours les memes qui s'accrochent :)
J'ai un soucis au niveau de l'include du module :
include "modules/$module/$page.php";
quand je suis sur la page accueil du site, ça me marque cela :
Warning: main(modules//index.php): failed to open stream: No such file or directory in /home/reunionb/www/soft/index.php on line 11
Warning: main(): Failed opening 'modules//index.php' for inclusion (include_path='') in /home/reunionb/www/soft/index.php on line 11
Ce que tu peux faire, c'est de mettre en plus de monmodule/monfichier.php, monmodule/monfichier.titre.txt.
Tu récupère le contenu de ce fichier et tu l'affiche dans <title>
Mais c'est une possibilité parmis pleins d'autres !!! Il y en a surement de meilleures
sharkit
Messages postés27Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention 7 mai 2007 18 oct. 2003 à 11:56
Ouaips,
Mais j'ai encore une question à la con : c'estbien, c'est mignon, mais si tu veux un titre différent à chaque page, tu fais comment ???
@
Sharkit
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 15 juil. 2003 à 21:06
mouarf ce qu'il fait c ce qu'on appele des pseudo-frames, ça sert a inserer dynamiquement le meme fichier sur plusieur page sans avoir a le foutre sur chaque page, t'arrive faire ça en javascript ? wouah appele billou il va surement avoir besoin de toi :)
dansap
Messages postés5Date d'inscriptionjeudi 26 juin 2003StatutMembreDernière intervention23 juin 2005 15 juil. 2003 à 15:33
Justement ça évite de surcharger le serveur avec des progs qui peuvent parfaitement être exécutés sur le client !
tiens c qui qui vas s'cacher là ?
Pour être plus constructif on pourrait comparer les avantages et inconvénients de ces deux méthodes ...
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 14 juil. 2003 à 21:55
pff t super toi va te cacher, les calques et le javascript c coté client, la cette source c du php, donc coté serveur ...
dansap
Messages postés5Date d'inscriptionjeudi 26 juin 2003StatutMembreDernière intervention23 juin 2005 14 juil. 2003 à 18:03
Mais on peut faire la même chose avec les calques de Dreamweaver et 1 pointe de Javascript ...
AtomWare
Messages postés71Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention11 novembre 2004 30 juin 2003 à 14:00
si ca marche pas c'est surement a cause de votre version de php :
il faut pas faire $page mais $_GET['page']; pour les variables "externes"
ah oui, j'oubliait : dans un formulaire, il faut faire :
<form method="post" action="index.php">
on ne peut pas mettre action="index.php?module=marubqieue&page=mapage", alors il faut mettres ces deux éléments en éléments cachés du formulaire
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 12 juin 2003 à 13:34
revinc> bah c ce que g dit 2 posts plus haut lol
Va voir ma source, le nombre de gens qui trouve des "failles" dans ce genre de script sans pouvoir le prouver c affolant lol. Avec de tel "hacker" internet n'a qu'a trembler lol
http://www.phpcs.com/article.aspx?Val=403
revinc
Messages postés385Date d'inscriptionmardi 15 octobre 2002StatutMembreDernière intervention19 décembre 2017 12 juin 2003 à 13:28
c à dire ekinoks?
cs_ekinoks
Messages postés139Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention15 novembre 2005 12 juin 2003 à 13:26
g une question... comment tu fait si tu veux métre un FROM ?
revinc
Messages postés385Date d'inscriptionmardi 15 octobre 2002StatutMembreDernière intervention19 décembre 2017 12 juin 2003 à 13:21
de toute façon avec cette méthode tu peux planquer tous tes fichiers php derrière un htaccess sauf le index.php et ça marchera très bien.
les pagesq que tyu veux pas afficher, tu les protège et c tout
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 12 juin 2003 à 13:14
nan il parlé d'afficher les pages que tu veux pas faire affiché non protégé par un htaccess
revinc
Messages postés385Date d'inscriptionmardi 15 octobre 2002StatutMembreDernière intervention19 décembre 2017 12 juin 2003 à 13:13
ouais comme tu rajoute toi-même l'extension php, il n'y a normlalement aucun problème de sécurité
Mais je vois pas trop comment un htaccess pourrait être affiché puisque le fichier doit automatiquement avoir l'extension .php (l'extension est automatiquement ajoutée)
JEROMAX
Messages postés274Date d'inscriptionjeudi 22 février 2001StatutMembreDernière intervention 7 octobre 2013 12 juin 2003 à 10:50
cs_Tortuegeniale
Messages postés1123Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention26 juin 2008 12 juin 2003 à 10:40
Jeromax> Ouais mais la il explique juste comment la page fonctionne. Comme je l'ai dit sur ma source ki parle de la meme chose : c'est pas juste cette page qui doit etre sécurisé mais tout le site. Donc pour protéger ses pages qu'il ne veut pas qu'elles soient affichées y a le htaccess comùe tu dis mais aussi les sessions ...
JEROMAX
Messages postés274Date d'inscriptionjeudi 22 février 2001StatutMembreDernière intervention 7 octobre 2013 12 juin 2003 à 09:10
le probleme, c'est que si tu met, à la place de mapage, le nom d'un fichier qui existe, mais qui ne doit pas être visible par l'utilisateur(comme un fichier .htaccess), il va s'afficher en clair sur l'écran du client....
9 déc. 2008 à 18:49
include("header");
if (isset($_GET["pg"])){
if (file_exists($_GET["pg"])){
include($_GET["pg"]);
}else{
include("accueil.php");
}
}
include("footer");
?>
utilisation: index.php?pg=mapage
21 déc. 2007 à 20:06
Pour ce qui est du référencement google, il t'est possible d'utiliser l'url-rewriting pour faire semblant d'avoir plusieurs pages simples. Tu as donc le beurre et l'argent du beurre : tu gères ton site avec un modèle de page unique, mais les url de ton sites restent simples et google croit voir un fichier par page. Saches toutefois que mapage.php?module=monmodule ne pose pas de problème à google.
Tu peux alors avoir quelquechose du genre :
www.monsite.ext/monmodule/mapage/
www.monsite.ext/monmodule/mapage.html
www.monsite.ext/mapage-id.html
21 déc. 2007 à 19:02
www.monsite.ext/mapage.php?module=monmodule
ça pose pas spécialement de problème... .. .
21 déc. 2007 à 08:32
vue qu'on a plus qu'une page pour le site on risque pas d'avoir un mauvais referencement ?
2 déc. 2007 à 14:14
@ tchaOo°
30 nov. 2007 à 19:03
27 mai 2007 à 16:09
Tchao
3 avril 2007 à 02:26
function cleanVar($var)
{
return str_replace(array('../','..\\',"\0"),'',$var);
}
if(isset($_REQUEST['module']))
$module = cleanVar($_REQUEST['module']);
else
$module = 'accueil';
if(isset($_REQUEST['page']))
$page = cleanVar($_REQUEST['page']);
else
$page = 'index';
@ tchaOo°
2 avril 2007 à 22:21
2 avril 2007 à 19:11
vous avez pas un pt1 d'exemple sans variable global en entier correct...
7 oct. 2005 à 18:31
a vous de voir !! ici http://mallet_p.club.fr/V4bonne/V4.php a parament tout va bien mais allé dans la rubrique symbole ( un des plu longue ! et la regarder les onglé anime et multimédia !! il ce son multiplier quel et ce prob ??? !!! aidez moi svp tennez si vous voulez voir la page http://mallet_p.club.fr/V4bonne.rar
26 août 2005 à 19:37
26 août 2005 à 15:09
26 août 2005 à 15:05
Qu'est-ce qui ne va pas ?
Dans l'exemple de mon script, avec register_globals = On, si j'appelle index.php?mavariable=mavaleur, dans le script PHP la variable $mavariable sera définie avec $mavaleur. C'est dangereux car si le code est mal fait, on peut remplacer la valeur d'autres variables.
maintenant, il faut aller chercher les paramètres passés en url avec $_GET['mavariable'] et non plus avec $mavariable (ou $_POST, $_COOKIE, $_SESSION, ... suivant la méthode de passage de variable).
J'espère que ça pourra t'aider.
26 août 2005 à 14:54
moi j'ai un autre probléme j'ai fait toute mes page en php et j'aimerai qu'elle s'affiche au millieu de ma page quand j'ai cliquez sur un lien,a un endroit que j'ai définit sans scoll bare et iframe. j'ai donc fait le code suivant:
dans ma page d'accueil :
<? include("centre.php"); ?>
et dans une autre page qui s'apelle centre pour que puisse arriver les lien au millieu j'ai fait
elseif ($page=='FAQ') {include('faq.php');}
Mais je ne comprend pas pourquoi quand je clique sur le lien faq rien ne ce passe ca ne s'affiche pas au millieu comme je le souhaite et ca fait 1semaine que ej tourne autout du pot !!! SVP aidez moi !!!!
22 juin 2005 à 13:59
22 juin 2005 à 12:11
Ca permet d'avoir un seul fichier de présentation dans lequel on colle tout ce qu'on veux. Sauf qu'il faut protéger par HTACCESS les fichiers qui serviront de calque: DENY FROM ALL
Il ne faut pas faire un truc du genre:
index.php?page=salut.php
Non, non, non !!! Plutôt:
index.php?page=UnNomDeCode
Et dans index.php, on aurait un tableau:
$Pages array('NomDeCode'> '007.php', 'GirlRubrique'=>'nanas.php', ....... );
Ainsi, les HTACCESS ne pourront jamais être affichés, et surtout le nom des fichiers servant de calques seront aussi protégés.
Reste ensuite à vérifier que le paramètre "page" se retrouve dans le tableau. Dans le cas contraire, on affiche la page d'accueil.
Autre point important. En passant par les tableaux, il suffit de renommer une case pour que tous les liens du site se modifient automatiquement.
Problème pour finir. Dans ces genres de trucs, si on fait "Précédent" dans MSIE, alors tout formulaire est purgé. Pas le droit à l'erreur quand on pste un formulaire, donc...
26 déc. 2004 à 14:16
<?php
// on définit le chemin du site
$path=$HTTP_SELF;
// on fait la vérif
if( file_exists( "$module.php" ) )
// si ok on inclue
include "$path/$module.php" ;
// sinon retour à l'accueil
else include 'accueil.php';
?>
Le $path sert à empecher l'inclusion d'une page exterieur au site... page qui pourrait contenir un script dangereux... à premiere vue, je dis bien à premiere vue, tu n'y a pas pensé... .. .
C'est plus simple que ta source vu qu'il n'y a qu'une variable... après ça dépend de la taille du site... moi c'est un tout petit site pour une assos... alors je ne pense pas avoir besoins d'appeler une page précise... .. .
Mais le probleme que j'ais c'est que je voudrais authentifier la page appelée pour interdire l'inclusion de page qui n'ont pas à l'être (comme le dit Tortuegeniale) je cherche et si je trouve je fais signe... .. . :o)
Quand au titre de ma page et bien je fais ça...
<title><? echo("°oO cir-K-$module Oo°"); ?></title>
Rien de plus simple... .. . ;o)
Voili voilou... .. .
@ tchaOo°
16 nov. 2003 à 16:42
13 nov. 2003 à 22:37
my 2 cents
22 oct. 2003 à 13:34
A bientôt
Sharkit
22 oct. 2003 à 13:26
";).
22 oct. 2003 à 00:43
Toujours les memes qui s'accrochent :)
J'ai un soucis au niveau de l'include du module :
include "modules/$module/$page.php";
quand je suis sur la page accueil du site, ça me marque cela :
Warning: main(modules//index.php): failed to open stream: No such file or directory in /home/reunionb/www/soft/index.php on line 11
Warning: main(): Failed opening 'modules//index.php' for inclusion (include_path='') in /home/reunionb/www/soft/index.php on line 11
( je suis sur un site en construction mais pas à la racine pour tester les modules :
http://www.reunion-bourbon.com/soft/index.php )
Si tu peux jeter un oeil et me contacter ce serait sympa
@+++
Sharkit
19 oct. 2003 à 21:07
19 oct. 2003 à 19:26
Je te remercie et ne manquerai pas de te montrer la bête en action ....
Merci encore
Sharkit
19 oct. 2003 à 19:06
Ce que tu peux faire, c'est de mettre en plus de monmodule/monfichier.php, monmodule/monfichier.titre.txt.
Tu récupère le contenu de ce fichier et tu l'affiche dans <title>
Mais c'est une possibilité parmis pleins d'autres !!! Il y en a surement de meilleures
18 oct. 2003 à 11:56
Mais j'ai encore une question à la con : c'estbien, c'est mignon, mais si tu veux un titre différent à chaque page, tu fais comment ???
@
Sharkit
15 juil. 2003 à 21:06
15 juil. 2003 à 15:33
tiens c qui qui vas s'cacher là ?
Pour être plus constructif on pourrait comparer les avantages et inconvénients de ces deux méthodes ...
14 juil. 2003 à 21:55
14 juil. 2003 à 18:03
30 juin 2003 à 14:00
il faut pas faire $page mais $_GET['page']; pour les variables "externes"
12 juin 2003 à 13:59
<form method="post" action="index.php">
on ne peut pas mettre action="index.php?module=marubqieue&page=mapage", alors il faut mettres ces deux éléments en éléments cachés du formulaire
12 juin 2003 à 13:34
Va voir ma source, le nombre de gens qui trouve des "failles" dans ce genre de script sans pouvoir le prouver c affolant lol. Avec de tel "hacker" internet n'a qu'a trembler lol
http://www.phpcs.com/article.aspx?Val=403
12 juin 2003 à 13:28
12 juin 2003 à 13:26
12 juin 2003 à 13:21
les pagesq que tyu veux pas afficher, tu les protège et c tout
12 juin 2003 à 13:14
12 juin 2003 à 13:13
12 juin 2003 à 11:59
Mais je vois pas trop comment un htaccess pourrait être affiché puisque le fichier doit automatiquement avoir l'extension .php (l'extension est automatiquement ajoutée)
12 juin 2003 à 10:50
JEROMAX
http://www.jeromax.free.fr
12 juin 2003 à 10:40
12 juin 2003 à 09:10
JEROMAX
http://www.jeromax.free.fr
11 juin 2003 à 23:10
De plus j'ai fait une source pour exactement le meme sujet http://www.phpcs.com/article.aspx?Val=403
11 juin 2003 à 21:26
Bien sûr, il ne s'agit là que de la base, on peut faire beaucoup mieux, mais après chacun voit en fonction de son besoin.
Totofweb