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 -
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!
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!
A voir également:
- PHP et redirect
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- L'url suivante, censée aboutir à un article, donne lieu à une redirection indiquant que la page n'a pas été trouvée. retrouvez la page recherchée. reportez le titre de l’article et son auteur. - Forum Microsoft Edge / Internet Explorer
- Alert php - Forum PHP
28 réponses
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);
?>
<?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);
?>
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
Merci de ton aide et ta patience ;)
Je vais essayer ça ce soir (heure du Québec) et redonner des nouvelles sur le post.
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!
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!