[Script PHP] Pseudos-frames et espace membres

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Partager sur FacebookPartager sur TwitterPartager sur Google+

[Script PHP] Pseudos-frames et espace membres

Messagepar boguet » 02 Avr 2006 à 12:39

Bonjour à tous !

Alors j'ai un problème avec mon script d'espace membre. En fait, c'est parce que j'utilise des pseudos-frames et j'ai des erreurs avec les session_start();

Je vous donne le code d'erreur déjà :

Code: Tout sélectionner
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /media/160go/hebergement/login/index.php:17) in /media/160go/hebergement/login/login.php on line 19

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /media/160go/hebergement/login/index.php:17) in /media/160go/hebergement/login/login.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /media/160go/hebergement/login/index.php:17) in /media/160go/hebergement/login/login.php on line 21


Ligne 19 - 21 de login.php :

Code: Tout sélectionner
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');



Voilà merci à ceux qui peuvent m'aider !

A bientôt.
Modifié en dernier par boguet le 07 Avr 2006 à 21:42, modifié 2 fois.
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar spitfire pat » 02 Avr 2006 à 12:56

ce ne sont pas les lignes 19-21 de login.php qui importent

c'est parce que login/index.php a affiché quelque chose en ligne 17 que cette erreur survient
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15297
Enregistré le: 18 Sep 2004 à 16:43
Localisation: bourgogne

Messagepar boguet » 02 Avr 2006 à 12:59

spitfire pat a écrit:ce ne sont pas les lignes 19-21 de login.php qui importent

c'est parce que login/index.php a affiché quelque chose en ligne 17 que cette erreur survient


Code: Tout sélectionner
17. <?php 
18. include('menu1.htm'); 
19. ?>
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar Fly » 02 Avr 2006 à 13:08

session_start() dois être appelé avant tout affichage, quand t'inclus ton menu ça l'écris.
Ça dois être la toute première instruction de ta page.
http://php.net/session_start
Loués soient les Oris :).
Avatar de l’utilisateur
Fly
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 4622
Enregistré le: 12 Juin 2002 à 13:10
Localisation: Metz

Messagepar boguet » 03 Avr 2006 à 16:42

Fly a écrit:session_start() dois être appelé avant tout affichage, quand t'inclus ton menu ça l'écris.
Ça dois être la toute première instruction de ta page.
http://php.net/session_start
Ok merci pour ta réponse !

Mais alors, dans quelle page inclure le session start ?

Voici mon code de pseudos-frames (index.php) :

Code: Tout sélectionner
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>.Titre.</title>
  <link href="css/style.css" type=text/css rel=stylesheet>
</head>

<body>

<div id="banniere"></div>
 
  <div id="colonne">

    <div class="menu">
    
<?php 
  include('menu1.htm'); 
?>

</div>

    <div class="menu">
    
<?php 
  include('menu2.php'); 
?>

</div>


</div>


<div id="principal">


<?php
$page_go = FALSE;
if ( isset( $_GET['page'] ) and !empty( $_GET['page'] ) ) {
    switch( $_GET['page'] ) {

        case 'accueil' : $page_go = 'accueil.php'; break;      
    }
    if( !empty( $page_go ) and file_exists( $page_go ) ) {
        include( $page_go );
    } elseif( $page_go === FALSE ) {
        echo'<p align="center">...</p>';
    }
}
else {
        // Ici on met la page par défaut
    include( 'page.php' );
}
?>

</div>

<div id="pied">Copyright...br />
</div>

</body>
</html>


Alors si je mets la session au début de la page index.php :

Code: Tout sélectionner
<?php
session_start();
if (!isset($_SESSION['login'])) {
    header ('Location: login.php');
    exit();
}
?>


He ben ça ne vas pas logiquement donc, comment faire ?

Merci pour ta réponse.
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar boguet » 06 Avr 2006 à 16:28

Je me permet un petit "up" car je n'ai pas très bien compris la doc. que tu m'a fournie.

Merci.
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar shadowfr » 06 Avr 2006 à 20:12

Mettre le session_start au début de ta page index ^^
Code: Tout sélectionner
index.php

Code: Tout sélectionner
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

.....



headers already sent by (output started

Cette erreur la je la rencontre souvent dans mes scripts
J'ai trouvé, il y a longtemps, un moyen de la corriger

Il suffit de mettre tout en haut de ta page d'index, avant même un session_start, ce code :

ob_start();

et tout en bas :

ob_end_flush();

(j'avoue ne pas trop comprendre pourquoi, mais ça marche, c'est le principal :lol: )
Modifié en dernier par shadowfr le 06 Avr 2006 à 21:32, modifié 1 fois.
shadowfr
Posteur néophyte
Posteur néophyte
 
Messages: 10
Enregistré le: 29 Mar 2006 à 16:22

Messagepar boguet » 07 Avr 2006 à 16:47

Salut !

Merci beaucoup pour ta réponse ! J'ai pu finir mon espace membre de A à Z aujourd'hui !

Merci mille fois...
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar boguet » 07 Avr 2006 à 21:42

Euh encore juste un truc...

J'ai une rubrique sur laquelle j'aimerais mettre une protection pour les non-inscrits. Je m'explique :

J'aimerais restreindre l'accès à une rubrique. Seul les membres enregistrés peuvent y accéder. Donc, sur la page je mets que le visiteur doit être enregistré pour accéder à la rubrique, jusque-là, aucun problème.

Mais, si le visiteur s'est déjà inscrit, je mets mon formulaire d'identification. Lorsque il se connecte, il va directement être redirigé sur la bonne rubrique et non sur l'accueil de l'espace membre.

Comment faire ??
boguet
Roi des posts
Roi des posts
 
Messages: 774
Enregistré le: 22 Juin 2005 à 19:49
Localisation: Suisse

Messagepar Vlad Tepesch » 08 Avr 2006 à 11:36

Comme sur phpbb :)

Avec un champ caché :

<input type="hidden" name="redirect" value="./page.php" />

Au moment où tu fabrique le formulaire, tu regarde c'est quelle page qu'il essaie d'afficher, et tu le met à la place de page.php.

Ensuite, quand tu traite le formulaire, si le login est bon, tu n'as plus qu'à faire :

header('location:'.$_POST['redirect']);
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris


Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités