Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP] Tabelki, sesje i wszystkoe zaincudowane do jednego dokumentu.
tescior
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Powiedzcie mi czy używanie jednego pliku index.php z includowanymi (w razie potrzeb) modułami w php to złe podejście do sprawy? Czy powinienem używać wielu plików (/ramek?).

Mam stronkę, która ma spełniać bardzo proste funckje:
- Strona oparta jest o prostą tabelę (wiersz i dwie kolumny)
- Po otwarciu pokazuje newsa (includowany - lewa kolumna), formularz rejestracji (includowany - prawa kolumna) i logowania (includowany - prawa kolumna)
- Zalogowanie i zarejestrowanie użytkownika działa tak samo
- - Ukrywa formularz rejestracji i logowania oraz pokazuje formularz zgłoszenia (includowany)

Problem mam z sesją, strona wygląda tak (to w środku to moja tabelka;] ):

sesji nie ma
-------
+ | + jest
-------
nie ma

(Kodu jest sporo, więc ciężko coś wkleić, jak będziecie mieli pomysł co zamieścić to będę wklejał kawałki.)
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


sesję startuje na samej górze głównego pliku index lub header (jeżeli wyodrębniłeś część nagłówkową strony), a nie w plikach inkludowanych

co do pytania czy to dobry pomysł z tym inkludowaniem to zależy od sytuacji: jeżeli masz prostą stronkę to może być, ale przy większym projekcie takie posiekanie strony to już za bardzo zagmatwa wszystko
Go to the top of the page
+Quote Post
tescior
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Sam start sesji to (session_start()) jest w głównym pliku.
W rejestracji i logowaniu jest wypełniana zmienna $_SESSION['auth'] w zależności od której później pokazuję albo ukrywam poszczególne dołączane formularze (te includowane).

Strona jest i ma być (nie będzie się rozwijała funkcjonalnie) mega prosta.

Tak wygląda główny plik, includowane pliczki zostały podzielone na _form - te które zawierają formularze do logowania/rejestracji/zgłoszenia oraz te które zawierają kod (dlatego są 'podwójnie' np. login_form.php i login - formularz i zaraz po nim skrypt)

  1. <?php
  2.  
  3. // Start sesji
  4. // Główny plik konfiguracyjny
  5. include 'incl/incl.php';
  6.  
  7. "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN'>
  8. <STYLE TYPE='text/css'>
  9. .mini { font-SIZE: 7px; color=#990000; }
  10. </STYLE>
  11. <HTML>
  12. <HEAD>
  13. <META HTTP-EQUIV='Content-Type' CONTENT='text/html; CHARSET=iso-8859-2'>
  14. <META NAME='Description' CONTENT='Stronka do zarządzania wypadami PaintBallowymi.'>
  15. <META NAME='Keywords' CONTENT='PaintBall, Malowanie'>
  16. <META HTTP-EQUIV='Content-Language' CONTENT='pl'>
  17. <META NAME='Author' CONTENT='Robert Miernik'>
  18. <META HTTP-EQUIV='Reply-To' CONTENT='r@un.pl'>
  19. <META NAME='Robots' CONTENT='index, nofollow'>
  20. <TITLE>PaintBall</TITLE>
  21. </HEAD>
  22. <BODY TEXT='#ABCDEF' BGCOLOR='#012345' LINK='#BCDEFF' VLINK='#CDEFFF' ALINK='#DEFFFF' MARGINWIDTH='20' LEFTMARGIN='20' RIGHTMARGIN='20' MARGINHEIGHT='30' TOPMARGIN='30' BOTTOMMARGIN='30'>";
  23. /* Panel logowania */
  24. include 'incl/login_form.php';
  25. include 'incl/login.php';
  26. echo "<BR> int ".(int)$_SESSION['auth']." zwykla ".$_SESSION['auth']."<BR>";
  27. "<P ALIGN='center'><FONT SIZE='+2'>
  28. Strona powstała w celu usprawnienia organizacji naszych malowanek.<BR>
  29. Mam nadzieję, że uda się opanować trochę zamieszania i może częściej się gdzieś wybierać."
  30. ."<BR></FONT></P>
  31. <TABLE BORDER='1' CELLSPACING='1' CELLPADDING='6' WIDTH='80%' ALIGN='center'>
  32. <TR><TH WIDTH='60%' VALIGN='top' ALIGN='center'>
  33. <P>Zbliżające się malowanka</P>
  34. </TH><TH WIDTH='35%' VALIGN='top' ALIGN='center'>
  35. <P>Rejestracja i zgłoszenia</P>
  36. </TH><TD WIDTH=205 ROWSPAN='3' VALIGN='top' ALIGN='left'><P>&nbsp;</P></TD></TR>
  37. <TR><TD WIDTH='35%' VALIGN='top'>";
  38. /* Lewa kolumna */
  39. include 'incl/malowanka.php';
  40. echo "<BR> int ".(int)$_SESSION['auth']." zwykla ".$_SESSION['auth']."<BR>";
  41. "</TD><TD WIDTH='60%' VALIGN='top' ALIGN='right'>";
  42. /* Prawa kolumna */
  43. include 'incl/rejestracja_form.php';
  44. include 'incl/rejestracja.php';
  45. include 'incl/zgloszenie_form.php';
  46. include 'incl/zgloszenie.php';
  47. echo "<BR> int ".(int)$_SESSION['auth']." zwykla ".$_SESSION['auth']."<BR>";
  48. "</TD></TR><TR><TD WIDTH=409 COLSPAN='2' VALIGN='top' ALIGN='left'>";
  49. /* Stopka */
  50. "<A HREF='count/counter_admin.php'><FONT SIZE='-2'></FONT>.</A>
  51. </TD>
  52. </TR>
  53. </TABLE>
  54. </BODY>
  55. </HTML>";
  56. ?>
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


no dobra ale w czym właściwie jest problem? tak na marginesie lepiej jest oprzeć strukturę strony na <div> a nie na tabelkach
Go to the top of the page
+Quote Post
tescior
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Chodzi o to, że zaincludowany formularz odwołuje się do strony głównej (w zasadzie sam do siebie, bo jest dołączony bezpośrednio do strony) a mimo to nie w przestrzeni strony jest dostępna zmienna sesji

zmienna sesji - nie ustawiona
-------
+ | + ustawiona
-------
znów nie ustawiona

Przez to nie działa poprawnie ukrywanie/pokazywanie pozostałych podmodułów, sesja zamiast sobie żyć - w jakimś 'bliżej nie określonym' momencie umiera...

Pytanie - dlaczego...
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


czyli, że w inkludowanym pliku nie masz dostępu do zmiennych z sesji tak? a daj print_r($_SESSION); przed include() i wewnątrz pliku, który jest inkludowany
Go to the top of the page
+Quote Post
tescior
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


  1. $zgl_kontrola = mysql_fetch_assoc(mysql_query("select pb_id from paintball_zgloszenia where pb_userid=".(int)$_SESSION['auth']." and pb_data > (select pb_timestmp from paintball_news order by pb_data desc limit 1)"))


Jeśli dobrze rozumiem manual, to powinno zwrócić empty jeśli wynik zapytania będzie pusty albo !empty jeśli mysql coś wypluje...

Natomiast u mnie wywala się błędem a mysql_error() nic nie zwraca...

P.S. Poprzedni problem znalazłem - dupa ze mnie wołowa, formularze się nie wykonywały po ustaleniu sesji a kod za nie odpowiedzialny tak, dlatego sam sobie sesje psułem ustawiając ją drugi raz na podstawie zmiennych z formularza, którego już nie było, więc pustych...
Go to the top of the page
+Quote Post
tehaha
post
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


to
powinno być do funkcji mysql_query(), a nie mysql_fetch_assoc() bo tak to przerywa działanie jeżeli mysql_fetch_assoc() nic nie zwróci, a to nie musi oznaczać błędu w zapytaniu, może lepiej rozbij to na kilka linijek, bo nie wiem czemu tak na siłę upychasz wszystko:
  1. $result = mysql_query("select pb_id from paintball_zgloszenia where pb_userid=".(int)$_SESSION['auth']." and pb_data > (select pb_timestmp from paintball_news order by pb_data desc limit 1)") or die(mysql_error());
  2. if(mysql_num_rows($result) > 0)
  3. {
  4. $row = mysql_fetch_array($result);
  5. }
Go to the top of the page
+Quote Post
tescior
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Upycham bo to zapytanie służy mi tylko do jednego - sprawdzenie czy user się już zgłosił czy jeszcze nie, ma zwrócić T/N i koniec, nigdzie dane z tego zapytania nie będą używane.

Wiem już skąd ten problem:

Zmienne sesji są wypełniane dopiero w pliku login.php i mimo, że formularz login_form.php odwołuje się do dokumentu głównego (po zalogowaniu strona się odświeża więc sesja imho powinna być w całym ciele dokumentu) a mimo to, zmienne są dostępne dopiero od linijki, w której dołączam login.php, dlaczego?

  1. <?php
  2. /* Start sesji */
  3.  
  4. /* BlaBlaBla jakiś kod */
  5.  
  6. /* Główny plik konfiguracyjny */
  7. include 'incl/incl.php';
  8.  
  9. /* BlaBlaBla jakiś kod */
  10.  
  11. include 'incl/login_form.php';
  12. include 'incl/login.php';
  13.  
  14. /* BlaBlaBla jakiś kod */
  15.  
  16. /* Lewa kolumna */
  17. include 'incl/malowanka.php';
  18.  
  19. /* BlaBlaBla jakiś kod */
  20.  
  21. /* Prawa kolumna */
  22. include 'incl/rejestracja_form.php';
  23. include 'incl/rejestracja.php';
  24. include 'incl/zgloszenie_form.php';
  25. include 'incl/zgloszenie.php';
  26. ?>
Go to the top of the page
+Quote Post
tehaha
post
Post #10





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


napisałem CI już wcześniej, żebyś sprawdził czy na pewno tak jest daj print_r($_SESSION) przed include() i wewnątrz include() bo to raczej nie możliwe, żeby w includowanym pliku nie były dostępne dane sesji problem musi leżeć gdzie indziej, pewnie próbujesz je odczytać zanim są ustawione
Go to the top of the page
+Quote Post
tescior
post
Post #11





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


Dokładnie w ten sposób to sprawdzałem.

początek strony : 0
incl.php : 0

poniżej jest już ok.
Go to the top of the page
+Quote Post
tehaha
post
Post #12





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


trudno jest cokolwiek powiedzieć bez zobaczenia kodu w includowanych plikach w każdym razie, musisz sprawdzić gdzie ustawiasz zmienne a gdzie je odczytujesz, bo mam wrażenie, że najpierw chcesz się do nich dobrać a dopiero potem je ustawiasz
Go to the top of the page
+Quote Post
tescior
post
Post #13





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 22.06.2010

Ostrzeżenie: (0%)
-----


tehaha gdyby nie twoje rady w życiu bym tego nie uruchomił winksmiley.jpg (ergo byłbym w rzyci ...)

Wielkie dzięki i pomagacz dla Ciebie.

[Do zamknięcia]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:03