MyBB.support, le portail francophone de MyBB

Version complète : [résolu]Se logger a myBB depuis l'exterieur du forum
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour à tous,

je souhaiterais mettre en place un formulaire pour mon site à l'extérieur de myBB.
j'ai suivi un autre post pour le relier au login de myBB afin que les utilisateurs ne se loggent qu'une seule fois. myBB est installé dans le dossier 'forum/'

ce formulaire est le suivant, et fonctionne très bien :

Code PHP :
<?php

define
("IN_MYBB"1);
require 
'../forum/global.php';

<?
php
echo $mybb->user['uid'];
if(
$mybb->user['uid'])
{
// The user is logged in, say Hi
echo "Hey, $mybbuser[username].<br>
Thanks for logging in."
;
}
else
{
// The user is not logged in, Display the form
echo "<form action='../forum/member.php' method='post'>
Username: <input type='text' name='username' size='25' maxlength='30' /><br />
Password: <input type='password' name='password' size='25' />
<input type='hidden' name='action' value='do_login'>
<input type='hidden' name='url' value='../admin/index.php' />
<input type='submit' class='submit' name='submit' value='Login' /></form><br>"
;
}
?>

Le système de login du forum valide le login et me renvoi sur ma page, cependant j'ai toujours le formulaire affiché.

je suppose qu'il ne connait pas $mybb->user['uid'], mais je ne sais pas comment récupérer cette valeur...le cookie créé ne me donne à priori pas assez d'infos pour piocher dans la base et récupérer les infos sur le membre loggé...

j'espère que cette question n'a pas déjà été posée..avez vous une solution?
Salut,

Je suppose que tu as pioché dans cette discussion ?
http://community.mybboard.net/thread-6190.html?highlight=Integrating

Essaie avec ça au début :

Code PHP :
<?php
    define
("IN_MYBB",1);
    
chdir('../forum'); // path de MyBB
    
require './global.php';

if(
$mybb->user['uid'])
{
// The user is logged in, say Hi
echo "Hey, $mybbuser[username].<br>
Thanks for logging in."
;
}
else
{
// The user is not logged in, Display the form
echo "<form action='../forum/member.php' method='post'>
Username: <input type='text' name='username' size='25' maxlength='30' /><br />
Password: <input type='password' name='password' size='25' />
<input type='hidden' name='action' value='do_login'>
<input type='hidden' name='url' value='../admin/index.php' />
<input type='submit' class='submit' name='submit' value='Login' /></form><br>"
;
}
?>

Ou alors essaie avec $mybb->user['username'] au lieu de uid ?

Code PHP :
if($mybbuser[username])
{
// The user is logged in, say Hi
echo "Hey, $mybbuser[username].<br>
Thanks for logging in."
;


Vérifie aussi ton domaine des cookies : [Wiki: Cookies#Cookie_Settings]

Ce code marchait pour 1.2.x, je ne sais pas si ça marche avec 1.4.

Peut-être aussi en utilisant des URL absolues ?

@+
merci spyto pour cette réponse rapide.
exact pour la discussion.

j'ai donc essayé tes propositions, mais j'ai toujours ce souci.

en déplaçant cette page dans le dossier du forum, ça marche nikel.
mais en dehors non.
je ne connais pas la fonction chdir, sait tu ce qu'elle est censée faire?

il y a bien une valeur sid et mybb dans le cookie créé, je suppose que c'est de là qu'il la tire.
il me semble cependant l'avoir configuré correctement, à savoir puisque je suis en local, et que le forum est dans un dossier "chinois" :

Cookie Domain :

Cookie Path :
/chinois/forum/

j'ai tenté de récuperer le cookie par la methode classique $_COOKIE mais il ne le voit pas...

je continu de tester, mais ça doit venir d'eux logiquement
1. chdir = change directory, ça se positionne sur le dossier du forum !
(équivalent DOS : cd

2. Pour les cookies, c'est pas bon !

Si l'url de ton forum est http//localhost/chinois/forum

Domaine des cookies;
.localhost
(avec un point au début)

Chemin des cookies :
/chinois/forum/

Pour régler ces paramètres, tu as un outil ici:
http://www.dennistt.net/mybb/cookiesettings.php
qui te donne les valeurs en fonction de l'URL de ton forum.

@+

Edit : la gestion des cookies est complètement remaniée dans la v1.4. Il y a non seulement un sid mais aussi un identifiant de session qui est vérifié lors de la connexion ou déconnexion.
Aussi, un mauvais réglage de ces paramètres est source de difficultés de login/logout !

Edit 2 : J'ai lu aussi à la fin de la dite discusssion sur mybbboard que des utilisateurs sous 1.4 avaient ce même souci...
Surveille les réponses là-bas.
Dac, c'est noté.
merci de tes explications, je vais suivre ce topic.

bonne soirée !
Petite solution pas top en attendant :

Utiliser la redirection du forum pour accéder à la zone sécurisé hors forum si le login est validé, et recréer un cookie perso...

Très moyen puisque cela oblige à modifier member.php...
mais en attendant j'ai pas mieux...

comprend pas pourquoi j'ai pas accès à ce cookie Rolleyes
Je n'ai jamais vraiment approfondi dans ce domaine, aussi je ne vois pas comment t'aider...

Effectivement, c'est moyen... mais si ça marche !

Tu as regardé le thread sur mybbboard ? Y'a rien de neuf ?...

Si j'ai des infos, je ne t'oublie pas !

@+

Tiens-moi au courant si tu as mieux... ou si tu ne trouves toujours rien, n'hésite pas à reposter ! Peut-être que quelqu'un mieux informé sur ce point te lira ?
Sait-on jamais ?

Tu as essayé de poster ta question sur mybbboard ? Là-bas, le public est plus large, tu aurais peut-être plus de chances d'obtenir une répose ?
hey !

la solution m'a été donnée sur le forum anglais.

Je n'ai pas le temps de détailler, mais je le ferais demain Smile
en gros, il faut donner comme cookie path la racine de site afin que les cookie soient accessible partout...a priori !

En attendant pour ceux qui comprennent l'anglais (c'est facile) c'est par là :

http://community.mybboard.net/thread-6190-post-278345.html#pid278345

enjoy, et merci spyto pour tes conseils.
Donc comme promis, petite solution :

placer le formulaire de login suivant sur une page hors du dossier de myBB :

Code PHP :
<?php
    define
("IN_MYBB",1);
    
chdir('../forum'); // path de MyBB
    
require './global.php';

if(
$mybb->user['uid'])
{
// The user is logged in, say Hi
echo "Hey, $mybb->user[username].<br>
Thanks for logging in."
;
}
else
{
// The user is not logged in, Display the form
echo "<form action='../forum/member.php' method='post'>
Username: <input type='text' name='username' size='25' maxlength='30' /><br />
Password: <input type='password' name='password' size='25' />
<input type='hidden' name='action' value='do_login'>
<input type='hidden' name='url' value='../admin/index.php' />
<input type='submit' class='submit' name='submit' value='Login' /></form><br>"
;
}
?>

Il est presque identique au tien spyto, j'ai juste changé
$mybbuser[username]
en
$mybb->user[username]

pour qu'il affiche bien le login. Vous n'avez plus qu'à placer ce script sur les pages ou vous désirez que l'utilisateur soit loggé.


Ensuite il faut changer le domaine des cookies, à partir de l'admin ou dans le fichier inc/settings.php de votre forum, pour qu'il pointe vers la racine de votre site.

pour moi qui travaillait en localhost, dans un dossier nommé chinois ça donne ceci :

$settings['cookiedomain'] = "";
$settings['cookiepath'] = "/chinois/";

Je ne suis pas certain de la configuration pour des sites en ligne (http://www.enligne.com par exemple). si quelqu'un peut confirmer que ça fonctionne.

J'espère que ça pourra en aider certain :p
Wink
C'est bien ce que j'avais écrit plus haut :
Citation :Ou alors essaie avec $mybb->user['username'] au lieu de uid ?

Mais comme un and..., je m'étais planté dans le code ! Rolleyes
(la variable $mybbuser n'existe pas !)
Et ça marche comme tu l'as écrit ?

J'étais persuadé que que les guillemets étaient obligatoires :
c'est à dire : $mybb->user['username'] et non $mybb->user[username]

Merci de ta contribution, en espérant que ça puisse servir à d'autres.

@+

PS: si tu parles du domaine et du chemin des cookies, pour un site en ligne, le lien que je t'avais donné :
http://www.dennistt.net/mybb/cookiesettings.php
te donne exactement les bonnes valeurs.
Salut !
J'avais développé ça pour mon forum, je te conseil tout simplement ce script :
Code PHP :
require_once('inc/config.php');
mysql_connect($config['hostname'], $config['username'], $config['password']);
mysql_select_db($config['database']);

    
$explore_cookie explode('_'$_COOKIE['mybbuser']);
    
$uid $explore_cookie[0];
    
$loginkey $explore_cookie[1];
    
$query mysql_query("SELECT * FROM `".$config['table_prefix']."users` WHERE `uid`='".$uid."'");
    
$result mysql_fetch_array($query);
    
$username $result['username'];

    
// Pour voir si l'utilisateur n'a pas modifié ses cookies
    
if($loginkey == $result['loginkey'])
        
$login true;
    else
        
$login false;

if (
$_COOKIE['mybbuser'] && $login) {
    echo 
"Bienvenue $username !";
}
else {
    echo 
"Vous n'êtes pas connecté, merci de vous connecter !";


Voilà, si tu as besoin d'un conseil, n'hésites pas !

@+
et65
Je n'affirme rien, mais sans trop vouloir trop m'avancer, il me semble que depuis la version 1.4, les références aux variables de $config ont changé de forme (cf. config.php).

A savoir :
$config['database']['hostname'] et non $config['hostname']
$config['database']['username'] et non $config['username']
$config['database']['password'] et non $config['password']
$config['database']['database'] et non $config['database']
$config['database']['table_prefix'] et non $config['table_prefix']

Il me semble que ton script, et65, avait dû être écrit pour 1.2.x...

@+
Salut je remet se vieux post a jour,

Moi j'obtient $mybb->user[username] quand je me log donc sa veux dire que sa a changé quel est la bonne merci d'avance
 Utilitaire de traduction fourni par Regentronique