Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie Do Forum Na Stronie Glownej
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty forum
Bojakki
Ostatnio znalazlem skrypcik, ktory pozwala na logowanie na forum nie tylko na stronie glownje, ale tez na na kazdej innej stronie php nie nalezacej do forum. Mam wiec 2 skrypciki:

Cytat
<?php
//kilka potrzebnych rzeczy:
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//ustawmy sesje i dane użytkownika
$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
init_userprefs($userdata);
?>


i

Cytat
<?php
define('IN_PHPBB', true);

$site_root_path = '/home/wowc/domains/wowc.net/public_html/'; //<-- Modify
$phpbb_root_path2 = '../forum/'; //<-- Modify
$phpbb_root_path = $site_root_path . $phpbb_root_path2;
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.php');
include($phpbb_root_path . 'config.php');

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
?>



Oba maja podobne dzialanie, opisane na poczatku posta.
I w przypdku obu wyskakuje podobny blad, ktory mniej wiecej wyglada tak:

Cytat
Warning: Cannot modify header information - headers already sent by (output started at /home/wowc/domains/wowc.net/public_html/index2.php:5) in /home/wowc/domains/wowc.net/public_html/forum/includes/sessions.php on line 188

Warning: Cannot modify header information - headers already sent by (output started at /home/wowc/domains/wowc.net/public_html/index2.php:5) in /home/wowc/domains/wowc.net/public_html/forum/includes/sessions.php on line 189


linijki 188 i 189 w sessions.php to:
Cytat
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);

setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);


Mozna liczyc na jakies wyczerpujace wyjasnienie niepowodzenia mojego dzialania?
biggrin.gif
beton__
Odpowiedz dziecinnie prosta:
Chciałes wysłać nagłowek w tym praypadku cookie po wyslaniu nagłowka własciwego <html><head> itd jest pare możliwosci przeniesc
  1. <?php
  2. setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure); 
  3.  
  4. setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure); 
  5.  
  6. ?>
na poczatek (znaczy przed <html>) lub uzycie funkcji ob_start i ob_end_flush to powinno rozwiazac problem
Bojakki
Funkcja ob_start i ob_end_flush nie pomogla.
Przeniesc tej czesci skryptu nad html sie nie da gdyz cala ta strona (session.php) to skrypt.

Problemy sa z linjkami 305, 306, 188, 199

Na jednej z zagranicznych stron znalazlem taka propozycje:

Cytat
the only fix i have found for this problem is to...


1 - delete the sessions.php file

2 - replace the sessions.php clean original replacements. this may require you to download the files from the phpbb site if you didn't keep a local copy.


Podmienilem i tez nie pomoglo


Znalazlem tez gdzies zeby sprawidzic czy nie ma spacji po lub przed <?php, ?> i nie bylo. Teoretycznie powinno dzialac, ale tak nie jest

Ktos jescze ma jakas propozycje?

(jakby ktos chial zobaczyc pliks session to wrzuclem go pod adres: http://www.wowc.net/session.zip)
Parti
Cytat
(output started at /home/wowc/domains/wowc.net/public_html/index2.php:5)


To znaczy tyle, ze w 5 linijce index2.php wysylasz cos do przegladarki i po tej operacji nie mozna juz wyslac naglowkow. W tym miejscu jest blad!!
Bojakki
Z ta linia 5 watpilwe bo tam akurat byly slowa kluczowe, potem wywalilem caly html i zostailem tylko ten krotki kod php i tez byla linijka 5, ze niby cos nie tak. Coz nie mam juz sily z tym kodem, znalazlem w sasiednim topicu taki o podobnym dzialaniu. tez blad wyskakuje, ale przynajmniej inny. Kod wyglada tak:

  1. <?php
  2.  
  3. $forma =<<<FORMA
  4. <form method=\"post\" action=\"./forum/login.php?sid=session_id()\">
  5. <b>Zaloguj</b>
  6. <br><br>
  7.  
  8. Użytkownik: <input type=\"text\" name=\"username\" size=\"10\" /><br>
  9. Hasło: <input type=\"password\" name=\"password\" size=\"10\" maxlength=\"32\" /><br>
  10. <input type=\"hidden\" name=\"redirect\" value=\"../strona.php\">
  11. Zaloguj mnie automatycznie przy każdej wizycie <input class=\"text\" type=\"checkbox\" 
  12.  
  13. name=\"autologin\" /><br>
  14. <input type=\"submit\" name=\"login\" value=\"Zaloguj\" />
  15. </form>
  16. FORMA;print($forma);
  17.  
  18. ?>

Poza nim nic nie ma na stronie, a wyskakuje taki blad:
Cytat
Parse error: parse error, unexpected $ in /home/wowc/domains/wowc.net/public_html/test.php on line 18

18 linijka to ostatnia linijka kodu, czyli zamkniecie: ?>

Chyba nic, nie pomyliem, w 5 linijce wpisalem scieszke do login.php (katalog forum jest podkatalogiem w stosunku do test.php), nizej w 11 linijce (redirect) utawia sie strone, na ktora ma sie przeniesc uzytkownik po zalogowaniu (tak to zrozumialem).

Jak ktos chce live zobaczyc blad to prosze sie udac pod: http://www.wowc.net/test.php
Oswieci mnie ktos? czy ja mam takieog pecha czy cos tu jest zpartaczone?
cim
hmm,... tak sie składa że ten kod który wysłałeś w ostatnim poście ja napisałem... i np. u mnie on działa...

a błąd jest dlatego że kiedy ujme kod w takgi php nie uwzględnia przejścia do nowego wiersza...

Kod
<?php
session_start();

$forma =<<<FORMA
<form method="post" action="./forum/login.php?sid=session_id()">
<b>Zaloguj</b>
<br><br>

Użytkownik: <input type="text" name="username" size="10" /><br>
Hasło: <input type="password" name="password" size="10" maxlength="32" /><br>
<input type="hidden" name="redirect" value="../strona.php">
Zaloguj mnie automatycznie przy każdej wizycie <input class="text" type="checkbox"

name="autologin" /><br>
<input type="submit" name="login" value="Zaloguj" />
</form>
FORMA;
print($forma);
?>


chodzi o przejście do nowego wiersza przed wywołaniem print`a - bo jeżeli zakończenie zmiennej i print są w tej samej linii to wyplówa właśnie 'parse error'...
Bojakki
Super, juz dziala!
Mam tylko pytanie co trzeba dopisac by po zalogowaniu juz zamiast formularza bylo cos takiego:
Cytat
"Jestes zalogowany jako: "nick"
Wyloguj"


Tak samo jak na forum.

Poza tym jest taki jeden myk, ze jak wrzuce to miedzy html to wyskakuje blad:
Cytat
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/wowc/domains/wowc.net/public_html/index3.php:5) in /home/wowc/domains/wowc.net/public_html/index3.php on line 1148

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/wowc/domains/wowc.net/public_html/index3.php:5) in /home/wowc/domains/wowc.net/public_html/index3.php on line 1148

Formularz sie wyswiela i dziala, no ale blad to blad. Dodam ze jak wrzuce kod ponad znacznik <html> lub dam go na strone bez htmla to wszystko dziala. W 1148 linijce jest:
Cytat
session_start();
y3ti
Widze, ze kilka razy miales juz problem ze zrozumieniem tego bledu. Nie martw sie ja tez czesto sie na to lapalem:

Kod
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/wowc/domains/wowc.net/public_html/index3.php:5) in /home/wowc/domains/wowc.net/public_html/index3.php on line 1148


Ostrzezenie: session_start() - Nie moge wyslac ciastka z sesja - naglowek zostal juz wyslany (rozmpoczety w /home/wowc/domains/wowc.net/public_html/index3.php:5) w /home/wowc/domains/wowc.net/public_html/index3.php on line 1148

Twoj blad jest w 5 linijce, poniewaz tam zostalo juz cos wyskane (wyswietlone). W 1148 lini Twojego kodu zostal zgloszony blad. Zgloszenie bledu <> przyczyna bledu.

Mozna to rozumiec tak: jestem wlasnie w trakcie wykonywania 1148 linijki. Nazywam sie session_start(). Cholera nie moge zrobic prawidlowo tego co zawsze robie, poniewaz ktos juz 5 linijce zaczol juz pisac w buforze, a ja do wykonania mojego dzialania musze miec czysto.
Bojakki
No rozumiem komunikat tylko nie wiem co mam zrobic by session_start() nie mowil, ze ktos mu w buforze nabruzdzil mimo tego ze ta czastka php bedzie wpakowana gdzies w html (nie pasuje mi danie okienka logowania gdzies na samej gorze). Inaczej mowiac czy da sie by to polecenie bylo wykonywane wczesniej niz html, ktory jest przed nim:)
cim
Cytat(Bojakki @ 2004-08-20 14:34:55)
No rozumiem komunikat tylko nie wiem co mam zrobic by session_start() nie mowil, ze ktos mu w buforze nabruzdzil mimo tego ze ta czastka php bedzie wpakowana gdzies w html (nie pasuje mi danie okienka logowania gdzies na samej gorze). Inaczej mowiac czy da sie by to polecenie bylo wykonywane wczesniej niz html, ktory jest przed nim:)

na samym początku daj taki kodzik:

  1. <?php
  2. ?>


ta funkcja rozpocznie buforowanie i wyśle do przeglądarki treść strony dopiero wtedy gdy interpreter php dojdzie do końca pliku
Bojakki
Mam prosbe do kogos kto ma chwile czasu
Chce ulepszyc system logowania na stronach nie nalezacych do forum. Wpakowalem nieco zmodyfikowany kod, znaleziony na innym topicu z tego forum, wyglada on tak:
  1. <?php 
  2.  
  3. $forma =<<<FORMA 
  4. <form method=\"post\" action=\"./forum/login.php?sid=session_id()\"> 
  5. Login: <input type=\"text\" name=\"username\" size=\"9\" /><br> 
  6. Hasło: <input type=\"password\" name=\"password\" size=\"11\" maxlength=\"32\" /><br> 
  7. <input type=\"hidden\" name=\"redirect\" value=\"../index3.php\"> 
  8. Autologin<input class=\"text\" type=\"checkbox\" 
  9.  
  10. name=\"autologin\" /> 
  11. <input type=\"submit\" name=\"login\" value=\"Zaloguj\" /> 
  12. </form><br> 
  13. FORMA;print($forma); 
  14.  
  15. ?>

Teraz chodzi o to by, gdy osoba nie jest zarejestrowana na stronie to oprocz pol do wypelnienia danych pojawilo sie "Rejestruj", a gdy sie ktos zaloguje to zeby to zniklo a w to miejsce pojawilo sie "Jestes zarejestrownay jako [Nick] Wyloguj" Prawdopodobnie bedzie trzeba tu zasosowac warunek IF. Bardzo bym prosil o rozbudowanie tego kodu wlasnie w ten sposob, mysle ze przyda sie nie tylko mi i ucieszy sie wiele osob. Znacie sie dobrze na sprawie wiec chyba nie ebdziecie mieli problemow:D

Ps. Na stronach mam wystartowane sesje phpBB wiec tego elementu nie trzeba tu dawac.
bigZbig
  1. <?php
  2. $login = '
  3. <form method="post" action="./forum/'.append_sid("login.php").'">
  4. Login: <input type="text" name="username" size="9" /><br>
  5. Hasło: <input type="password" name="password" size="11" maxlength="32" /><br>
  6. <input type="hidden" name="redirect" value="..'.$_SERVER[PHP_SELF].'" />
  7. Autologin<input class="text" type="checkbox" name="autologin" />
  8. <input type="submit" name="login" value="Zaloguj" />
  9. </form><br>
  10. Tu się możesz <A href="./forum/profile.php?mode=register">zarejestrować</A>.';
  11.  
  12. $logout = '
  13. <form method="post" action="./forum/'.append_sid("login.php").'">
  14. Witaj: <b>'.$userdata[username].'</b><br>
  15. <input type="hidden" name="redirect" value="..'.$_SERVER[PHP_SELF].'" />
  16. <input type="submit" name="logout" value="Wyloguj" />
  17. </form><br>';
  18.  
  19. $form = ($userdata['session_logged_in']) ? $logout : $login;
  20.  
  21. print($form);
  22. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.