[INFO] sur l'utilisation des sessions de phpBB2 sur son site

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 ce forum.

Modérateur: Equipe

Messagepar pakito » 12 Avr 2005 à 12:09

manu56 a écrit:
Code: Tout sélectionner
<?$requete="SELECT user_new_privmsg,user_unread_privmsg FROM phpbb_users WHERE user_id='".$userdata['user_id']."'";
   
   $result2=mysql_query($requete) or die ("Marche pas recup messages privés");
   while($message=mysql_fetch_array($result2)){
   $new_privmsg=$message[0];
   $unread_privmsg=$message[1];
   
         }
              if($new_privmsg==0){
         echo ('Vous n\'avez pas de nouveau message ');
         }
         if($new_privmsg==1) {
         echo ('Vous avez 1 nouveau message');
         }
         if($new_privmsg>1) {
         echo ('Vous avez '.$new_privmsg.' nouveaux messages');
         }
         if($unread_privmsg==1) {
         echo ('(1 message non lu)');
         }
         if($unread_privmsg>1) {
         echo ('('.$unread_privmsg.' messages non lus)');
         }


Ca c'est pour les pour les messages lu/non, chez moi ca marche, si t'as un pb n'hésite pas :wink:


Ton script est pas mal mais il affiche Pas de nouveaux messages" alors que j'en ai un ... Faut peut être mettre des elseif à la place des if ? Enfin si quelqu'un peut m'aider ...
Et j'ai toujours mon erreur de login/logout :cry:
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar manu56 » 12 Avr 2005 à 12:31

Ca doit venir de la requete, il faut que tu es en haut de ta page
Code: Tout sélectionner
<?php

define('IN_PHPBB', true);
$phpbb_root_path = './../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_SITE); /* Modifier PAGE_SITE par PAGE_INDEX si tu n'as pas éffectuer les opérations décrites dans mon premier post */
init_userprefs($userdata);


car sinon tu ne récupère ps l'id de l'utilisateur et il ne trouve pas le nombre de tes messages :

$requete="SELECT user_new_privmsg,user_unread_privmsg FROM phpbb_users WHERE user_id='".$userdata['user_id']."'";
manu56
Posteur néophyte
Posteur néophyte
 
Messages: 93
Inscription: 20 Mar 2005 à 19:56

Messagepar titeuf51 » 12 Avr 2005 à 16:12

Mgx a écrit:
titeuf51 a écrit:Mettre ce code dans toutes les pages du répertoire à protéger : (...)


Oki, merki! J'ai effectivement mis ton code au début de chacun des fichiers php de mon dossier, mais j'obtiens... une page blanche. ?
en réalité, je n'ai que deux modifs à faire, c'est cela? Mon forum se trouve à la racine du site ( du style xyz.com/phpbb ), comment dois je l'indiquer? ../ quelque chose dans le style?

egalement la page vers laquelle on redirige doit t-elle etre obligatoirement en php?

Désolé pour ces petits contretemps techniques.. :oops:


Tu dois seulement remplacer forum par le nom du répertoire qui contient ton forum dans $phpbb_root_path = './../forum/';.

Si tu obtiens une page blanche, c'est que tu es connecté.
Tu peux mettre un else pour afficher quelque chose aux personnes connectées ;)

La page vers laquelle l'invité sera redirigé ne doit pas forcément être en PHP ;)
@+ Titeuf

Je suis de moins en moins présent sur ce forum, j'ai beaucoup de choses à faire.
Je ne peux donc pas être très actif pour un support quelconque.


On dit bien Le ridicule ne tue pas. On dit aussi Ce qui ne nous tue pas nous rend plus fort. Alors pourquoi ne pas dire Le ridicule rend plus fort ? :D
Avatar de l’utilisateur
titeuf51
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3077
Inscription: 29 Fév 2004 à 13:27
Localisation: France, Reims

Messagepar pakito » 12 Avr 2005 à 20:47

Pour les messages privés ça marche sauf que ça fait la même erreur que pour logout quand on revient sur la page après en être parti ...

Help me please.
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar Mgx » 12 Avr 2005 à 22:37

Oki, j'ai tout vérifié, bien redirigé, j'obtiens toujours une page blanche.. quid?

car ma redirection est mon dossier donc "photo" à la racine du site, tout comme phpbb. Donc pas un fichier.. serais ce là le pb?

Merci docteur. :D
Mgx
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: 07 Avr 2005 à 16:38
Localisation: France

Messagepar titeuf51 » 12 Avr 2005 à 23:22

Mgx a écrit:Oki, j'ai tout vérifié, bien redirigé, j'obtiens toujours une page blanche.. quid?

car ma redirection est mon dossier donc "photo" à la racine du site, tout comme phpbb. Donc pas un fichier.. serais ce là le pb?

Merci docteur. :D


Quand obtiens-tu une page blanche ?
@+ Titeuf

Je suis de moins en moins présent sur ce forum, j'ai beaucoup de choses à faire.
Je ne peux donc pas être très actif pour un support quelconque.


On dit bien Le ridicule ne tue pas. On dit aussi Ce qui ne nous tue pas nous rend plus fort. Alors pourquoi ne pas dire Le ridicule rend plus fort ? :D
Avatar de l’utilisateur
titeuf51
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3077
Inscription: 29 Fév 2004 à 13:27
Localisation: France, Reims

Messagepar pakito » 13 Avr 2005 à 18:47

Mon problème viens de la page forum/includes/session.php ...
Quand on revient sur la page login.php ou newmess.php après être allé sur le forum il y a 2 ou 4 messages d'erreur du type :
Code: Tout sélectionner
Warning: Cannot modify header information - headers already sent by (output started at /home/j/jeuvideo/user/www/html/login.php:1) in /home/j/jeuvideo/user/www/html/forum/includes/sessions.php on line 293

Warning: Cannot modify header information - headers already sent by (output started at /home/j/jeuvideo/user/www/html/login.php:1) in /home/j/jeuvideo/user/www/html/forum/includes/sessions.php on line 294


Et quand on se logout et qu'on essai de se relogin le formulaire de login n'est pas affiché et il y a 2 messages d'erreurs en plus sur les lignes 304 et 305 je crois mais je suis pas sur ...

Help me please ;) !
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar manu56 » 13 Avr 2005 à 18:50

euh c'est p/e un problème de cookies mais la comme ca, je saurais pa te dire le pourquoi du comment...
manu56
Posteur néophyte
Posteur néophyte
 
Messages: 93
Inscription: 20 Mar 2005 à 19:56

Messagepar Mgx » 13 Avr 2005 à 18:54

titeuf51 a écrit:Quand obtiens-tu une page blanche ?


Quand j'essaie ( donc ) d'aller mes galeries. Je tombe tout de suite sur une page blanche. Avant, c'était bien, j'avais des messages d'erreurs! :D
Là, rien. Du coup je sais pas quoi en penser.. :?: marche, marche pas..
Mgx
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: 07 Avr 2005 à 16:38
Localisation: France

Messagepar pakito » 13 Avr 2005 à 19:07

manu56 a écrit:euh c'est p/e un problème de cookies mais la comme ca, je saurais pa te dire le pourquoi du comment...


Ben c'est à dire que mes cookies marchent parfaitement d'habitude même sur les sites avec une connexion forum/site !

Edition :

Je crois que l'erreur vient du fait que la session du forum et celle de ton script son différentes ...
Si je pouvais te contacter par MSN (-> Titeuf)
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar pakito » 14 Avr 2005 à 20:59

Petit up ...
Voici les lignes qui buguent lors des déconnexions ou messages privés :

Code: Tout sélectionner
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);


Et voici celles qui buguent lors des déconnexions et reconnexions :

Code: Tout sélectionner
setcookie($cookiename . '_data', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);
setcookie($cookiename . '_sid', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);


J'espère que quelqu'un pourra m'aider ...
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar pakito » 15 Avr 2005 à 21:03

Up svp, c'est assez urgent ...
Image
Avatar de l’utilisateur
pakito
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Inscription: 24 Mar 2004 à 19:24
Localisation: Sud-ouest de la France

Messagepar manu56 » 15 Avr 2005 à 21:10

en gros liste moi les modifications que tu as pu faire dans les fichiers de phpBB?
manu56
Posteur néophyte
Posteur néophyte
 
Messages: 93
Inscription: 20 Mar 2005 à 19:56

Messagepar manu56 » 15 Avr 2005 à 21:11

Un petit conseil, je viens de voir que ton forum est en phpBB 2.0.6. Je pense qu'il serait plus que necessaire de le mettre à jour ;)

http://forums.phpbb-fr.com/viewtopic_44824.html

Les codes que l'on indique sont utilisé sur des phpBB 2.0.13, peut-etre le problème vient de la :roll:
manu56
Posteur néophyte
Posteur néophyte
 
Messages: 93
Inscription: 20 Mar 2005 à 19:56

Messagepar Limerick » 16 Avr 2005 à 15:19

Bonjour titeuf51,

Nota : moi aussi j'ai posté également sur phpBBfrance car je ne sais pas lequel des 2 forums tu suis le plus :?

Je tente une question car même si je suis un "total newbie" en matière de php, mysql ou autres choses savantes, je ne désepère pas de parvenir à mes fins...

Que j'explique donc ma situation...

J'ai un site privé (famille et amis) fait avec DAlbum.

Le principe est que chaque visiteur se logge au site grâce à un identifiant et un mot de passe que je lui fournit préalablement, au travers d'une page de login que je souhaite conserver.
Le système est assez basique dans la mesure où c'est le même identifiant et le même mot de passe pour tous ces visiteurs (il n'y en a quand même un différent pour l'administrateur que je suis...)

J'ai rajouté à ce site, un forum phpBB qui possède une gestion des utilisateurs beaucoup moins rudimentaire (mais que je ne maîtrise pas encore).

Ce que je souhaiterais, c'est que chaque visiteur accède au site (toujours par la page de login du site existant déjà) en utilisant la base de phpBB.

Chaque visiteur serait toujours invité (la première fois) par moi-même et je lui fournirais l'identifiant-mot de passe que j'aurais préalablement créés (quitte à ce qu'il change son mot de passe par la suite par l'interface du forum).

Cerise sur la gateau, je souhaiterais que l'on ne puisse accéder au forum qu'au travers du lien placé sur le site, et uniquement par ce lien. Autrement dit, qu'on ne puisse pas accéder à quelque page que ce soit du forum en direct, comme c'est le cas pour le site (on serait automaiquement renvoyé vers la page de login du site). Que ce soit pour se connecter si l'on est déjà membre, mais aussi pour que l'on ne puisse pas tenter de s'inscrire. Disons que le forum serait invisible à ceux qui ne seraient pas préalablement passés par le site.
En revanche une fois loggé au site, bien sûr, on pourrait accéder au forum sans problème car également loggé.
Mais tout ceci serait dans un deuxième temps...

Ma question est donc la suivante : le but des scripts que tu exposes plus haut sont-ils loin de celui que je recherche et comment puis-je l'atteindre ?

Pour info, voici comment est faite la page de login de DAlbum :

Code: Tout sélectionner
<?php
/*
    This file is a part of DAlbum.  Copyright (c) 2003 Alexei Shamov, DeltaX Inc.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
    if (!defined("DALBUM_ROOT"))
        define("DALBUM_ROOT",".");
    if (!defined("DALBUM_BROWSERROOT"))
        define("DALBUM_BROWSERROOT","");

    define("DALBUM_LOGIN_PAGE","1");

    require_once(DALBUM_ROOT.'/include/md5crypt.php');
    require_once(DALBUM_ROOT."/include/functions.php");
    require_once(file_exists(DALBUM_ROOT."/config/config.php")?DALBUM_ROOT."/config/config.php":DALBUM_ROOT."/include/config.php");
    require_once(DALBUM_ROOT."/include/conffix.php");
    require_once(DALBUM_ROOT."/include/createhta.php");
    require_once(DALBUM_ROOT."/include/createini.php");
    require_once(DALBUM_ROOT."/include/album.php");

    // Include custom functions
    if (file_exists(DALBUM_ROOT."/config/custom.php"))
        include_once(DALBUM_ROOT."/config/custom.php");
    elseif (file_exists(DALBUM_ROOT."/include/custom.php"))
        include_once(DALBUM_ROOT."/include/custom.php");


    remove_bloody_magic_quotes();

    if (function_exists('everypageCallback'))
        everypageCallback("");


    if (isset($_POST['cancel']))
    {
        dalbum_relocate(translateRef('index.php'));
        return;
    }

    global $g_bHTTPAuth;

    // Load main album
    $sTitle="";
    $albRoot=&CAlbum::CreateFromArchive();
    if (!empty($albRoot))
        $sTitle=$albRoot->GetTitle();

    if (empty($sTitle))
        $sTitle="DAlbum";

    //
    $sRefURL="";
    if (isset($_GET['url']))
        $sRefURL=$_GET['url'];
    if (isset($_POST['f_URL']))
        $sRefURL=$_POST['f_URL'];
    if (empty($sRefURL))
        $sTarget=dirname_ex($_SERVER['PHP_SELF'])."/index.php";
    else
        $sTarget=base64_decode($sRefURL);


    if ($g_bHTTPAuth)
    {
        if (isset($_SERVER['REMOTE_USER']))
        {
            dalbum_relocate($sTarget);
        }
        elseif (!isset($_SERVER['PHP_AUTH_USER']) || !authenticate($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']))
        {
            global $g_sAuthName;
            header("WWW-Authenticate: Basic realm=\"$g_sAuthName\"");
            header('HTTP/1.0 401 Unauthorized');
            LogonFailure($sRefURL);
        }
        else
        {
            setcookie('DAlbum_Auth',"1");
            dalbum_relocate($sTarget);
        }
        return;
    }

    // Start session
    StartSessionAndGetUserName('nocache',true);

    // We are called from form
    if (!empty($_POST['f_user']))
    {
        // authenticate using form variables
        $status = authenticate($_POST['f_user'], $_POST['f_pass']);

        // if user/pass combination is correct
        if ($status == 1)
        {
            // start session
            $_SESSION['DAlbum_UID'] = $_POST['f_user'];
            $c=parse_url($sTarget);
            $sTarget=basename($c['path'] );
            if (!empty($c['query']))
                $sTarget.='?' . $c['query'];
            fixBrokenSessions();
            dalbum_relocate($sTarget);

        }
        else
        {
            LogonFailure($sRefURL,  $sTitle);
        }
        return;
    }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<title><?php print strtr($lang['loginTitle'],array("#title#"=>$sTitle)); ?></title>
<meta http-equiv="pragma" content="nocache">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=<?php print $g_sCharset;?>">
<script src="<?php print DALBUM_BROWSERROOT . 'dalbum.js'; ?>" type="text/javascript"></script>
<link rel="stylesheet" href="<?php print $g_sStylesheet; ?>" type="text/css">
<link rel="stylesheet" href="<?php print $g_sCustomStylesheet; ?>" type="text/css" >
</head>
<body onload="javascript: dalbum_firstFocus();" class="centered">

<form action="" method="POST">
<table class="dialog">
<tr>
    <th colspan="2"><?php print strtr($lang['loginTitle'],array("#title#"=>$sTitle)); ?>

<script type="text/javascript">
//<!--
        cookiestring = "DAlbumTestCookie=1;"
        document.cookie = cookiestring;
        if (document.cookie)
        {
            cookiestring = "DAlbumTestCookie=1;EXPIRES=Wednesday, 04-Apr-01 03:09:32 GMT;"
            document.cookie = cookiestring;
        }
        else
        {
            document.write('<?php print js_escape("</th></tr><tr><td colspan=2 class='error' style='width:400px;'>" . $lang['loginNoCookiesWarning'] . "</td></tr><tr><th style='display:none;'>"); ?>');
        }
//-->
</script>
</th>
</tr>
<tr>
    <td id="username"><?php print $lang['username']; ?></td>
    <td><input type="text" size="10" name="f_user" ></td>
</tr>
<tr>
    <td><?php print $lang['password']; ?></td>
    <td><input type="password" size="10" name="f_pass" >
<?php
    if (isset($_GET['url']))
    {
        print "<input type='hidden' name='f_URL' value='$sRefURL'>\n";
    }?>
</td></tr>
<tr>
    <td colspan="2" align="right">
        <input type="submit" name="submit" value="<?php print $lang['loginLoginBtn']; ?>">
        <input type="submit" name="cancel" value="<?php print $lang['loginCancelBtn']; ?>">
</td> </tr>
</table>
</form>
<div><a href='<?php print translateRef("index.php");?>' class='pageLink' ><?php print $lang['mainPage'];?></a></div>

</body>
</html>

<?php

// Logon failure function
function LogonFailure($sRefURL)
{
    global $lang,$g_sStylesheet;

    $sRelogonURL='login.php';
    if (!empty($sRefURL))
        $sRelogonURL.="?url=" . $sRefURL;
    $sRelogonURL=translateRef($sRelogonURL);
    global $g_sCharset;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<title><?php print $lang['loginAuthError']; ?></title>
<meta http-equiv="pragma" content="nocache">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=<?php print $g_sCharset;?>">
<link rel="stylesheet" href="<?php print $g_sStylesheet; ?>" type="text/css">
<link rel="stylesheet" href="<?php print DALBUM_BROWSERROOT . 'custom.css'; ?>" type="text/css" >
</head>
<body class="centered">
<table class="dialog" >
<tr>
<th><?php print $lang['loginAuthError']; ?></th>
</tr>
<tr>
<td>
<p><?php print $lang['loginBadUserName']; ?></p>
<ul>
<li><a HREF='<?php print $sRelogonURL; ?>'><?php print $lang['loginAgain'];?></a></li>
<li><a href='<?php print translateRef("index.php");?>'><?php print $lang['mainPage'];?></a></li>
</ul>
</td>
</tr>
</table>
</body>
</html>
<?php

}


?>


...heu c'est peut-être un peu long, mais j'espère donner toutes les infos pour comprendre ma question :oops:

Merci pour ton aide,
Lim.
Limerick
Posteur néophyte
Posteur néophyte
 
Messages: 20
Inscription: 16 Avr 2005 à 15:15

PrécédenteSuivante

Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant