implementare forum phpBB con sito web...

Salve! sto provando a creare un sito che necessiterebbe dell'iterazione tra phpBB e sito stesso, ovvero voglio che tramite una registrazione sola (fatta sul forum) io abbia la possibilità di accedere al sito... in internet ho trovato questo script:

<?php

$db_hostname = "localhost"; 
$db_username = "";
$db_password = ""; 
$db_name = "i"; 

$dbcon = mysql_connect($db_hostname, $db_username, $db_password);
mysql_select_db("$db_name");



$login = " <p><span class=\"genmed\">
<form action=\"phpBB2/login.php\" method=\"post\">
<input value=\"../index.php\" name=\"redirect\" type=\"hidden\">
Username:<br /><input size=\"15\" name=\"username\" type=\"text\" class=\"post\"><br />
Password:<br /><input size=\"15\" name=\"password\" type=\"password\" class=\"post\"><br />
<br />
<input value=\"ON\" name=\"autologin\" type=\"hidden\">
<input value=\"Login\" name=\"login\" class=\"mainoption\" type=\"submit\"></form><br /><br />
<a class=\"gensmall\" href=\"phpBB2/profile.php?mode=sendpassword\">Ho dimenticato la password</a><br />
<br />
Non hai ancora un account?<br />
Ti puoi <a href=\"phpBB2/profile.php?mode=register\">registrare</a> gratuitamente</span>
</span></p>\n";



if (isset($_COOKIE[tfkbb2log_sid])) 
{
   $session_id = $_COOKIE[tfkbb2log_sid];
   $query = "SELECT session_id, session_user_id, session_logged_in FROM phpbb_sessions WHERE session_id='$session_id'";
   $result = mysql_query($query, $dbcon);
   $row = mysql_fetch_array($result);
   if ($session_id === $row[session_id]) 
   {
      if ($row[session_logged_in] == "1") 
      {
         $query2 = "SELECT username FROM phpbb_users WHERE user_id='$row[session_user_id]'";
         $result2 = mysql_query($query2, $dbcon);
         $row2 = mysql_fetch_array($result2);
   
         echo "Benvenuto $row2[username]";
      
      }
      else 
      {
         echo $login;
      }
   }
   else 
   {
      echo $login;
   }   
} 
else 
{
   echo $login;
}
?>

che io ho già modificato affinchè funzionasse... a questo punto se io faccio il login vengo sempre reindirizzato alla pagina /index.php ma continua a chiedermi di fare il login (come se il cookie non fosse impostato) però, se vado sul forum (/phpBB2/index.php) risulto loggato... qualcuno sa aiutarmi? :(

 :bye:

// modifica:

se serve questa è la pagina login.php su phpBB2: Clicca

inviato 11 anni fa
z3ro
z3ro
1
modificato 11 anni fa
X 0 X

Ho aggiunto degli echo al tuo script che ti potranno aiutare a capire dov'è il problema. Provalo e fammi sapere.

<?php

$db_hostname = "localhost";
$db_username = "";
$db_password = "";
$db_name = "i";

$dbcon = mysql_connect($db_hostname, $db_username, $db_password);
mysql_select_db("$db_name");



$login = " <p><span class=\"genmed\">
<form action=\"phpBB2/login.php\" method=\"post\">
<input value=\"../index.php\" name=\"redirect\" type=\"hidden\">
Username:<br /><input size=\"15\" name=\"username\" type=\"text\" class=\"post\"><br />
Password:<br /><input size=\"15\" name=\"password\" type=\"password\" class=\"post\"><br />
<br />
<input value=\"ON\" name=\"autologin\" type=\"hidden\">
<input value=\"Login\" name=\"login\" class=\"mainoption\" type=\"submit\"></form><br /><br />
<a class=\"gensmall\" href=\"phpBB2/profile.php?mode=sendpassword\">Ho dimenticato la password</a><br />
<br />
Non hai ancora un account?<br />
Ti puoi <a href=\"phpBB2/profile.php?mode=register\">registrare</a> gratuitamente</span>
</span></p>\n";



if (isset($_COOKIE[tfkbb2log_sid]))
{
   $session_id = $_COOKIE[tfkbb2log_sid];
   $query = "SELECT session_id, session_user_id, session_logged_in FROM phpbb_sessions WHERE session_id='$session_id'";
   $result = mysql_query($query, $dbcon);
   $row = mysql_fetch_array($result);
   if ($session_id === $row[session_id])
   {
      if ($row[session_logged_in] == "1")
      {
         $query2 = "SELECT username FROM phpbb_users WHERE user_id='$row[session_user_id]'";
         $result2 = mysql_query($query2, $dbcon);
         $row2 = mysql_fetch_array($result2);

         echo "Benvenuto $row2[username]";

      }
      else
      {
         echo 'risulti non loggato <br>';
         echo $login;
      }
   }
   else
   {
      echo 'session id non trovato <br>';
      echo $login;
   }
}
else
{
   echo 'cookie non trovato <br>';
   echo $login;
}
?>

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

a quanto pare è un problema di cookie infatti: "cookie non trovato"

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

sicuro che il nome del cookie che genera PHPbb sia proprio "tfkbb2log_sid"? Perché non provi a vedere i cookie inviati da PHPbb, magari con Firefox?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

// modifica

ho controllato il nome dei cookie con Firefox... e modificando così:

if (isset($_COOKIE['phpbb2mysql_sid']))
{
   $session_id = $_COOKIE['phpbb2mysql_sid'];

ottengo il risultato sperato! O0 O0 O0

risposto 11 anni fa
z3ro
z3ro
1
modificato 11 anni fa
X 0 X

un'altra cosa... sempre legata a questo script... perchè se accedo alla pagina index.php mi dice cookie non trovato ma se poi accedo al forum risulto loggato?

non capisco perchè.... anche perchè se io passo prima dal forum (e quindi risulto loggato) e poi vado alla index.php risulto loggato... non è che devo impostare il cookie?

// modifica

ho trovato uno script analogo che permette di vedere, se uno è registrato al forum, una pagina particolare...

<?php

error_reporting(E_ALL);

session_start();

define('IN_PHPBB', true);
define('IN_SITE', true);

$base_dir    = dirname(__FILE__);

if (substr($base_dir, -1) != '/')
{
    $base_dir = $base_dir . '/';
}

$phpbb_root_path = $base_dir . 'phpBB2/';

include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, SITE_INDEX);
init_userprefs($userdata);


if( $userdata['session_logged_in'] )
{
?>            
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Questa è una pagina protetta a cui possono accedere solo gli utenti isritti al Forum ecc ecc-

</body>
</html>
<?php
}
else
{
    die('Accesso negato');
}
?>

non è che posso implementare in qualche modo i due script?

risposto 11 anni fa
z3ro
z3ro
1
modificato 11 anni fa
X 0 X

il primo script che hai riportato si limitava a vedere se era presente una sessione attiva per l'utente all'interno di PHPbb. Infatti controllava la presenza del cookie di sessione. Probabilmente però questo cookie scade alla chiusura del browser pertanto deve essere rinnovato prima da PHPbb quando l'utente torna a visitare il forum

Probabilmente PHPbb usa un altro cookie per riconoscere un utente tra una sessione e l'altra e una volta riconosciuto invia il cookie di sessione.

Il secondo script che hai riportato invece sembra richiamare direttamente delle funzioni di PHPbb, pertanto riesce a riconoscere l'utente anche se non è stata attivata la sessione dal forum. Ti funziona? In tal caso che cosa vorresti che facesse se l'utente è loggato?

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

il primo script che hai riportato si limitava a vedere se era presente una sessione attiva per l'utente all'interno di PHPbb. Infatti controllava la presenza del cookie di sessione. Probabilmente però questo cookie scade alla chiusura del browser pertanto deve essere rinnovato prima da PHPbb quando l'utente torna a visitare il forum

Probabilmente PHPbb usa un altro cookie per riconoscere un utente tra una sessione e l'altra e una volta riconosciuto invia il cookie di sessione.

Il secondo script che hai riportato invece sembra richiamare direttamente delle funzioni di PHPbb, pertanto riesce a riconoscere l'utente anche se non è stata attivata la sessione dal forum. Ti funziona? In tal caso che cosa vorresti che facesse se l'utente è loggato?

 :bye:

dunque il secondo script viene eseguito direttamente dal phpBB... nel mio caso vorrei che se uno non è loggato comparissero, nella home page, i campi user e password, se invece l'utente ha già effettuato il login vorrei che venisse fuori "Benvenuto $nomeutente" e vorrei che questa variabile (quella dello user) venisse portata in giro per tutto il sito in modo che se inserisce commenti, articoli etc allora compaia quell'utente.

risposto 11 anni fa
z3ro
z3ro
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda