Problem z integracją phpBB ze stroną

Dyskusje odnośnie pomostów oraz integracji phpBB 3.0.x z systemami zarządzania treścią (CMS).
Awatar użytkownika
Ivellios
Posty: 12
Rejestracja: 22 maja 2005, 11:32

Problem z integracją phpBB ze stroną

Post autor: Ivellios » 21 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:

Awatar użytkownika
Duch Forum
Posty: 356
Rejestracja: 15 maja 2005, 10:33
Lokalizacja: Duszniki
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: Duch Forum » 21 sierpnia 2009, 18:48

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

Awatar użytkownika
Ivellios
Posty: 12
Rejestracja: 22 maja 2005, 11:32

Re: Problem z integracją phpBB ze stroną

Post autor: Ivellios » 21 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><<<</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>>>></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?

Awatar użytkownika
daroPL
Zasłużony
Posty: 4564
Rejestracja: 24 czerwca 2005, 13:36
Lokalizacja: Poznań
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: daroPL » 22 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 ;)

Awatar użytkownika
Ivellios
Posty: 12
Rejestracja: 22 maja 2005, 11:32

Re: Problem z integracją phpBB ze stroną

Post autor: Ivellios » 22 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 :)

Orish
Posty: 6
Rejestracja: 21 lipca 2007, 11:40
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: Orish » 13 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

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: jaroslw » 13 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

Orish
Posty: 6
Rejestracja: 21 lipca 2007, 11:40
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: Orish » 13 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ć.

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: jaroslw » 13 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

Orish
Posty: 6
Rejestracja: 21 lipca 2007, 11:40
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: Orish » 13 lutego 2010, 13:09

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

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: jaroslw » 14 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

Orish
Posty: 6
Rejestracja: 21 lipca 2007, 11:40
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: Orish » 14 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

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

Re: Problem z integracją phpBB ze stroną

Post autor: pawelh5 » 30 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?

lipińska
Posty: 3
Rejestracja: 30 lipca 2013, 14:50

Re: Problem z integracją phpBB ze stroną

Post autor: lipińska » 30 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

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Problem z integracją phpBB ze stroną

Post autor: jaroslw » 30 lipca 2013, 15:08

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

Zablokowany