Bonjour,
Je viens vous demander un peu d'aide car j'ai un petit problème de header();
Voici un bout de mon site, plus simple qu'un long discours
Voici ma page index.php
1 2 3 4 5 6 7 8 9 10 11 12
|
<?PHP require_once('include.inc.php');
$title = 'Accueil';
require_once('page/head.inc');
require_once('page/menu.inc');
ECHO '<DIV ID="INNER"> Un peu de blabla histoire de voir...</DIV>';
require_once('page/foot.inc');
?> |
Depuis la page index.php j'ai un lien vers une page connexion.php. Le code est quasi identique
1 2 3 4 5 6 7 8 9 10 11
| <?PHP require_once('include.inc.php');
$title = Connexion';
require_once('page/head.inc');
require_once('page/menu.inc');
require_once('script/connection.inc');
require_once('page/foot.inc');
?> |
La page connexion.php fait appel au script connexion.inc que voila
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| <?PHP
if (isset($_GET['mode']) && ($_GET['mode']=='deconnexion')) {
/**Gestion simple de la deconnexion**/
SESSION_UNSET ();
SESSION_DESTROY();
redirige('index.php');
exit;
}
else if (isset($_SESSION['login']) && isset($_SESSION['id'])) {
redirige('error.php');
exit;
}
/**Début du script de connexion**/
if (isset($_POST) && !empty($_POST['login']) && !empty($_POST['pwd'])) {
extract($_POST);
$test = connection($login,$pwd);
if ($test == false) {
ECHO formulaire(1);
}
}
else {
ECHO formulaire(0);
}
/**FONCTIONS**/
function formulaire($etat) {
if (!empty($etat) && $etat == 1) {
$message = msg('ERREUR', 'Saisie du login/mot de passe incorrect !');
}
else { $message = ''; }
$formConnection = '<FORM method="POST" action="connection.php" />';
$formConnection .= '<DIV ID="FORM">';
$formConnection .= '<TABLE>';
$formConnection .= '<TR>';
$formConnection .= '<TD>Login : </TD>';
$formConnection .= '<TD><INPUT type="texte" value"" name="login" MAXLENGTH="60"/></TD>';
$formConnection .= '</TR>';
$formConnection .= '<TR>';
$formConnection .= '<TD>mot de passe : </TD>';
$formConnection .= '<TD><INPUT type="password" value"" name="pwd" MAXLENGTH="60"/></TD>';
$formConnection .= '</TR>';
$formConnection .= '<TR>';
$formConnection .= '<TD colspan="2" align="center"><BR /><INPUT type="submit" value="connexion" name="submit" /></TD>';
$formConnection .= '</TR>';
$formConnection .= '</TABLE>';
$formConnection .= $message;
$formConnection .= '</DIV>';
$formConnection .= '</FORM>';
return $formConnection;
}
function connection ($login, $pwd) {
$query = "SELECT log_id,log_user,log_pwd,log_droit FROM login WHERE log_user='".quote_smart($login)."' LIMIT 1";
$ligne = rqtSelect($query);
if (!empty($ligne)) {
foreach ($ligne as $value) {
$rqtLogin = $value['log_user'];
$rqtPwd = $value['log_pwd'];
$rqtId = $value['log_id'];
$rqtDroit = $value['log_droit'];
}
if (($pwd == $rqtPwd) && ($login == $rqtLogin)) {
session_start();
$_SESSION['login'] = $rqtLogin;
$_SESSION['id'] = $rqtId;
$_SESSION['droit'] = $rqtDroit;
redirige('index.php');
exit;
}
else {
return false;
}
}
else {
return false;
}
}
?> |
La fonction redirige(); se situe dans include.inc.php
1 2 3 4 5 6 7 8 9 10
| <?PHP function redirige($url) {
header('Location: '.$url);
exit;
}
session_start();
require_once('sql/cnx.inc');
require_once('script/divers.inc');
?> |
Chaque fois que je fais appel à la fonction redirige(); j'obtiens l'erreur
Warning: Cannot modify header information - headers already sent by (output started at /mnt/166/sda/1/8/***/***/page/head.inc:18) in /mnt/166/sda/1/8/***/***/include.inc.php on line 3
Pourtant cette fonction se situe tout en haut de mes pages (1er REQUIRE effectué), et la fonction est lancée avant tout affichage - enfin je crois. L'affichage débute avec require_once('page/head.inc');
Qu'est-ce que je fais de mal ?
En local tout fonctionne parfaitement, mais une fois en ligne (chez free) là ça merdouille. Mon autre question est comment faire réagir le site en local de la même manière qu'en ligne ?
Partager