Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Poprawność & styl
Forum PHP.pl > Forum > Przedszkole
falfin
W php pisze od ponad 3 miesięcy-jestem więc jeszcze totalnym zółtodziobem. Często mam wrażenie że różne rzeczy robie nie tak jak powinnienem. Dlatego chciałbym was zapytać czy poniższe skrypty są poprawne (pod względem stylu pisania i zastosowanych rozwiązań). Z góry dzięki za każda podpowiedź.

Skrypt do wyświetlania news'ów na stronie głównej.
(np. czy nie powinny one być wyświetlane w tabelkach zamiast w divie?)
  1. <?php
  2. require_once('funkcje.php');
  3. $wynik= wykonaj_w_bazie("select id, naglowek, tekst , utworzony from artykuly where strona = 'NewsP' order by utworzony desc "); 
  4. if ($wynik == false)
  5. {
  6. echo " Wystąpił błąd bazy danych.";
  7. }
  8. else
  9. {
  10. $ilosc = mysql_num_rows ($wynik);
  11. for ($i=0; $i <$ilosc; $i++)
  12. {
  13. $wiersz = mysql_fetch_row($wynik);
  14. $utworzony=getdate ($wiersz[3]);
  15. echo '<div class="news">';
  16. echo '<a href=szablon.php'.'?'.name.'='.$wiersz[0].'><p class="news_tytul">'.$wiersz[1].'</p></a>';
  17. echo '<p class="data">'.$utworzony['mday'].'.'.$utworzony['mon'].'.'.$utworzony['year'].' , '
  18. .$utworzony['hours'].':'.$utworzony['minutes'].':'.$utworzony['seconds'].'</p>';
  19. echo '<p class="news_tresc">'.substr($wiersz[2], 0, 300).'...';
  20. echo '<a href=szablon.php'.'?'.name.'='.$wiersz[0].'>['.więcej.']</a></p>';
  21. echo '</div>';
  22. }
  23. }
  24. ?>


Do sprawdzania czy użytkownik jest zalogowany na każdej podstronie używam:
(np. czy jest to bezpieczny sposob? czy łatwo to obejść)
  1. <?php
  2. //SPRAWDZENIE CZY UZYTKOWNIK  JEST Zalogowany
  3. if (!isset($_SESSION['prawid_uzyt']))
  4. {
  5. @header("Location: logowanie.html");
  6. }
  7. ?>


I gwóźdź programu dry.gif , wiem że to na 99% zły sposób, ale nie bardzo wiem jak to inaczej rozwiązać
(chdzi o to ze jeżeli użytkownik posiada uprawnienia administratora to w menu ma mieć dostęp do zakładki użytkownicy)
  1. <ul id="menu">
  2. <li><a href="index.php">index</a></li>
  3. <li><a href="artykuly.php">artykuły</a> </li>
  4. <?php
  5. if ($_SESSION['uprawnienia'] !== 'administrator')
  6. {
  7. echo '<li><a href="profil.php">moje konto</a></li>';
  8. }
  9. else
  10. {
  11. echo '<li><a href="uzytkownicy.php">użytkownicy</a></li>';
  12. }
  13. ?>
  14. <li><a href="dodatki.php">dodatki</a></li>
  15. <li><a href="strona_testowa.php">podgląd</a></li>
  16. </ul>


To by było na razie na tyle. Pozdrawiam
tommy4
  1. <?php
  2. $wynik= wykonaj_w_bazie("select id, naglowek, tekst , utworzony from artykuly where strona = 'NewsP' order by utworzony desc ");
  3. ?>


Nie rozumiem czemu newsy trzymasz w artykułach. Podejrzewam, że struktura twojej bazy jest mierna.

  1. <?php
  2. $wynik= wykonaj_w_bazie("SELECT id, naglowek, tekst, utworzony FROM artykuly WHERE strona = 'NewsP' ORDER BY utworzony DESC");
  3. ?>


Tak nie lepiej?

Cytat
(np. czy nie powinny one być wyświetlane w tabelkach zamiast w divie?)

Nie powinny, tabelki stworzone są do danych tabelarycznych, czyli np. rozpiski meczów czy cokolwiek, a newsy przecież tabelką nie są.

  1. <?php
  2. if ($wynik == false)
  3. ?>


  1. <?php
  2. if(!$wynik)
  3. ?>


dalej

  1. <?php
  2. echo " Wystąpił błąd bazy danych.";
  3. ?>


  1. <?php
  2. exit(" Wystąpił błąd bazy danych.");
  3. ?>


Następnie:

  1. <?php
  2. for ($i=0; $i <$ilosc; $i++)
  3. {
  4. $wiersz = mysql_fetch_row($wynik);
  5. ?>


Zamień na:

  1. <?php
  2. while($wiersz = mysql_fetch_array($wynik))
  3. {
  4. ?>


Następnie:

  1. <?php
  2. $utworzony=getdate ($wiersz[3]);
  3. echo '<div class="news">';
  4. echo '<a href=szablon.php'.'?'.name.'='.$wiersz[0].'><p class="news_tytul">'.$wiersz[1].'</p></a>';
  5. echo '<p class="data">'.$utworzony['mday'].'.'.$utworzony['mon'].'.'.$utworzony['year'].' , '
  6. .$utworzony['hours'].':'.$utworzony['minutes'].':'.$utworzony['seconds'].'</p>';
  7. echo '<p class="news_tresc">'.substr($wiersz[2], 0, 300).'...';
  8. echo '<a href=szablon.php'.'?'.name.'='.$wiersz[0].'>['.więcej.']</a></p>';
  9. echo '</div>';
  10. ?>


Możesz skorzystać z strftime; poza tym $wiersz[3] jest reprezentowany jako $wiersz['utworzony']; przy metodzie z while, a więc:

  1. <?php
  2. echo '<div class="news">';
  3. echo '<a href="szablon.php?name='.$wiersz['id'].'"><p class="news_tytul">'.htmlspecialchars(stripslashes($wiersz['naglowek'])).'</p></a>';
  4. echo '<p class="data">'.strftime("%d.%m.%Y, %H:%M:%S", $wiersz['utworzony']).'</p>';
  5. echo '<p class="news_tresc">'.htmlspecialchars(substr(stripslashes($wiersz['tekst']), 0, 300)).'...';
  6. echo '<a href="szablon.php?name='.$wiersz['id'].'">[więcej]</a></p>';
  7. echo '</div>';
  8. ?>


Do news_tresc mozesz jeszcze dodac funkcje nl2br.
Poza tym zamiast tych p lepiej używać divów bądź nagłówków.

Dalej:
  1. <?php
  2. //SPRAWDZENIE CZY UZYTKOWNIK  JEST Zalogowany
  3. if (!isset($_SESSION['prawid_uzyt']))
  4. {
  5. @header("Location: logowanie.html");
  6. }
  7. ?>


Człowieku! A sprawdzenie poprawnego hasła i loginu?

No i na koniec menu. Ewentualnie może być.
falfin
Dzięki.
Oczywiście sprawdzam też czy uzytkownik jest zalogowany , robie to wlasnie za pomoca tego:

  1. <?php
  2. //SPRAWDZENIE CZY UZYTKOWNIK  JEST Zalogowany
  3. if (!isset($_SESSION['prawid_uzyt']))
  4. {
  5. @header("Location: logowanie.html");
  6. }
  7. ?>


jeżeli użytkownik poda przy logowaniu poprawne hasło i login otrzymuje $_SESSION['prawid_uzyt'].
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.