A voir également:
- Redirection vers une page d'un autre rep -php
- Supprimer une page word - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Créer une page facebook - Guide
- Comment traduire une page - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
4 réponses
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.
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?
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+