Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Publikowanie artykułów zatwierdzanych przez admina
Forum PHP.pl > Forum > Przedszkole
memphis
Witam wszystkich, jestem początkującym adeptem PHP i mam parę pytań. Już opisuję w czym tkwi problem. Mam do stworzenia prosty serwis konferencyjny w którym użytkownik może publikować ogłoszenia (bez zatwierdzenia ich przez admina), artykuły ( użyłem tego samego skryptu jak do tworzenia ogłoszeń, tylko że doszedł jeszcze tamat artykułu). Dodatkowo może publikować (uploadować) pliki *.html, *.doc oraz *.txt. Do strony głównej dostęp jest przyznany tylko po zalogowaniu, jest skrypt sprawdzający sesję użytkownika ( czy to admin, redaktor czy user). Po sprawdzeniu sesji, wszystkie działania przekazywane są do odpowiedniego pliku *.inc tzn admin.inc, redaktor.inc oraz user.inc. Gdy na stronę loguje się admin, posiada uprawnienia swoje, usera oraz redaktora, czyli tak na prawdę udział biorą 3 pliki *.inc. Jeśli loguje się redatkor plik adminowski nie jest już includowany itd. Mam problem z zamieszczeniem artykułu który mógłby zostać opublikowany dopiero po zatwierdzeniu przez admina.
Po drugie problem z uploadem plików. Póki co mam zrobione wgrywanie pliku *.doc o wielkości do 1mb, nie wiem za bardzo jak zrobić filtr na 3 typy plików które wymieniłem wyżej.
  1. if ($_FILES['plik']['type'] != 'aplication/msword')
  2. {
  3. echo 'Pliki inne ni?? dokumenty MS Word nie są akceptowane.<br>';
  4. break;
  5. }


Przedstawię wam to co udało mi się zrobić, może ktoś będzie umiał mi pomóc. Z góry dziękuję.
Struktura bazy artykuły:

  1. CREATE TABLE IF NOT EXISTS artykuły
  2. id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. id_autora INTEGER,
  4. DATA DATETIME,
  5. tytuł TEXT,
  6. tresc TEXT;


a to plik user.inc

  1. if (isset($_POST['nowy_artykuł']))
  2. {
  3. $_POST['artykuły'] = htmlspecialchars($_POST['artykuły'], ENT_QUOTES);
  4.  
  5. $query = "INSERT INTO artykuły ".
  6. "(id_autora, data, tytuł, tresc) ".
  7. "VALUES ('{$_SESSION['id']}', NOW(), '{$_POST['artykuły']}', '{$_POST['tytul']}');";
  8.  
  9. mysql_query($query);
  10. }
  11. else if (isset($_POST['usun_artykuł']))
  12. {
  13. mysql_query("DELETE FROM artykuły WHERE id={$_POST['id']}");
  14. return;
  15. }
  16.  
  17.  
  18. if ($_GET['p'] == "ausunart")
  19. mysql_query("UPDATE uzytkownicy SET email='', haslo='' WHERE id={$_GET['id']}");
  20.  
  21. else if ($_GET['p'] == "ausunart")
  22. {
  23. echo '<div class="lightbluebox"><p>Usunąć Artykuł ?
  24. <form method="post" action="'.$_SERVER['PHP_SELF'].'">
  25. <input name="usun_artykuł" type="submit" value="Tak">
  26. <input type="hidden" name="id" value="'.$_GET['id'].'">
  27. </form></p></div>';
  28. }
  29. else if ($_GET['p'] == "akonta" || $_GET['p'] == "ausuna")
  30. {
  31. $uzytkownicy = mysql_query("SELECT * FROM uzytkownicy WHERE haslo!='';");
  32. echo '<table>';
  33. while ($row = mysql_fetch_array($uzytkownicy, MYSQL_ASSOC))
  34. {
  35. echo '<tr>'.
  36. '<td><a href=edycja_u.php?id='.$row['id'].'>edytuj</a></td>'.
  37. '<td>'.$row['imie']. '</td>'.
  38. '<td>'.$row['nazwisko'].'</td>'.
  39. '<td>'.$row['adres']. '</td>'.
  40. '<td>'.$row['uczelnia'].'</td>'.
  41. '<td>'.$row['wydzial']. '</td>'.
  42. '<td>'.$row['email']. '</td>'.
  43. '<td>'.$poz[$row['poziom']].'</td>'.
  44. '<td><a href=index.php?p=ausunart&id='.$row['id'].'>usuń</a></td>'.
  45. '</tr>';
  46. }
  47. echo'</table>';
  48. }
  49. else if ($_GET['p'] == "aartykul")
  50. {
  51. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
  52. Tytuł: <br><textarea rows="1" cols="80" name="tytuł"></textarea><br>
  53. Treść:<br><textarea rows="10" cols="80" name="artykuł"></textarea><br>
  54. <input type="submit" name="dodaj_ogloszenie" value="Dodaj">
  55. </form>';
  56.  
  57. }
  58.  
  59. echo'##############################################';
  60. /* DODAWANIE OGŁOSZENIA ############################## */
  61. if (isset($_POST['dodaj_ogloszenie']))
  62. {
  63. $_POST['ogloszenie'] = htmlspecialchars($_POST['ogloszenie'], ENT_QUOTES);
  64.  
  65. $query = "INSERT INTO ogloszenia ".
  66. "(id_autora, data, tresc) ".
  67. "VALUES ('{$_SESSION['id']}', NOW(), '{$_POST['ogloszenie']}');";
  68.  
  69. mysql_query($query);
  70. }
  71. else if (isset($_POST['usun_ogloszenie']))
  72. {
  73. mysql_query("DELETE FROM ogloszenia WHERE id={$_POST['id']}");
  74. return;
  75. }
  76.  
  77.  
  78. if ($_GET['p'] == "ausun")
  79. mysql_query("UPDATE uzytkownicy SET email='', haslo='' WHERE id={$_GET['id']}");
  80.  
  81. else if ($_GET['p'] == "ausunogl")
  82. {
  83. echo '<div class="lightbluebox"><p>Usunąć ogłoszenie?
  84. <form method="post" action="'.$_SERVER['PHP_SELF'].'">
  85. <input name="usun_ogloszenie" type="submit" value="Tak">
  86. <input type="hidden" name="id" value="'.$_GET['id'].'">
  87. </form></p></div>';
  88. }
  89. else if ($_GET['p'] == "akonta" || $_GET['p'] == "ausun")
  90. {
  91. $uzytkownicy = mysql_query("SELECT * FROM uzytkownicy WHERE haslo!='';");
  92. echo '<table>';
  93. while ($row = mysql_fetch_array($uzytkownicy, MYSQL_ASSOC))
  94. {
  95. echo '<tr>'.
  96. '<td><a href=edycja_u.php?id='.$row['id'].'>edytuj</a></td>'.
  97. '<td>'.$row['imie']. '</td>'.
  98. '<td>'.$row['nazwisko'].'</td>'.
  99. '<td>'.$row['adres']. '</td>'.
  100. '<td>'.$row['uczelnia'].'</td>'.
  101. '<td>'.$row['wydzial']. '</td>'.
  102. '<td>'.$row['email']. '</td>'.
  103. '<td>'.$poz[$row['poziom']].'</td>'.
  104. '<td><a href=index.php?p=ausun&id='.$row['id'].'>usuń</a></td>'.
  105. '</tr>';
  106. }
  107. echo'</table>';
  108. }
  109. else if ($_GET['p'] == "aogloszenie")
  110. {
  111. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
  112. Treść:<br><textarea rows="10" cols="80" name="ogloszenie"></textarea><br>
  113. <input type="submit" name="dodaj_ogloszenie" value="Dodaj">
  114. </form>';
  115. }
  116.  
Spawnm
Czemu aby user opublikował artykuł musi przesyłać go plikiem? Daj mu <textarea>.
Twój upload da się oszukać.
+ strona podatna na xss oraz sql injection.
+nie mieszaj logiki php z html.
memphis
Cytat(Spawnm @ 28.09.2010, 21:07:11 ) *
Czemu aby user opublikował artykuł musi przesyłać go plikiem? Daj mu <textarea>


Artykuł ma być jak najbardziej wysyłany polem tekstowym. Przesyłane mają być pliki z jakimiś duperelkami które nie nadają się do pola tekstowe, np referat w wordzie z odpowiednim formatowaniem. Co do zabezpieczeń, to nie ma być ambitny projekt, mam go na zaliczenie przedmiotu na uczelni.

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.