Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !
WDMedia-Hebergement
 


Rechercher dans le forum

Mots-clés :

Trouver :
un de ces termes tous les termes

Depuis :
7 j 15 j 30 j


Retour à l'index du forum

Redirection avec sessions

Message original de Squal

Le : 04/03/2008 à 12:14:35

Dejà lu 2262 fois avant vous

bonjour a tous,

J'ai un petit souci avec la fonction : header
qui me renvoi l'erreur suivante :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sda/4/9/southrider/pg/pg-support.php:5) in /mnt/140/sda/4/9/southrider/pg/rub-test-session.php on line 26
Mot de passe ou login incorrect !


Voici une partie de mon code :
(pour info dans ce fichier il y a uniquement du php pas un pet de html ...)

//Verication de login & password
if($login!='' || $psw!='')
{
if($data['psw'] != $psw || $data['login'] != $login )
{
header("Location: pg-support.php?rub=home");
echo "Mot de passe ou login incorrect !";
}
else
{
session_start();
session_register("magasin");
header("Location: pg-support.php?rub=inside&id=$id");
echo "Redirection en cours ...";
}
}

else
{
header("Location: pg-support.php?rub=home");
echo "Mot de passe ou login incorrect !";
}

Je comprend pas trop, je l'avez fait pour un autre site, j'ai fait un copier collé du code ... et sa ne fonctionnement pas ...
Si quelqu'un a une idée ???

Merci d'avance,
squal

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 04/03/2008 à 13:24:18

Saluton,
Pour commencer, je ne vois pas trop à quoi servent les echo qui suivent les header puisque, par définition, avec un header on est censé repartir sur une page propre.

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 13:27:50

Je sais, mais cela doit s'afficher juste le tps de charger la page suivant ... (mais tu as raisons, ca ne sert pasa grand chose ...)

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 04/03/2008 à 13:38:15

Difficile asns savoir ce que sont censées contenir les variables d'endire plus.
Personnellement je me méfie toujours de la précédence entre opératuers et je gère toujours ça avec des parenthèse.
D'autre part session_register est obsolète
<?php
//Verication de login & password
if(($login!='') || ($psw!='')){
    if((
$data['psw'] != $psw) || ($data['login'] != $login )){
        
header("Location: pg-support.php?rub=home");
        }
    else{
        
session_start();
        
/* obsolète         session_register("magasin");         */
        
header("Location: pg-support.php?rub=inside&id=$id");
        }
    }
else{
    
header("Location: pg-support.php?rub=home");
    }
?>

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 15:21:12

Nikel je teste ca dessuite, pour session_register("magasin").

Mais en fait, le probleme principal, c'est qu'il me fais pas la redirection, je pense qu'il y a un probleme avec header("Location: pg-support.php?rub=home"); puisqu'il me renvoi le message suivant :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sda/4/9/southrider/pg/pg-support.php:5) in /mnt/140/sda/4/9/southrider/pg/rub-test-session.php on line 26
Mot de passe ou login incorrect !

Dans tous les cas, merci de te préocuper de mon soucis ...

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 04/03/2008 à 15:42:06

Normal tu ne peux pas faire envoyer un session_start ou quoi que ce soit avant de faire un header()
cf la doc
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé,
soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP.
Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces 
ou des lignes vides, qui génèreront un affichage avant que la fonction header()  ne soit appelée.
Le même problème existe avec les fichiers PHP/HTML standards.

Re: Redirection avec sessions

Réponse de Squal

Le : 04/03/2008 à 16:37:59

ok, mais étant donné que je suis obligé de me connecter a la base pour recupéré les bon login et mot de passe, je suis obligé de mettre un include(). Dans mon alors dois je proceder pour faire la redirection alors ?

Si tu as une idée, je suis totalement preneur ...
encore merci

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 04/03/2008 à 16:45:26

Difficile de te répondre sans voir la totalité du code, includes compris. (Pas ici, de grâce, si besoin est, utilises le wall)
Le moindre espace, retour chariot, message d'alerte ou d'erreur (php ou mysql), la moindre chose qu'Apache considèrerait comme un flux html avant la redirection par header() et tu auras droit à
headers already sent by (output started at:n° deligne qui fait planter....

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 16:55:29


http://phpdebutant.org/wall42.php

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 16:56:00

Bon aparament j'ai rien compris au wall ...

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 04/03/2008 à 17:22:20

Je ne peux évidemment pas tester ce code chez moi mais je te suggère de traiter le message d'erreur dans la page de destination, pg-support.php, en le récupérant dans $_SESSION['erreur'].
Par ailleurs l'erreur peut provenir de inc-connect.php
voici le code
[code]<?php
/* --------------------------------------------------
Fichier de verification de session
---------------------------------------------------- */
//Recuperation des variables & connection a SQL
$login = mysql_real_escape_string($_POST["login"]);
$psw = mysql_real_escape_string($_POST["psw"]);
include "inc-connect.php";
//On recupere le password de SQL qui correspond au login
$sql = "SELECT * FROM tbl_user WHERE login='$login'";
$req = mysql_query($sql) or die('Erreur lors de la connection !');
$data = mysql_fetch_assoc($req);
$id = $data['id_annuaire'];
//Verication de login & password
session_start();
if(($login!='') || ($psw!='')) {
if(($data['psw'] != $psw) || ($data['login'] != $login) ) {
$_SESSION['erreur'] = "Mot de passe ou login incorrect !";
header("Location: pg-support.php?rub=home");
}
else{
$_SESSION['erreur'] = "Login OK";
$_SESSION['login'] = $login;
header("Location: pg-support.php?rub=inside&id=$id");
}
}
else{
$_SESSION['erreur'] = "Mot de passe ou login incorrect !";
header("Location: pg-support.php?rub=home");
}
//fermeture de SQL
mysql_close();
?>[/cdoe]

Re: Redirection avec sessions

Réponse de luce

Le : 04/03/2008 à 17:28:13

Salut,
Chris, session_start() ne doit pas être avant ton include() ?

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 17:32:50

Je viens de coller le code que ta fais, mais il y a un soucis ... impossible de se connecter avec le server ...

http://southrider.free.fr/pg/pg-support.php?rub=test-session

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 17:35:30

sur la page home ...

login : motoequip
psw : test

Comme ca vous pouvez tester de vous meme ...

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 17:37:38

Je me suis permis de modifier le début du code :



<?php

/* --------------------------------------------------
Fichier de verification de session
---------------------------------------------------- */

//Recuperation des variables & connection a SQL
$login $_POST["login"];
$psw $_POST["psw"];
include 
"inc-connect.php";

//On recupere le password de SQL qui correspond au login
$sql "SELECT * FROM tbl_user WHERE login='$login'";
$req mysql_query($sql) or die('Erreur lors de la connection !');
$data mysql_fetch_assoc($req);
$id $data['id_annuaire'];

//Verication de login & password
session_start();
if((
$login!='') || ($psw!='')) 
{
    if((
$data['psw'] != $psw) || ($data['login'] != $login) ) 
    {
    
$_SESSION['erreur'] = "Mot de passe ou login incorrect !";
    
header("Location: pg-support.php?rub=home");
    }
else
    {
    
$_SESSION['erreur'] = "Login OK";
    
$_SESSION['login'] = $login;
    
header("Location: pg-support.php?rub=inside&id=$id");
    }
}

else
    {
    
$_SESSION['erreur'] = "Mot de passe ou login incorrect !";
    
header("Location: pg-support.php?rub=home");
    }
    
//fermeture de SQL
mysql_close();

?>

Re: Redirection avec sessions

Réponse de luce

Le : 04/03/2008 à 17:40:57

Tu dois mettre le session_start() juste apres le <?php

Ensuite, oublie pas de creer le repertoire session sur le ftp de la freeteuse.

Re: Redirection avec sessions

Réponse de luce

Le : 04/03/2008 à 17:42:35

Pense à mettre un fichier index.php dans le repertoire pg.

Re: Redirection avec sessions

Réponse de squal

Le : 04/03/2008 à 17:47:24

Le dossier "sessions" est déja crée ...
Pour le fichier index.php inutile d'en mettre un il me semble dans le dossier pg puisqu'il a la racine j'en est mis un un qui indique une redirection automatique sur la pg-support?rub=home et pour cette partie tout fonctionne correctement ...

Re: Redirection avec sessions

Réponse de rafaelle

Le : 04/03/2008 à 23:46:56

Bonsoir
Ce que je ne comprends pas c'est que l'erreur est dans pg-support.php ligne 5 ... Tu es sûr que ce n'est pas après que la redirection est faite que l'erreur se produit ?
Raf

Re: Redirection avec sessions

Réponse de squal

Le : 05/03/2008 à 00:20:39

Je comprend pas Raf, la page support fonctionne correctement ;..
D'ailleur tout le site fonctionne trés bien : southrider.com
Sur mon ordinateur, l'erreur se fait en ligne 25 sur le fichier rub-test-session

Mais si tu as une idée, tiens moi au jus, et merci dans tout les cas ...

Re: Redirection avec sessions

Réponse de rafaelle

Le : 05/03/2008 à 09:49:44

Bonjour
Pourrais-tu nous mettre les fichiers concernés sur un wall http://phpdebutant.org/article19.php, en entier (au moins du début à quelques lignes après l'erreur), avec l'erreur exacte ? Le fichier de connection aussi (mais sans les identifiants, surtout)
Merci
Raf

Re: Redirection avec sessions

Réponse de Squal

Le : 05/03/2008 à 13:37:43

Re-bonjour,

Pas de souci je met tout cela en ligne dessuite ...
Normalement tout est la :

http://phpdebutant.org/wall52.php


Et merci d'avance, c'est super cool ...

Re: Redirection avec sessions

Réponse de rafaelle

Le : 05/03/2008 à 15:26:44

Quand on regarde ton site, la page qui contient l'erreur est http://southrider.free.fr/pg/pg-support.php?rub=test-session. Donc la redirection se fait bien. Ensuite tu récupères $rub, qui est égal à test-session et tu inclus test-session.php en faisant <?php include "rub-$rub.php"; ?>. Là le session_start(), qui arrive après une tonne de HTML provoque évidemment une erreur.

Il te suffit de mettre ton session_start(); au tout début de pg-support.php et de l'enlever de test-session.php et ce sera bon ...

Raf

Re: Redirection avec sessions

Réponse de squal

Le : 05/03/2008 à 15:37:46

La reponse fut rapide, merci ...

Je testerai cela, mettre session_start() en debut de pg-support.
Mais que se passe t'il un internaute banal, arrive sur la pg-support, sans avoir aucune intention de se connecter, comme la plus tard des visiteurs du site ?

Que fait la fonction session_star() à se stade la ?

Merci en tout cas, pour ton aide raf,

Bisous,
squal

Re: Redirection avec sessions

Réponse de Maljuna Kris

Le : 05/03/2008 à 15:41:27

Quand je pense que ce post a commencé par ce gentillet :
bonjour a tous,

J'ai un petit souci avec la fonction : header


Re: Redirection avec sessions

Réponse de rafaelle

Le : 05/03/2008 à 17:02:41

Squal : quasiment rien ... tu t'en préoccuperas peut-être quand tu approcheras la taille de Google.

MK : c'est le charme de phpdeb, ça :)

Re: Redirection avec sessions

Réponse de Squal

Le : 05/03/2008 à 23:55:03

Un merci à vous 2 pour votre aide aussi aimable que compétante.

Et je vous recontacte lorsque le site est quasiment au niveau de google ...

Je termine donc ce post par :
"bonsoir a tous,
Je n'est plus de petit souci avec la fonction : header"

Un grand merci encore, et longue vie a votre site qui reste pour moi la reference en terme de programme php/SQL.

Bisous,
Squal
Retour à l'index du forum


Ajouter une réponse

Nom :

Email :

Titre :

Message :

Combien font 3 + 4 ?

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Recevoir les réponses par mail :
Oui Non

Mémoriser mon nom et mon email :
Oui Non

 

Charte des forums PHPDébutant

Bienvenue à vous,

Vous voici donc prêt à poster sur les forums de PHPDébutant. Avant toute chose, merci de prendre le temps de lire les quelques lignes qui suivent.

Attention, à partir du moment ou vous postez dans les forums, vous acceptez la présente charte. Si votre message est modéré ou supprimé, vous ne pourrez pas dire que vous n'étiez pas au courant des règles !

Pourquoi une charte

Le but de cette charte est simple : que ces forums restent cordiaux et que les personnes aidant les autres ne se sentent pas lésées, insultées, critiquées. Pour que ces forums fonctionnent, il faut des personnes qui répondent aux questions. Pour que celles ci restent sur le forum, il faut les traiter avec respect, et ne pas les confondre avec des bonnes poires, esclaves, etc...

Mesures de régulation

  • Un nouveau message ne disant pas bonjour, ou insultant, dont le titre est tout en majuscules, pourra être supprimé sans justification (raisons non limitatives).
  • Prenez le temps de vérifier que la question que vous allez poser n'a pas déjà été posée, à l'aide du formulaire de recherche.
  • Prenez également le temps de vérifier que la réponse à votre question ne se trouve pas dans les tutoriaux. Nous ne pouvons pas répeter pour chaque visiteur tous les cours, il sont écrits, profitez-en (dans l'ordre tant qu'à faire) !
  • Nous ne faisons pas de scripts tout prêts. Nous aidons et vous guidons pour que vous puissiez trouver vous même la réponse, ce qui est beaucoup plus formateur.
  • Si vous comptez poster un message publicitaire, abstenez-vous. Au mieux le message sera supprimé, au pire les habitués descendront votre service en flamme.
  • Pour tout message de recrutement, précisez bien votre demande. Inutile de poster pour trouver un développeur pour faire gratuitement votre site de webmastering qui vous rapportera plein de sous. Les seuls coups de mains donnés en développement sont pour des associations ou des sujets passionnant un développeur.
  • Toute personne tenant des propos racistes ou illicites sera bannie et pourra faire l'objet de poursuites.
  • L'humour étant très présent sur ces forums, ne réagissez pas violemment à des propos qui pourraient être à prendre au second degré et avec de l'humour.
  • Attention aux trolls ! Leur multiplication peut entraîner la mort des forums, et sans forum, plus d'aide !
  • Respectez les thèmes des forums. Pensez aussi à vérifier que votre message n'a pas été déplacé si vous le croyez effacé.

Conseils

  • N'oubliez pas que les personnes à qui vous vous adressez sont des bénévoles qui donnent de leur temps pour vous. Si vous êtes méchants avec eux, il n'aideront plus et vous n'aurez plus d'aide !
  • Ne soyez pas pressé. Nous avons une vie aussi, et nous ne sommes par forcément tout le temps disponibles.
  • N'oubliez pas que les smileys sont la pour faire comprendre l'humeur dans laquelle vous rédigez un message. Il est indispensable de mettre des smileys quand vous faites de l'humour, sinon le message pourrait être mal perçu (ca serait quand même idiot de plomber l'ambiance en faisant de l'humour !).
  • Surveillez votre orthographe, nous ne vous demandons pas d'être littéraire, mais que votre message soit au moins compréhensible. Evitez à tout prix le style SMS.
  • Expliquez clairement le problème, ce n'est pas toujours facile, mais mieux vaut essayer de le faire le plus possible.
  • Ne postez pas de questions trop vagues du genre "comment faire un forum". Cela ne sert à rien, cela ne s'explique pas sur un coin de forum.
  • Mettez un titre clair, correspondant au sujet que vous allez poster. A l'aide, au secours, etc... ne sont pas d'une grande utilité pour ceux qui vont vous aider. Parfois nous passons en coup de vent, et si nous ne savons pas ce que va contenir le message, nous ne le regarderons même pas.
  • Ne mettez par [URGENT] ou autre joyeuseté du genre dans vos titres de messages. Cela irrite les gens (il y'a plus urgent dans la vie, pensez aux gens qui meurent de faim ou ayant besoin des pompiers, ça c'est urgent), et vous n'aurez pas votre réponse plus vite pour autant.
  • Si vous connaissez déjà à quel domaine votre question d'adresse (par exemple mysql, html, php, javascript), n'hésitez pas à le marquer au début de votre message, avec un [html] par exemple (notez les minuscules).
  • Ne dites pas "ça marche pas". Il y a toujours des raisons. Je vous invite à consulter le tutorial "ça marche pas" qui vous aidera à mieux expliquer votre problème.
  • Ne postez pas 36000 lignes de code. Sur le forum, le code apparaît non coloré et sans indentation, ce qui est illisible. Au dessus de 5 lignes, plus personne ne lit et vous n'aurez pas de réponse. Utilisez le wall
  • En règle générale restez courtois et clair, n'oubliez pas que la politesse fait partie de la vie courante. Il est de bon ton de dire bonjour même pour une réponse, même plusieurs fois dans la journée (ceux qui vous lisent n'ont pas forcément lu vos autres messsages)

La Fin

Avec tout ces conseils vous augmenterez les chances de réponse, leur pertinence et leur rapidité

Voilà, ça sera tout, bonne écriture :)

Fermer les règles et poster un message


www.phpdebutant.org © 2012 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement