[INFO] sur l'utilisation des sessions de phpBB3 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

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar anxious » 15 Fév 2010 à 15:24

héhé, ça à l'air bête comme ca mais il fallait y penser.

merci je test ça de suite ;)

PARFAIT, merci beaucoup, ca marche nickel (sauf pour les utilisateurs au nom trop court, mais c'est pas grave, tant pis pour eux :D)
anxious
Posteur néophyte
Posteur néophyte
 
Messages: 12
Inscription: 14 Mar 2009 à 22:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar anxious » 15 Fév 2010 à 16:55

edit: bon en fait, tout à été bien importé, mais il y à un soucis à priori au niveau des password SHA-1 / MD5

1- j'ai bien vérifié que dans la table user de phpBB, il y ait un varchar -40-
2- j'ai passé la variable user_pass_convert à 1 de tous les utilisateurs avec un mot de passe rentré en SHA-1 dans la BDD du forum.
3- j'ai modifié comme dans le tutoriel le fichier includes/auth/auth_db.php un peu à l'aveuglette parce que le fichier ne correspondait pas tout à fait à celui du tutoriel.


Donc pour résumer, les user sont bien importés, mais impossible de se connecter sur le forum : mot de passe faux.

// If the password convert flag is set we need to convert it
if ($row['user_pass_convert'])
{
// in phpBB2 passwords were used exactly as they were sent, with addslashes applied
$password_old_format = isset($_REQUEST['password']) ? (string) $_REQUEST['password'] : '';
$password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format;
$password_new_format = '';

set_var($password_new_format, stripslashes($password_old_format), 'string');

if ($password == $password_new_format)
{
if (!function_exists('utf8_to_cp1252'))
{
global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx);
}

// cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding
// plain md5 support left in for conversions from other systems.
if ((strlen($row['user_password']) == 34 && (phpbb_check_hash(md5($password_old_format), $row['user_password']) || phpbb_check_hash(md5(utf8_to_cp1252($password_old_format)), $row['user_password'])))
|| (strlen($row['user_password']) == 40 && (sha1($password_old_format) == $row['user_password'] || sha1(utf8_to_cp1252($password_old_format)) == $row['user_password']) ) )

{
$hash = phpbb_hash($password_new_format);

// Update the password in the users table to the new format and remove user_pass_convert flag
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_password = \'' . $db->sql_escape($hash) . '\',
user_pass_convert = 0
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);

$row['user_pass_convert'] = 1;
$row['user_password'] = $hash;
}
anxious
Posteur néophyte
Posteur néophyte
 
Messages: 12
Inscription: 14 Mar 2009 à 22:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar mew » 15 Fév 2010 à 18:40

Bonjour,
Avec le système de connexion phpbb tout marche bien jusqu'à ce que je mette de faux identifiants sa me met l'erreur :
Code: Tout sélectionner
[phpBB Debug] PHP Notice: in file /home/.../www/includes/eviter.php  on line 15: Cannot modify header information - headers already sent by (output started at /home/.../www/includes/sessions.php:42)


Voici sessions.php (les lignes de l'erreur) :
Code: Tout sélectionner
            case "LOGIN_ERROR_USERNAME":
            
            echo '<script language="JavaScript" type="text/javascript">alert("Mauvais pseudo ou mot de passe.");</script>';   
               break;
            
            case "LOGIN_ERROR_PASSWORD":
            
            echo '<script language="JavaScript" type="text/javascript">alert("Mauvais pseudo ou mot de passe.");</script>';
               break;


Et eviter.php (les lignes de l'erreur) :

Code: Tout sélectionner
if(!empty($_POST) OR !empty($_FILES))
{
    $_SESSION['sauvegarde'] = $_POST ;
    $_SESSION['sauvegardeFILES'] = $_FILES ;
   
    $fichierActuel = $_SERVER['PHP_SELF'] ;
    if(!empty($_SERVER['QUERY_STRING']))
    {
        $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ;
    }
   
    header('Location: ' . $fichierActuel); //ligne 15               
    exit;           
}

if(isset($_SESSION['sauvegarde']))
{
    $_POST = $_SESSION['sauvegarde'] ;
    $_FILES = $_SESSION['sauvegardeFILES'] ;
   
    unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']);
}


Merci d'avance
mew
Apprenti-posteur
Apprenti-posteur
 
Messages: 157
Inscription: 13 Déc 2008 à 10:43

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Chaos[] » 16 Fév 2010 à 00:42

spitfire pat a écrit:
anxious a écrit:spitfire pat,
Chaos[] a écrit:Bonjour,

Serait-il possible d'afficher les derniers sujets de plusieurs forums différents ?
En gros, ajouter deux ID dans le script..

Merci


Bonjour Chaos
ta question n'est pas trés explicite :? la partie 'news' du tuto permet d'afficher les derniers sujets de tous les forums ou bien ceux d'un forum particulier, alors où est ton problème ?



Bonjour,

Merci pour la réponse. :wink:
Et bien, je voudrais spécifier plusieurs numéros de ID, pour pouvoir afficher avec le script seulement certains forums.
En gros, mettre plusieurs ID.

Merci,
Chaos[]
Posteur néophyte
Posteur néophyte
 
Messages: 39
Inscription: 03 Juil 2008 à 19:38

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 16 Fév 2010 à 08:48

chaos
A quel endroit décides-tu de la liste des forums à afficher ? parce qu'on peut difficilement remplacer news.php?forum_id=2 par une liste d'id :?

mew
tu ne peux pas faire
Code: Tout sélectionner
header('Location: ' . $fichierActuel);
alors que du texte a déjà été affiché. il va falloir que tu places ailleurs que dans sessions.php l'affichage des erreurs

anxious
vérifie que tes mots de passe sha1 ont bien 40 caractères de longueur
parce que si
Code: Tout sélectionner
sha1($password)
donne bien une chaîne de 40 caractères, par contre
Code: Tout sélectionner
sha1($password, true)
donne une chaîne de 20 caractères
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar anxious » 16 Fév 2010 à 15:39

Bien que je n'ai pas totallement compris d'où tu tires les variables sha1($pasasword, true) et sha1($password)

Je confirme, mes password ont 40 caractères. D'ou le problème peut t'il venir ?
anxious
Posteur néophyte
Posteur néophyte
 
Messages: 12
Inscription: 14 Mar 2009 à 22:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 16 Fév 2010 à 20:15

anxious
pour l'instant je sais pas trop où se situe le problème
charge ce script: http://spitfire-pat.net/test_password.txt
renomme le en test_password.php et met-le à la racine de ton forum
a l'éxécution renseigne le nom d'utilisateur et le mot de passe d'un utilisateur que tu as exporté
en retour il va afficher
- le mot de passe crypté tel qu'il est enregistré dans la base
- les différents cryptages possibles du mot de passe que tu as entré

on va bien voir ce que ça donne
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar anxious » 17 Fév 2010 à 17:06

voilà ce que j'obtiens :

mot de passe crypté dans la base:7c4a8d09ca3762af61e59520943dc26494f8941b mot de passe proposé:
md5: e10adc3949ba59abbe56e057f20f883e
md5(utf8_to_cp1252): e10adc3949ba59abbe56e057f20f883e
sha1: 7c4a8d09ca3762af61e59520943dc26494f8941b
sha1(utf8_to_cp1252): 7c4a8d09ca3762af61e59520943dc26494f8941b


j'ai testé avec user_pass_convert à 1 et à 0, toujours le même résultat --> impossible de se connecter :twisted:
anxious
Posteur néophyte
Posteur néophyte
 
Messages: 12
Inscription: 14 Mar 2009 à 22:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 17 Fév 2010 à 18:36

et pourtant on voit bien que le mot de passe de la base correspond bien au mot de passe que tu as rentré (une fois crypté en sha1)
donc la condition
Code: Tout sélectionner
sha1($password_old_format) == $row['user_password']
est vraie et la conversion aurait dû se faire

es-tu bien certain que user_pass_convert est à 1 ? car je ne vois pas d'autre explication pour que la conversion ne se passe pas sans message d'erreur indiquant que la conversion du mot de passe n'a pas été possible
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar anxious » 18 Fév 2010 à 15:51

effictivement, il n'y à pas d'autres explications puisque ca marche...
Allez savoir... ='(
merci pour toute l'aide apporté spitfire pat !

maintenant les mots de passe au premier login passent du SHA1 à votre cryptage MD5 + salt et le user_pass_convert passe à 0 !
anxious
Posteur néophyte
Posteur néophyte
 
Messages: 12
Inscription: 14 Mar 2009 à 22:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Chaos[] » 19 Fév 2010 à 16:38

spitfire pat a écrit:chaos
A quel endroit décides-tu de la liste des forums à afficher ? parce qu'on peut difficilement remplacer news.php?forum_id=2 par une liste d'id :?


Et bien, je n'avais pas vu cela..
J'ai essayé de mettre plusieurs ID, comme ceci :

Code: Tout sélectionner
$forum_id = request_var('forum_id', 1, 2, 3);


Mais c'est impossible, seule la première ID est prise en compte.
C'es sûrement dût à l'URL.
Je pensais que le script prenait des valeur dans la table forum ID, et les afficher directement en suite.
Donc pourquoi ne pas mettre plusieurs ID, pour classée par la suite tous les sujet des forums x, y, et z. :?

Sinon, il y a une autre solution.. est-ce possible de lister une catégorie contenant plusieurs forums ?
Chaos[]
Posteur néophyte
Posteur néophyte
 
Messages: 39
Inscription: 03 Juil 2008 à 19:38

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 20 Fév 2010 à 06:52

Chaos[] a écrit:J'ai essayé de mettre plusieurs ID, comme ceci :

Code: Tout sélectionner
$forum_id = request_var('forum_id', 1, 2, 3);
avant de faire n'importe quoi, on regarde les paramètres attendus par une fonction
la fonction request_var se présente ainsi:
Code: Tout sélectionner
function request_var($var_name, $default, $multibyte = false, $cookie = false)
avec comme parametres:
  • $var_name: le nom de la variable
  • $default: sa valeur par défaut (on y précise aussi le type attendu (numérique, texte, array)
  • $multibyte: dans le cas de caractères spéciaux (code ascii supérieur à 127)
  • $cookie: s'il s'agit d'un cookie

Je pensais que le script prenait des valeur dans la table forum ID, et les afficher directement en suite.
quelle table forum ID ???? :roll:
comment veux-tu que le script devine la liste des forums que tu veux afficher ?
Donc pourquoi ne pas mettre plusieurs ID, pour classée par la suite tous les sujet des forums x, y, et z. :?
mettre plusieurs ID où ??? je t'ai demandé comment tu déterminais la liste des ID à afficher ?

bon, on va passer les paramètres en array()
dans le script qui appelle news.php tu vas mettre ceci (en supposant que les forums à afficher ont les id 2, 4 et 6)
Code: Tout sélectionner
$list_forum_id=array(2,4,6);
   $request = '?forum_id[]=' . implode('&forum_id[]=', $list_forum_id);
   echo '<a href="'. append_sid($phpbb_root_path . 'news.php' . $request) . '">lire les news</a>';

ça va donner comme lien:
Code: Tout sélectionner
news.php?forum_id[]=2&forum_id[]=4&forum_id[]=6


et dans news.php, tu vas remplacer
Code: Tout sélectionner
$forum_id = request_var('forum_id', 0);
$where = ($forum_id) ? " WHERE forum_id=$forum_id" : '';

par
Code: Tout sélectionner
$where = '';
if (isset($_GET['forum_id']))
{
   $forum_id = $_GET['forum_id'];
   if (is_array($forum_id))
   {
      $where = ' WHERE forum_id IN(' . implode(',', $forum_id) . ') ';
   }
   elseif (intval($forum_id) != 0)
   {
      $where = "WHERE forum_id=$forum_id";
   }
}

j'ai utilisé $_GET parce que avec request_var il faut préciser si la valeur par défaut est ou non un array et on ne le sait pas à l'avance
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Nerothos » 04 Mar 2010 à 14:57

Bonjour
Je viens faire appel à vous car j'ai un petit (gros?) problème.
J'ai réussi à intégrer les sessions sur mes pages et je pouvais me connecté directement sur mon site mais depuis hier j'ai eu un problème auquel je n'ai su trouvé de réponse sur le net.
Je ne récupère plus les sessions du forum et de plus quand je tente de me connecté et j'obtiens cette erreur Fatal error: Call to a member function sql_escape() on a non-object in /home/akamatsuworl/www/forum/includes/auth/auth_db.php on line 52
En allant chercher dans le fichier auth_db à la ligne 52 (fichier de base non modifier) je trouve :
Code: Tout sélectionner
$sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts
      FROM ' . USERS_TABLE . "
   ligne 52-->   WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"; <-- ligne 52
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);


J'avoue ne pas comprendre l'erreur qui se produit, dans certains posts ça parlait du cryptage des mots de passe mais comme je n'avais pas de problème jusqu'alors. Je précise qu'en local j'arrive à récupérer les sessions sur le site et à me connecter par le biais du site.
Mon dossier forum se trouve www/forum/ et mon forum peut être accêder par domain/forum/ ou par forums.domain.com. Se pourrait-il qu'il y ait un rapport avec la configuration du serveur ou des cookies que j'ai récemment redéfini? (Surtout les cookies en faite)

En vous remerciant énormément d'avance pour les futures réponses et à ceux qui liront ceci
Nerothos
Nerothos
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 26 Aoû 2009 à 21:02

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 04 Mar 2010 à 16:51

Nerothos a écrit:[u]Fatal error: Call to a member function sql_escape() on a non-object

ça veut dire que tu appelles la fonction sql_escape d'une variable qui n'est pas un objet
ceci fait référence à
Code: Tout sélectionner
$db->sql_escape(utf8_clean_string($username))

ça veut dire qu'à cette ligne de ton script, $db n'est pas un objet alots qu'il devrait:
Code: Tout sélectionner
$result = $auth->login($username, $password, $autologin, $viewonline, $admin);


la cause probable est que, entre le moment où tu as inclus common.php (qui crée l'objet $db) et et la ligne où tu appelles la fonction $auth->login, ce qui déclenche l'erreur, tu as donné une autre valeur à $db.
ou bien cette ligne est à l'intérieur d'une fonction et dans ce cas-là, pour que $db soit reconnu, il faut mettre au début de la fonction
Code: Tout sélectionner
global $db;
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Nerothos » 04 Mar 2010 à 17:48

Je te remercie beaucoup effectivement j'avais déclarer une variable du même nom sans y faire gaffe (honte à moi)
Maintenant les sessions remarche il me reste plus qu'un problème "PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by"sur la création de cookie mais je devrais trouver ca rapidement.
Encore merci à toi problème et post réglé
Nerothos
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 26 Aoû 2009 à 21:02

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 1 invité

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