Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1611 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  J'ai un soucis avec la fonction "header"...

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

J'ai un soucis avec la fonction "header"...

n°1236307
cvb
Posté le 02-11-2005 à 13:14:24  profilanswer
 

Bonjour,
 
J'ai un petit soucis avec la fonction "header". Je travaille sous EasyPHP pour faire un site internet.
je ne comprends pas trop le sens du message. Est-ce que vous pourriez me dire de quoi il s'agit au juste ?
 
Code :
 

Code :
  1. (...)
  2. header("Location: http://www.php.net/" );
  3. (...)


 
message d'erreur :
 

Warning: Cannot modify header information - headers already sent by (output started at m:\site internet\adage\modification_tables\index.php:12) in m:\site internet\adage\modification_tables\index.php on line 18


 
D'avance merci
@+
cvb

mood
Publicité
Posté le 02-11-2005 à 13:14:24  profilanswer
 

n°1236312
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 02-11-2005 à 13:17:14  profilanswer
 

Erreur très très classique.
 
Tu envois des données au navigateur avant la fonction header et il ne faut pas, même pas une espace.

n°1236330
cvb
Posté le 02-11-2005 à 13:34:33  profilanswer
 

Bonjour,
 
Je viens de le mettre en 1er ligne comme conseillé et ca fonctionne. Ce que je ne comprends pas c'est pourquoi je trouve des exemples comme ça sur le NET  ou sur des livres ? Il y a bien un espace et c'est semble t-il intégrer dans le code HTML ?
 

Code :
  1. <?php
  2. if ($age <12)
  3. { header ("location:catalogue.php" );
  4. }
  5. else
  6. { header("location:catalogue2.php" );
  7. }
  8. ?>


 
Merci
@+

Message cité 1 fois
Message édité par cvb le 02-11-2005 à 13:45:05
n°1236518
2xyo
2*yo = yoyo
Posté le 02-11-2005 à 15:32:02  profilanswer
 

cvb a écrit :

Bonjour,
 
Je viens de le mettre en 1er ligne comme conseillé et ca fonctionne. Ce que je ne comprends pas c'est pourquoi je trouve des exemples comme ça sur le NET  ou sur des livres ? Il y a bien un espace et c'est semble t-il intégrer dans le code HTML ?
 

Code :
  1. <?php
  2. if ($age <12)
  3. { header ("location:catalogue.php" );
  4. }
  5. else
  6. { header("location:catalogue2.php" );
  7. }
  8. ?>


 
Merci
@+


Dans ton exemple, si il n'y a rien avant,  c'est entièrement correct car rien n'a été envoyé au navigateur avant. C'est la seule chose qui compte, que surtout rien ne soit envoyé au navigateur AVANT le header().


---------------
2 * yo = yoyo
n°1236533
dwogsi
Défaillance cérébrale...
Posté le 02-11-2005 à 15:37:16  profilanswer
 

A moins qu'il se prennent une erreur type Notice pour une variable non définie : $age.


Message édité par dwogsi le 02-11-2005 à 16:54:38
n°1236638
cvb
Posté le 02-11-2005 à 16:51:10  profilanswer
 

merci à vous deux :)
@+

n°1236858
richou_
Posté le 02-11-2005 à 20:13:03  profilanswer
 

Bonjours,
 
J'ai fait la fonction suivante :
 

Code :
  1. function redirect($url)
  2. {
  3.       header('location:$url')
  4. }


 
Que j'ai mise dans une page fonction.php
 
Et dans une autre page tel que login.php ou index.php
j'apelle la fonction, mais le message d'erreur classique apparait.
Pourtant j'ai bien veiller a mettre l'include au debut de la page...

n°1236930
Profil sup​primé
Posté le 02-11-2005 à 21:41:10  answer
 

comme quoi même comme ça, ça fonctionne pas

n°1236947
richou_
Posté le 02-11-2005 à 22:03:23  profilanswer
 

Bha normalement ca devrais fonctionner puisque j'ai mis le header avant tout script enfin je pense que c'est ca non ? :gratgrat:

Message cité 1 fois
Message édité par richou_ le 02-11-2005 à 22:04:20
n°1236958
Profil sup​primé
Posté le 02-11-2005 à 22:08:55  answer
 

richou_ a écrit :

Bha normalement ca devrais fonctionner puisque j'ai mis le header avant tout script enfin je pense que c'est ca non ? :gratgrat:


Code :
  1. <?
  2. //debut de page
  3. function hello() { echo "hello"; }
  4. //pleins de trucs
  5. ?>
  6. du html...
  7. <? hello(); ?>


La fonction est définie en haut de page pourtant quand tu l'apelles, elle s'exécutera là ou tu l'as apellée

mood
Publicité
Posté le 02-11-2005 à 22:08:55  profilanswer
 

n°1236961
richou_
Posté le 02-11-2005 à 22:10:38  profilanswer
 

Ah pourtant sur phpBB2, la fonction fonctionne...

n°1236963
Profil sup​primé
Posté le 02-11-2005 à 22:11:18  answer
 

j'ai du mal piger ce que tu expliquais alors :-/

n°1236970
richou_
Posté le 02-11-2005 à 22:20:41  profilanswer
 

Nan je pense plutot que c'est moi qui comprend mal comment fonctionne les fonctions.
En fait moi je pensais que quand tu mettais une fonction dans une page et que tu l'appelais dans une autre la fonction s'executais de la page où la fonction a été declaré.
Mais apparement c'est pas ca...

n°1236973
cvb
Posté le 02-11-2005 à 22:24:21  profilanswer
 

HS : Est-ce qu'il existe une fonction toute faite pour rechercher une valeur précise dans une table. Elle renverrait "true" ou "false"...
 
merci
@+

n°1236978
Profil sup​primé
Posté le 02-11-2005 à 22:38:14  answer
 

SELECT champs from table WHERE champs='valeur précise'

n°1237093
cvb
Posté le 03-11-2005 à 08:13:42  profilanswer
 


 
Bonjour,
 
Merci, mais je voulais savoir si une fonction récupérer directement la valeur en fonction de ce critère de recherche. En gros il executerais tout seul mysql_query(... et le traitement qu'est derrière ;)
 
@+

n°1237111
dwogsi
Défaillance cérébrale...
Posté le 03-11-2005 à 09:16:06  profilanswer
 

Et non la programmation c'est pas encore magique!

n°1237138
3tnieS
Posté le 03-11-2005 à 09:44:33  profilanswer
 

Bonjour, j'ai moi aussi un pti probleme avec mes header.
Je suis en train de faire le tutoriaux ->http://floppy.pcvteam.net/v3/page.php?page=55afin de comprendre comment marche l'authentification, mais j'ai probleme pour la partie administration: cad identification + login.
Au début de ma page j'ai le code suivant :
 
<?
include "global.inc.php";
include "fonction.inc.php";
$conn = connecte();
if (isset($HTTP_GET_VARS["ident"]))
    $ident = $HTTP_GET_VARS["ident"];
else
    $ident = "";
if (isset($HTTP_GET_VARS["mdp"]))
    $mdp = $HTTP_GET_VARS["mdp"];
else
    $mdp = "";
if (isset($HTTP_GET_VARS["page"]))
    $page = $HTTP_GET_VARS["page"];
else
    $page = 1;
if (! isLoginNewsOk($ident, $mdp)) {
    $err = urlEncode("Login ou mot de passe incorrecte !" );
    deconnecte($conn);
    header("Location: newsLogin.php?erreur=$err&ident=$ident&mdp=$mdp" );
}
?>  
 
Le problème est que le header n'etant pas au debut de mon code il ne fonctionne pas, j'ai donc mis le header en début de code mais voila j'ai un msg d'erreur comme quoi les variables $err, $ident, et $mdp ne sont pas declaré (c'est logique).
 
Si vous pouviez m'avancer un petit peu, thx.

n°1237146
dwogsi
Défaillance cérébrale...
Posté le 03-11-2005 à 09:49:32  profilanswer
 

3tnieS a écrit :

header("Location: newsLogin.php?erreur=$err&ident=$ident&mdp=$mdp");


Moi je trouve ca très moyen....
 
Sinon pour ton problème ca veut dire que l'un des script inclus plus haut renvoit quelque chose, du texte, un espace, un retour à la ligne, etc.... Ou alors c'est une fonction que tu appel mais ca je pense pas.

n°1237177
cvb
Posté le 03-11-2005 à 10:11:48  profilanswer
 

dwogsi a écrit :

Et non la programmation c'est pas encore magique!


 
Dés fois il existe des prés fonction, donc j'ai tenté le coup de demandé ;)

n°1237385
3tnieS
Posté le 03-11-2005 à 12:33:39  profilanswer
 

thx dwogsi ca marche ^^, tu peux me donne un peu plus dinfo  pour
header("Location: newsLogin.php?erreur=$err&ident=$ident&mdp=$mdp" );
Pourquoi tu trouve ca moyen ? y a quoi pour ameliorer ?

n°1237489
dwogsi
Défaillance cérébrale...
Posté le 03-11-2005 à 14:08:54  profilanswer
 

3tnieS a écrit :

thx dwogsi ca marche ^^, tu peux me donne un peu plus dinfo  pour
header("Location: newsLogin.php?erreur=$err&ident=$ident&mdp=$mdp" );
Pourquoi tu trouve ca moyen ? y a quoi pour ameliorer ?


Parce que identifiant et mot de passe saisis ne sont certainement pas des informations à passer dans une url.

n°1237496
richou_
Posté le 03-11-2005 à 14:10:50  profilanswer
 

Le mdp dans l'url c'est pas génial pour la sécurité ;)

n°1237530
dwogsi
Défaillance cérébrale...
Posté le 03-11-2005 à 14:29:15  profilanswer
 

richou_ a écrit :

Le mdp dans l'url c'est pas génial pour la sécurité ;)


Parce que c'est pas ce que je viens de dire?

n°1237955
richou_
Posté le 03-11-2005 à 18:15:10  profilanswer
 

Je l'ai poster juste apres toi j'ai pas eu le temps de voir ton post regarde l'heure...

n°1238132
richou_
Posté le 03-11-2005 à 20:38:09  profilanswer
 

Finalement j'ai trouver une fonction sur le net utilisant le meta refresh :
 

Code :
  1. function redirect($url)
  2. {
  3.     die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
  4. }


 
Mais je sais pas si c'est correct...

n°1238155
2xyo
2*yo = yoyo
Posté le 03-11-2005 à 20:52:50  profilanswer
 

En effet c'est pas correct... Bon, mais pas correct.


---------------
2 * yo = yoyo
n°1238171
richou_
Posté le 03-11-2005 à 21:00:38  profilanswer
 

Je sais pas comment faire le header ne veux pas marcher dans mon code...

n°1238184
2xyo
2*yo = yoyo
Posté le 03-11-2005 à 21:08:45  profilanswer
 

Mets l'url en entier dans le header, pas seulement la page.


---------------
2 * yo = yoyo
n°1238636
omega2
Posté le 04-11-2005 à 13:58:34  profilanswer
 

richou_ a écrit :

Code :
  1. function redirect($url)
  2. {
  3.     die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
  4. }


Si t'utilise cette fonction, alors met au moins le content à 1 et  pas à 0. Certains navigateurs considérent que 0 = jamais.

n°1238654
dwogsi
Défaillance cérébrale...
Posté le 04-11-2005 à 14:14:57  profilanswer
 

omega2 a écrit :

Si t'utilise cette fonction, alors met au moins le content à 1 et  pas à 0. Certains navigateurs considérent que 0 = jamais.


 
Le mieux étant quand même de ne pas utiliser cette solution!
 
Mais je comprend pas comment autant de personnes peuvent avoir des problèmes avec la fonction header(), c'est pourtant pas compliqué à utiliser, non?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1239027
richou_
Posté le 04-11-2005 à 19:19:26  profilanswer
 

Quand j'utilise la fonction header j'ai :  

Citation :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/4/7/XXXXX/template.php(127) : eval()'d code:1) in /var/www/free.fr/4/7/XXXXX/redirect.php on line 4


 
Qui apparait et je comprend jamais comment faire pour le virer...

n°1239031
Profil sup​primé
Posté le 04-11-2005 à 19:24:26  answer
 

euh ? tu veux dire la même erreur dont on a donné la solution plus haut ?

n°1239036
richou_
Posté le 04-11-2005 à 19:32:27  profilanswer
 

Oui exactement mais je comprend pas comment la faire disparaitre malgres la solution plus haut :/

n°1239037
gatsusat
Posté le 04-11-2005 à 19:32:49  profilanswer
 

The-Shadow a écrit :

Erreur très très classique.
 
Tu envois des données au navigateur avant la fonction header et il ne faut pas, même pas une espace.



---------------
Les CSS c'est bon mangez-en
n°1239040
richou_
Posté le 04-11-2005 à 19:35:52  profilanswer
 

Oui mais le probleme c'est que je dois absolument mettre la fonction header la ou je l'ai mise si je la met autre part tout mon code ne marche plus...

n°1239048
shakpana
des fois, j'me demande ...
Posté le 04-11-2005 à 19:50:36  profilanswer
 

richou_ a écrit :

Quand j'utilise la fonction header j'ai :  

Citation :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/4/7/XXXXX/template.php(127) : eval()'d code:1) in /var/www/free.fr/4/7/XXXXX/redirect.php on line 4


Qui apparait et je comprend jamais comment faire pour le virer...

richou_ a écrit :

Oui mais le probleme c'est que je dois absolument mettre la fonction header la ou je l'ai mise si je la met autre part tout mon code ne marche plus...

ça sent le phpBB à plein nez ton truc, la solution doit exister qlque part sur un forum phpBB ...


---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
n°1239051
richou_
Posté le 04-11-2005 à 19:52:58  profilanswer
 

Oui j'ai utiliser les templates de phpBB, pour la fonction redirect() de phpbb c'est pratiquement le meme que celui que j'ai mis avec quelque detail qui changent...

n°1239054
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 04-11-2005 à 20:02:07  profilanswer
 

richou_ a écrit :

Oui mais le probleme c'est que je dois absolument mettre la fonction header la ou je l'ai mise si je la met autre part tout mon code ne marche plus...


Dans ce cas, il faut prévoir de bufferiser le code HTML, donc d'utiliser la fonction ob_start('') comme indiqué plus haut.

n°1291844
Krapaud
Posté le 25-01-2006 à 12:32:40  profilanswer
 

Bonjour,  
 
J'ai ce même problème classique sur une page PHP que je suis en train de faire :  
le principe est le suivant :  
1/ test du login/mdp par rapport à la base LDAP
2/ si c'est concluant -> écriture d'un cookie (TRUE) et redirection sur une page index.php
3/ si c'est erroné -> test sur la base mysql
4/ si c'est concluant -> écriture d'un cookie (TRUE) et redirection sur une page index.php
5/ si c'est erroné -> écriture d'un cookie (FALSE) et redirection sur une page index.php
 
Bref en fin de test LDAP je fais ça :  

Code :
  1. if ($logu) {
  2.   setcookie("name", $user);
  3.   setcookie("logged", "1" );
  4.   Header ("location: http://server/folder/index.php" );
  5.   exit();
  6.   }


 
sinon je passe la main à la fonction suivante qui test sur la base de données MySql
 
là encore je passe les même paramètres :  

Code :
  1. if ($test_use == $user) {
  2.  if ($password == $pass){
  3.   setcookie("logged", "1" );
  4.   setcookie("name", $user);
  5.   Header ("location: http://server/folder/index.php" );
  6.   }
  7.  else {
  8.   setcookie("logged", "0" );
  9.   Header ("location: http://server/folder/index.php" );
  10.   exit();
  11.   }
  12. }


 
le hic c'est que ça marche très bien pour un utilisateur qui peut se connecter sur la base LDAP, en revanche ça chie des pruneaux quand l'utilisateur est authentifié par la base de données MySql.
 
Pourtant rien ne change véritablement :o
 
A ceci prêt que : dans la mesure où je commence par le test LDAP j'ai ce message d'erreur en haut de page quand le login/mdp n'est pas correct :  

Warning: ldap_bind(): Unable to bind to server: Invalid credentials in /var/www/folder/login.php on line 38


 
est ce que ça pourrait-en être la cause?
 
merci pour votre aide :jap:

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  J'ai un soucis avec la fonction "header"...

 

Sujets relatifs
php: fonction mail(), compatibilité yahoo, hotmail et autres[PHP] Comment actualiser une frame en fonction d'une autre
fonction mail et messagerie hotmailAlignement header/colonne différents dans un DataGrid
Fonction windows pour compresser un dossierpetit soucis avec intval() - pfff facile de crier qd on ne sait pas :p
fonction imagegifLe tracé d'une courbe représentant une fonction
Appel de fonction d'une autre page[GTK] probleme de lancement de fonction C a l'aide d'un bouton
Plus de sujets relatifs à : J'ai un soucis avec la fonction "header"...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR