Redirection vers une page d'un autre rep -php
Fermé
Chester0101
-
14 avril 2011 à 09:58
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 14 avril 2011 à 12:58
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 14 avril 2011 à 12:58
A voir également:
- Redirection vers une page d'un autre rep -php
- Supprimer une page word - Guide
- Traduire une page - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Créer une page facebook - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
4 réponses
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
14 avril 2011 à 10:12
14 avril 2011 à 10:12
Bonjour,
Peut-on avoir copie du code source qui pose problème?
Peut-on avoir copie du code source qui pose problème?
Bien sûr, enfin il n'y a pas grand chose ^^
pour rediriger j'ai essayé majoritairement deux choses :
include dirname(__FILE__).'/../' .$dir. '/install/insmaj.php';
Ce n'est pas vraiment une redirection mais je me suis dit qu'il n'y avait que scrpt à lancé, or je n'ai pas pensé au fichier que la deuxième page aller utilisé.
header('Location: ../' .$dir. '/install/insmaj.php');
pour le header, j'ai un warning qui s'affiche : Warning: Cannot modify header information - headers already sent by (output started at /scoqi_web/projet/src/param.php:13) in /scoqi_web/projet/src/param.php on line 95
Et malgré me marqué le warning rien ne se passe.
Voila.
pour rediriger j'ai essayé majoritairement deux choses :
include dirname(__FILE__).'/../' .$dir. '/install/insmaj.php';
Ce n'est pas vraiment une redirection mais je me suis dit qu'il n'y avait que scrpt à lancé, or je n'ai pas pensé au fichier que la deuxième page aller utilisé.
header('Location: ../' .$dir. '/install/insmaj.php');
pour le header, j'ai un warning qui s'affiche : Warning: Cannot modify header information - headers already sent by (output started at /scoqi_web/projet/src/param.php:13) in /scoqi_web/projet/src/param.php on line 95
Et malgré me marqué le warning rien ne se passe.
Voila.
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
14 avril 2011 à 10:41
14 avril 2011 à 10:41
header doit être utilisé avant toute autre instruction php qui provoque un affichage de données...
Exemple:
<?php
header("Location: https://www.google.fr/?gws_rd=ssl");
exit;
Le code ci-dessus doit vraiment figurer au tout début du script qui effectue une re-direction.
Exemple d'erreur classique:
<html>
<head>
.....
</head>
<body>
<?php
header("Location: https://www.google.fr/?gws_rd=ssl");
</body>
</html>
Là, ça ne marchera pas, car le navigateur a déja reçu un header construit par le serveur et un flux de texte, en l'occurence <html>... et toute la quicaillerie qui suit.
Si on se retrouve dans ce second cas, le include est plus approprié.
Exemple:
<?php
header("Location: https://www.google.fr/?gws_rd=ssl");
exit;
Le code ci-dessus doit vraiment figurer au tout début du script qui effectue une re-direction.
Exemple d'erreur classique:
<html>
<head>
.....
</head>
<body>
<?php
header("Location: https://www.google.fr/?gws_rd=ssl");
</body>
</html>
Là, ça ne marchera pas, car le navigateur a déja reçu un header construit par le serveur et un flux de texte, en l'occurence <html>... et toute la quicaillerie qui suit.
Si on se retrouve dans ce second cas, le include est plus approprié.
D'accord, mais alors comment faire pour d'abord exécuter le script de ma première page et ensuite exécuté le script de la deuxième page dans son répertoire?
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
14 avril 2011 à 11:05
14 avril 2011 à 11:05
reste la solution du include....
<?php
....bout de code php...
?>
<html>
<head>
.....
</head>
<body>
<?php
include include dirname(__FILE__).'/../' .$dir. '/install/insmaj.php';
?>
</body>
</html>
<?php
....bout de code php...
?>
<html>
<head>
.....
</head>
<body>
<?php
include include dirname(__FILE__).'/../' .$dir. '/install/insmaj.php';
?>
</body>
</html>
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
14 avril 2011 à 12:58
14 avril 2011 à 12:58
C'est pô possib!
C'est:
- on execute page1.php qui include page2.php
- ou on redirige directement vers page2.php
Une analogie:
- les pieds au mur, c'est facile,
- faire des claquettes c'est possible,
- mais faire des claquettes les pieds au mur, c'est 'ach'ment compliqué.
En PHP c'est idem. On a un menu. On renvoie vers page1 ou page2. ou page1 qui gère page2....
Perso, je vous conseille une programmation orientée MVC, genre:
où xxx est le nom de la page qui est gérée. Exemple accueil.phtml
et dans index.php on a une ligne du genre:
le code de includePAgeDuSite() est de ce genre:
la page accueil doit être écrite dans un sous répertoire templates et s'appeler accueil.phtml
Ainsi, votre problème devient:
<?php
if (..condition...) {
include $Appli->includepageDuSite('page1'); // charge page1.phtml
} else {
include $Appli->includepageDuSite('page2'); // charge page1.phtml
}
?>
Avec cette programmation orientée MVC:
- vous n'avez plus qu'un seul script php: index.php
- des templates placés dans un sous-répertoire templates et facile à protéger.
A+
C'est:
- on execute page1.php qui include page2.php
- ou on redirige directement vers page2.php
Une analogie:
- les pieds au mur, c'est facile,
- faire des claquettes c'est possible,
- mais faire des claquettes les pieds au mur, c'est 'ach'ment compliqué.
En PHP c'est idem. On a un menu. On renvoie vers page1 ou page2. ou page1 qui gère page2....
Perso, je vous conseille une programmation orientée MVC, genre:
index.php?page=xxx
où xxx est le nom de la page qui est gérée. Exemple accueil.phtml
et dans index.php on a une ligne du genre:
<?php include $Appli->incudePageDuSite($_GET['page]); ?>
le code de includePAgeDuSite() est de ce genre:
/** * sécurisation de l'inclusion dynamique d'un template * * teste si la <i>page</i> demandée existe en tant que fichier physiquement implanté sur le serveur. * Si oui, on renvoie la <i>page</i>, sinon on génère un tracage et on arrête. Cette fonction * comble une faille de sécurité existant avec include * * @param $page string * @return string page à charger par include */ function includePageDuSite($page) { if (file_exists($page)) { return 'templates/'.$page.'.phtml'; } $this->tracage("Tentative d'accès à la page: $page"); die("Ce Fichier n'existe pas sur le Serveur"); }
la page accueil doit être écrite dans un sous répertoire templates et s'appeler accueil.phtml
Ainsi, votre problème devient:
<?php
if (..condition...) {
include $Appli->includepageDuSite('page1'); // charge page1.phtml
} else {
include $Appli->includepageDuSite('page2'); // charge page1.phtml
}
?>
Avec cette programmation orientée MVC:
- vous n'avez plus qu'un seul script php: index.php
- des templates placés dans un sous-répertoire templates et facile à protéger.
A+