Problem z integracją phpBB ze stroną

Dyskusje odnośnie pomostów oraz integracji phpBB 3.0.x z systemami zarządzania treścią (CMS).
  • Autor
  • Wiadomość
Offline
Awatar użytkownika

Ivellios

  • Posty: 12
  • Rejestracja: 22 maja 2005, 11:32

Problem z integracją phpBB ze stroną

Post21 sierpnia 2009, 15:35

Próbuję zintegrować phpBB3 z moją stroną, jednak co rusz to napotykam na różne problemy z tym związane.

Pierwszy problem to niemożność wyłączenia debuggera w phpBB3. "Zakomentowanie" go w config.php czy ustawienie mu wartości "false" nic nie daje, debugger w dalszym ciągu pokazuje na stronie komunikaty.

Ale to jest mały pikuś. Gorzej, gdy na stronie mam zdefiniowaną jakąś zmienną czy wstawioną instrukcję switch.

Na stronie mam ustawione cache'owanie wyników zapytań do bazy, zapisywane są one do plików tekstowych. W wielu miejscach mam zdefiniowane zmienne, $file1, $file2 itd, tymczasem w tych miejscach debugger wywala komunikaty "undefined variable $file1" - i za Chiny Ludowe nie mogę się pozbyć tych errorów.

Pewnym rozwiązaniem być może byłoby usunięcie tego cache'owania, ale wtedy wzrasta mi obciążenie serwera. Stronę mam dość dużą i popularną, więc przy nadmiernym obciążeniu mogę wylecieć z hostingu :/ tak więc cache'owanie musi pozostać.

Przy instrukcjach switch mam podobny problem. Weźmy np switch($_GET['cośtam']) - w momencie gdy wyświetla się "default", debugger informuje o niezdefiniowanej zmiennej.

Da się jakoś obejść te problemy?
Pisałem już na forum phpbbhelp.pl, ale tam nikt nie wie, jak mi pomóc :lol:
Offline
Awatar użytkownika

Duch Forum

  • Posty: 356
  • Rejestracja: 15 maja 2005, 10:33
  • Lokalizacja: Duszniki

Re: Problem z integracją phpBB ze stroną

Post21 sierpnia 2009, 18:48

Bierzesz pod uwagę zasięg zmiennych podczas używania funkcji? Gdybyś podał kod byłoby znacznie łatwiej ;)
Offline
Awatar użytkownika

Ivellios

  • Posty: 12
  • Rejestracja: 22 maja 2005, 11:32

Re: Problem z integracją phpBB ze stroną

Post21 sierpnia 2009, 21:22

No więc zarzucam przykładowym kodem, przy którym debugger wywala errory :P
Kod: Zaznacz cały
<?
$sql_query = "SELECT hometext, bodytext, title, notes, time FROM nuke_stories WHERE topic='6' ORDER BY sid DESC LIMIT 1" or ("Nie mozna wykonac zapytania");
$querycount+=1;
$result = mysql_query($sql_query) or ("Nie mozna wykonac wyniku");
// wyswietlanie rekordow
while($row = mysql_fetch_array($result))
{
?>
<div class="art">
<div class="mainPhzajawka">
<img src="<?php echo $row['notes']; ?>" alt="">
<h3>
<div id="soneic1"></div>
<div id="soneic2"></div>
<div id="oneliner" align="center">
<div align="justify">
<font class="block-title"><b><?php echo $row['title']; ?></b></font><BR><font class="content2">Dodano: <?php echo $row['time']; ?></font><BR><BR>
<font class="content-billboard"><?php echo $row['hometext']; ?></font>
</div>
</div>                               
</h3>
</div></div>
<?
}
?>
<div class="row1newsy" align="center"><font class="content"><b>Pomóż powodzianom!</b> <a href="#" onclick="window.open('powodzianie.php?dlakogo=caritas', 'Pomoc dla powodzian', 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,fullscreen=no,channelmode=no,width=400,height=300')">numer konta Caritas</a> | <a href="#" onclick="window.open('powodzianie.php?dlakogo=klodzko', 'Pomoc dla powodzian', 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,fullscreen=no,channelmode=no,width=400,height=300')">pomoc dla powodzian z Kłodzka</a></font></div>

<?php include('banner_platny.php'); ?>
<div class="row1newsy"><BR><center><b>Byłe¶ ¶wiadkiem manifestacji zjawiska paranormalnego?<BR>Je¶li tak, napisz nam o tym!</b></center><BR><font class="content">Tworzymy największ± w Polsce bazę danych o spotkaniach ze zjawiskami paranormalnymi. W tym momencie nasze archiwum obejmuje kilka tysięcy relacji. Czekamy na relacje współczesne oraz z lat ubiegłych. Wszelkie materiały przesyłać możecie <a href="relacja.html">za pomoc± formularza do wysyłania relacji</a>.</font><BR><BR>
</div>

<?php $naStronie = 9;
if($_GET['strona']) $strona = $_GET['strona'];
else $strona = 0;
$query = mysql_query("SELECT count(*) FROM nuke_stories");
    $querycount+=1;
$row = mysql_fetch_array($query);
$size = $row['count(*)'];
?>
<?php
$naStronie = 9;
if($_GET['strona']) $strona = $_GET['strona'];
else $strona = 0;
$start = $strona*$naStronie;
$filen = 'cache/sql_cache_newsy_'.$strona.'.txt';
$expire = 86400; // 24 hours
if (file_exists($filen) &&
    filemtime($filen) > (time() - $expire)) {
    $records = unserialize(file_get_contents($filen));
} else {

    /* form SQL query */
    $query = "SELECT sid, hometext, bodytext, topic, title AS tytulnewsa, time AS czasnewsa FROM nuke_stories WHERE (topic='2') OR (topic='9') ORDER BY sid DESC LIMIT $start, $naStronie";
    $querycount+=1;
    $result = mysql_query($query)
        or die (mysql_error());
    while ($record = mysql_fetch_array($result) ) {
        $records[] = $record;
    }

    $OUTPUT = serialize($records);
    $fp = fopen($filen,"w");
    fputs($fp, $OUTPUT);
    fclose($fp);
} // end else

// Query results are in $records array
foreach ($records as $id=>$row) {
    if ($row['tytulnewsa'] == $_REQUEST['tytulnewsa']) {
?>
<?php echo $row['tytulnewsa']; ?>
<?php
    } else {
?>
<div class="row1newsy"><font class="b-t"><b><?php echo $row['tytulnewsa']; ?></b></font><BR>
<img src="ilustracje/newsy/<?php echo $row['bodytext']; ?>" align="right" alt=""><font class="b-t">(dodano: <?php echo $row['czasnewsa']; ?>)</font><BR><BR><font class="content"><?php echo $row['hometext']; ?>


<?php
$kategoryja = $row['topic'];
if ($kategoryja == 9) {
?><BR><BR><a href="<?php echo $row['sid']; ?>,news.html">Czytaj więcej</a><?php
}
?>
</font><br><BR></div>
<?php }
} ?>
<div class="row1newsy" align="center">
<?php
echo "<b>Wszystkich newsów w bazie: $size, obecna strona ".($strona+1).", ilo¶ć stron ".ceil($size/$naStronie)."</b><br>";
if($strona!=0) echo "<a href=?strona=".($strona-1)."><b>&lt;&lt;&lt;</b> poprzednia</a>";
for($i=0; $i<ceil($size/$naStronie); $i++) {
if($strona==$i) echo " [".($i+1)."]";
else echo " <a href=\"$i,archiwum.html\">[".($i+1)."]</a> ";
}
if($strona<ceil($size/$naStronie)-1) echo " <a href=\"".($strona+1).",archiwum.html\">następna <b>&gt;&gt;&gt;</b></a> ";
?>
</div>
Tu pokazuje, że "niezdefiniowana zmienna $filen".

W innym miejscu:
Kod: Zaznacz cały
<?php
switch ($_GET['akcja'])
{
case 'news':
    include("news-pokaz.php");
    break;

default:
include("newsy.php");
   break;
}
?>
Tu z kolei że niezdefiniowana zmienna "akcja".

Czy powodem tych problemów może być umieszczenie forum i strony w tym samym katalogu?
Offline
Awatar użytkownika

daroPL

zespół

  • Posty: 4562
  • Rejestracja: 24 czerwca 2005, 13:36
  • Lokalizacja: Poznań

Re: Problem z integracją phpBB ze stroną

Post22 sierpnia 2009, 14:16

Na początek
Kod: Zaznacz cały
if($_GET['strona']) $strona = $_GET['strona'];
else $strona = 0;  

zamień na
Kod: Zaznacz cały
if(isset($_GET['strona'])) 
{
$strona = $_GET['strona'];
}
else
{
$strona = 0;
}
 

a nawet lepiej na
Kod: Zaznacz cały
if(isset($_GET['strona']) && is_int($_GET['strona'])) 
{
$strona = $_GET['strona'];
}
else
{
$strona = 0;
}
  


natomiast to
Kod: Zaznacz cały
    <?php
    switch 
($_GET['akcja'])
    {
    case 'news':
        include("news-pokaz.php");
        break;

    default:
    include("newsy.php");
       break;
    }
    ?>

powinno wyglądać np. tak:
Kod: Zaznacz cały
    <?php
$akcja 
= (isset($_GET['akcja'])) ? $_GET['akcja'] : '';
    switch ($akcja)
    {
    case 'news':
        include("news-pokaz.php");
        break;

    default:
    include("newsy.php");
       break;
    }
    ?>


co do stosowania poleceń include*, require* to zalecam Ci używanie ich w poniżej przedstawiony sposób:
Kod: Zaznacz cały
include './jakisplik.php'; 

do tego używaj zawsze klamer przy instrukcjach warunkowych itd.
takie dobre nawyki ;)
Offline
Awatar użytkownika

Ivellios

  • Posty: 12
  • Rejestracja: 22 maja 2005, 11:32

Re: Problem z integracją phpBB ze stroną

Post22 sierpnia 2009, 14:57

Dzięki wielkie :)

Miałem jeszcze problem ze skryptem zapisującym referery w bazie, ale zastosowałem rozwiązanie podobne do tego z $_GET['strona']
Kod: Zaznacz cały
if(isset($_SERVER['HTTP_REFERER']))
{
$skadprzylazl = $_SERVER['HTTP_REFERER'];
}
else
{
$skadprzylazl = 0;
}

i problem rozwiązany.

Jeszcze raz dzięki :)
Offline

Orish

  • Posty: 6
  • Rejestracja: 21 lipca 2007, 11:40

Re: Problem z integracją phpBB ze stroną

Post13 lutego 2010, 06:43

Witam.

Testuję możliwości zintegrowania logowania pomiędzy serwisem i forum, ale mam zasadniczy problem z wykryciem sesji.

Wstawiłem na http://kapitula.iml.pl/test.php testowy skrypt, który można znaleźć w różnych tutorialach:

Kod: Zaznacz cały
<?php

//Tells PhpBB we're not hackers. Includes the common.php file from the forums.
define('IN_PHPBB', true);
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management. This allows us access to some of the user's information when they are logged in.
$user->session_begin();
$auth->acl($user->data);
$user->setup();

//Some common thing's you'll use. $username gives the username, and $userid gives the unique ID of the loggedin user.
$username = $user->data['username'];
$userid = $user->data['user_id'];

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Are You Logged In?</title>
</head>
<body>

<?
if($user->data['is_registered']){
    //So if the user is logged in, using the if statement above:
    echo "Hello ".$username.", whatsup?";
} else {
    //If the user isn't logged in, show them the form so they CAN log in:
    echo 'Login Below:
    <form method="POST" action="../forum/ucp.php?mode=login">
    <p>Username: <input type="text" name="username" size="40"></p>
    <p>Password: <input type="password" name="password" size="40"></p>
    <p>Remember Me?: <input type="checkbox" name="autologin"></p>
    <p><input type="submit" value="Submit" name="login"></p>
    </form>';
}
?>

</body>
</html>


Jednak niezależnie od tego, czy jestem zalogowany, czy nie, pokazuje formularz logowania. Kiedy analogiczny kod wstawiłem na http://forum.iml.pl/test.php, działał ładnie.

Z tego, co wyczytałem, problem jest z ciasteczkami, jednak nie do końca rozumiem, jak go rozwiązać.

Ustawienia ciasteczek forum:
Domena ciasteczka: localhost
Nazwa ciasteczka: phpbb3_jgt83
Ścieżka ciasteczka: /
Bezpieczne ciasteczka: wyłączone

Podaję jeszcze plik php.ini: http://crpg.iml.pl/phpinfo.php
Offline

jaroslw

były członek zespołu

  • Posty: 4524
  • Rejestracja: 10 grudnia 2005, 18:48

Re: Problem z integracją phpBB ze stroną

Post13 lutego 2010, 11:42

Więcej o ciasteczkach przeczytasz w artykule „Konfigurowanie ustawień domeny/ścieżki skryptu/cookies (ciasteczek)”. Natomiast na temat integracji sesji polecam poniższe artykuły:

Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter
Offline

Orish

  • Posty: 6
  • Rejestracja: 21 lipca 2007, 11:40

Re: Problem z integracją phpBB ze stroną

Post13 lutego 2010, 12:44

Problem w tym, że ja czytałem owe artykuły, próbowałem zmieniać domenę cookies itp. i dalej nie mam pomysłu, o co może chodzić.
Offline

jaroslw

były członek zespołu

  • Posty: 4524
  • Rejestracja: 10 grudnia 2005, 18:48

Re: Problem z integracją phpBB ze stroną

Post13 lutego 2010, 12:51

W kodzie Twojego formularza jest coś takiego:

Kod: Zaznacz cały
<form method="POST" action="PATH_TO_YOUR_FORUMS/ucp.php?mode=login">

Ustaw ścieżkę do forum.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter
Offline

Orish

  • Posty: 6
  • Rejestracja: 21 lipca 2007, 11:40

Re: Problem z integracją phpBB ze stroną

Post13 lutego 2010, 13:09

Dzięki, niemniej z całą pewnością nie tego dotyczy problem.
Offline

jaroslw

były członek zespołu

  • Posty: 4524
  • Rejestracja: 10 grudnia 2005, 18:48

Re: Problem z integracją phpBB ze stroną

Post14 lutego 2010, 15:01

Zacznijmy od początku. Korzystasz w dwóch miejscach z tego samego kodu i w jednym z nich on nie działa? Pod adresem http://forum.iml.pl/test.php może działać dla tego, że jest w tej samej domenie (subdomenie) co forum, a ciasteczka są właśnie do niej przypisywane. Zmieniając je tak, by pasowały do adresu http://kapitula.iml.pl pozbawisz się możliwości poprawnego logowania na forum.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter
Offline

Orish

  • Posty: 6
  • Rejestracja: 21 lipca 2007, 11:40

Re: Problem z integracją phpBB ze stroną

Post14 lutego 2010, 17:59

No właśnie, każde inne ustawienie domeny ciasteczka niż localhost, z tych sugerowanych, skutkuje (po usunięciu starych ciasteczek i ponownym logowaniu) niemal natychmiastowym wylogowaniem, więc także w tym przypadku skrypt umieszczony czy to na innej subdomenie, czy to na domenie głównej, nie jest w stanie wykryć zalogowania. Nie wiem więc, jaka powinna być poprawna konfiguracja.

EDIT:
Problem rozwiązany, zadziałało ustawienie: .iml.pl
Offline

pawelh5

  • Posty: 3
  • Rejestracja: 30 lipca 2013, 11:33

Re: Problem z integracją phpBB ze stroną

Post30 lipca 2013, 11:35

Może trochę odświeżę temat, ale mam ten sam problem i nie bardzo wiem jak to zrobić, mógłby ktoś wyjaśnić dokładniej?
Offline

lipińska

  • Posty: 3
  • Rejestracja: 30 lipca 2013, 14:50

Re: Problem z integracją phpBB ze stroną

Post30 lipca 2013, 14:52

również proszę o odpowiedź, gdyż mam ten sam problem. zastosowałam ustawnie .iml.pl ale nie wiem dlaczego nie zadziałało
Offline

jaroslw

były członek zespołu

  • Posty: 4524
  • Rejestracja: 10 grudnia 2005, 18:48

Re: Problem z integracją phpBB ze stroną

Post30 lipca 2013, 15:08

Sprawdź .nazwa_wlasnej_domeny.pl a nie .iml.pl.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter
Następna

Wróć do Integracja

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość