Controle d'un iframe depuis l'url ?

Fermé
mike - 5 déc. 2009 à 16:53
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 5 déc. 2009 à 18:46
Bonjour,


Mon problème, je dois réussir à créer une sorte de lien dynamique qui me permettrai de contrôler l'iframe présente dans la page appelé ...

par exemple sur la page "www.bob.com/index.php" est présente un iframe"I1"

par defaut l'iframe est sur src="page1.html">

comment changer la valeur src="page1.html"> depuis l'url ? pour que ce ne soit plus la page1.html qui apparait mais la page2.html dans mon iframe ? avec un lien comme :

"www.bob.com/index.php?scrI1=page2.html"

débutant, donc pas sur que ça soit possible.. mais je pense en php ?

merci

4 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
5 déc. 2009 à 17:22
Oui tout a fait en PHP.
Tu peux d'ailleurs simplement oublier les iframes avec PHP.
Tu peux remplacer les iframes par des include().

Exemple:
Tu as une page index.php et une page texte.php
Tu veux incorporer la page texte.php dans la page index.php
Un iframe te permettrais de le faire.
En PHP:
<?php
include('texte.php');
?>

Le code restitué au navigateur sera le même que si tu avais directement mis le code de la page texte.php à l'emplacement de l'include.

Pour le contrôler depuis l'url, il faut modifier un peu le code:

Ce code suppose que l'identifiant de la page corresponde au nom du fichier.
Sinon un moyen plus simple et beaucoup plus sécurisé est de prévoir une liste du contenu qui sera intégré.
Autrement dit, si tu prévois que seul deux fichiers seront intégré dans ta page, tu vérifie que c'est bien ces deux fichiers là qui sont appelé dans l'url et rien d'autre.
Dans le cas contraire tu redirige.
Le code:
<?php
$pageOK = array('accueil' => 'accueil.php',
                'page1' => 'page1.php',
                'page2' => 'page2.php',
                'page3' => 'page3.php')
 if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  } else {
    include('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }
?>

$_GET['page'] correspond a ce que tu places dans l'url.
index.php?page=page1 intégrera dans la page le fichier page1.php
index.php?page=page2 intégrera dans la page le fichier page2.php
etc...
Uniquement parce que je l'ai défini.
Si je met index.php?page=autre c'est la page accueil.php qui sera affiché car je n'ai pas défini de page autre.
accueil.php est donc la page par défaut.

J'espère avoir été clair et que tu as compris le principe.
Autrement, n'hésite pas a demander.
0
merci beaucoup pour ta réponse très précise mais complexe ^^

en fait je connais la fonction include.. seulement je pense qu'elle ne peut pas s'adapter à mon problème car quand je fait un include ok ma page s'inclue correctement mais le problème c'est qu'un fois que je clique sur les lien de la page inclue mes menus disparaissent... car dans les liens qui suivent les menus ne sont pas présent

donc pour moi la deuxième solution me semble la plus intéressante.. seulement je ne peux pas déclaré toute les page qui seront inclue car il y en a plusieurs milliers et je ne connais pas par avance les futures...

donc si je veux passer par l'iframe corrige moi si je me trompe ^^

je dois donner une variable a l'iframe que j'appel ensuite dans l'url..

<?php
if ( (isset($_GET['page']))
{
$page = $_GET["page"];
}
else {
$page = "accueil.php";
}
?>


puis je place mon iframe..

<iframe src="echo $page"></iframe>



doit yavoir quelque chose de faux car Parse error: syntax error, unexpected

help please =)
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
5 déc. 2009 à 18:06
Après tout dépends de ce qu'est les contenu de tes pages.
Si tu prends mon site, j'ai tout fait en reprenant le principe que je t'ai expliqué.
Un autre moyen plus simple pour la gestion des pages (en rapport à la quantité que tu annonce) serai de passer par une base de donné.
Tu places le contenu dans la base est tu gères le tout dynamiquement avec une interface d'administration.
Pas des plus simple a mettre en place mais c'est le moyen le plus simple de gérer un site au final.
Passer simple des variables dans l'url sans méthode de contrôle présente de grosse faille de sécurité.
L'idéal est de combiné ce que je t'ai expliqué précédemment à l'url rewriting.
Ainsi tu affiches la même chose mais avec de simple lien.
Exemple:
accueil.html t'affichera index.php?page=accueil

Bref, tu es débutant alors ne compliquons pas les choses.
Je persiste à dire que la solution que je t'ai expliqué précédemment est la meilleurs.
Toutefois, je vais quand même t'aider sur ce que tu me demande.
Parse error: syntax error, unexpected 

Ce message s'affiche car tu places as mal construit le code.
Voici la bonne écriture:
<?php
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else {
$page = 'accueil.php';
}
?> 

Tu avais mis "(" en trop devant isset.
De plus:
<iframe src="echo $page"></iframe> 

Tu ne dois pas mettre un echo directement au milieu d'une balise html.
Le serveur ne comprendra pas qu'il doit l'interprété en PHP.
Donc:
<iframe src="<?php echo $page; ?>"></iframe> 
0
merci bcp ça marche =)

sinon prob de sécurité ? tu veux dire si quelqu'un affiche un page malveillante dans ma page en ce servant de ladresse ?

donc le seul moyen de sécurisé c'est la première soluce ?

ça risque pas de me faire une page trop énorme avec tout les lien qu'il me faut .. ?

une chose est sur je vais mettre 10 ans :'(

la base de donnée faut voir.. avec quoi j'irai + vite ? =)
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
5 déc. 2009 à 18:46
Je vais simplement cité la page dont j'ai tiré le script que j'ai utilisé pour la méthode que j'utilise.

Le problème

Si vous avez bien lu, vous savez que le paramètre page est affiché en clair dans la barre d'adresse du navigateur. Il est donc facilement modifiable par l'utilisateur. Ce dernier peut dès lors inclure n'importe quoi dans votre page index.php ! Il convient donc de tester ce que vaut ce paramètre avant d'inclure la page demandée et surtout vérifier que cela correspond bien à ce que vous permettez.


Sur cette page: http://phpdebutant.org/article68.php
0