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
Bonjour,
Je sollicite encore votre aide car mon problème est le suivant :
je lance une page toto.php qui se trouve dans le répertoire src. Cette page, après avoir suivi son script, doit se rediriger vers une autre page qui se trouve dans le répertoire ../blabla/install/titi.php. Or cette page titi.php, lors de l'execution de son script, utilise des fichier qui se trouve dans le dossier où il se trouve et que pour le moment ( après de nombreux test ) je n'ai pas encore trouver comment cette page puisse être exécuté dans son propre dossier.

Ma question est donc la suivante : quelle fonction utilisée pour régler mon problème? ( pas folichonne comme question ^^ )

A voir également:

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
Bonjour,

Peut-on avoir copie du code source qui pose problème?
0
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.
0
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
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é.
0
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?
0
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
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>
0
Il doit y avoir un include en trop :)
Et j'ai déjà essayer le include, or ça m'éxécute le code de la page2.php dans le répertoire de page1.php alors que je souhaite que page1.php éxécute page2.php dans son répertoire ( celui de page2.php )
0
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
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:

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+
0
up
0