PHP et redirect

Résolu
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Pour s'implifier et unifier toutes mes connexions à ma BD MySQL, j'ai décidé de créer un fichier "connexion.php" et de faire un include dans chacune de mes pages qui vont utiliser la BD. Même s'il n'y a pas aucun lien vers ce fichier, il est toujours possible d'y accéder en tapant l'adresse directement. Comme ça donne une page web vide, je veux faire une redirection vers la page principale pour éviter de tomber sur une page blanche.

Dans ma page, j'ai fais un echo de ça :
"<html><head><meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=monUrl"></head></html>"
comme il est fait en HTML pour faire des redirections.

Le problème c'est qu'à chaque fois qu'une page fait le include du fichier PHP, il fait la redirection, donc des boucles de reload car ma page principale utilise le "connexion.php".

Est-ce qu'il existe un autre moyen !?

Merci!

28 réponses

InAme19 Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   62
 
Alors essaye de faire ton require_once en début de page avant tout ce que tu as.
0
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
fichier connexion.php :
<?php
//Avoir les infos
//$hostname = "localhost";
$hostname = "10.6.186.33";
$user = "----";
$pass = "----";

header ( "Location: ./erreur.php" );
?>

fichier index.php
<?php
//include le fichier de connexion
require_once("connexion.php");

//connecter a la BD
$conn = mysql_connect($hostname,$user,$pass);

//choisir la bd
mysql_select_db ("leclerc_Donnee",$conn);

//Faire un bon query
$result = mysql_query("select * from News order by id desc limit 10");

//traitement
while($row = mysql_fetch_array($result))
{
echo "<tr><td>";
echo $row['Date'];
echo "</td><td>";
echo $row['Text'];
echo "</td></tr>";
}//while

//fermer la connexion
mysql_close($conn);
?>
0
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai déjà essayer ;-)
Et ça me redirige vers erreur.php
0
InAme19 Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   62
 
oui c'est normal...

Alors j'ai réfléchit et effectivement il faut peut être laisser tomber le header pour connexion.php

Tu pourrai utiliser une variable qui te permetterai "l'autorisation d'acceder à certaines pages"

je m'explique: tu crée une variable index qui est le nom de ta page.
par exemple index.php?index=index pour ta page principale
..................connexion.php?index=connexion pour ta page connexion

Alors tu vérifie ta variable index
if( isset($_GET['index']) && !empty($_GET['index']) )
{
$index = $_GET['index'].".php" ; //tu récupere le nom du chemin que tu met ds une variable php
}
else $index = "index.php"; //comme ça si la variable index n'existe pas elle sera initialiser à ta page principale

if ($index=='index.php' || $index=='tesAutresPages.php') //bien sûr tu ne met pas connexion.php
include($index);
else
{
include(erreur.php);
}

tu peux essayer cela, c'est un peu long à mettre en place mais comme ça tu gere pages que l'utilisateur peut voir.
Il ne faudra pas oublier de fournir index pour chacune de tes pages sinon tu tombera sur la page erreur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
En effet, c'est un peu long, mais au moins je suis sur que ça va marcher!

Merci de ton aide et ta patience ;)

Je vais essayer ça ce soir (heure du Québec) et redonner des nouvelles sur le post.
0
InAme19 Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   62
 
De rien, si tu as des soucis à mettre en place ceci, pas de problèmes je suis là. ;)
0
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Merci!!
0
kenshin24 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Finalement, j'ai repensé à mon affaire pendant le restant de la journée et j'ai vérifier s'il existait une fonction qui vérifiait si le header a été définit. Je me suis rappeler du warning que j'obtenais quand j'exécutais la fonction header en plein milieu du code HTML.

J'ai trouvé la fonction header_sent() qui vérifie si les éléments du header ont été envoyés. Donc j'ai mit le code suivant dans le fichier connexion.php :

if(header_sent())
{
header( "Location: ...");
}

Si les headers ne sont pas envoyer, il fait le redirect. Je mets le include 'connexion.php' en plein milieu de mon code. Dans ce cas il ne fait pas le redirect.

Je trouve cette solution un peu plus clean et moins difficile et moins longue. Je n'ai rien à modifier dans les autres fichiers qui utilisent le fichier connexion.php. La seule chose à faire c'est de ne pas faire le include au début du fichier (avant les balises head HTML)

Merci quand même pour ton aide!
J'espère que ça pourra t'aider ou n'importe qui dans une situation semblable!
0