Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z anonimowym dodawaniem komentarzy
Forum PHP.pl > Forum > PHP
Seraph
wiecej.inc
  1. <?php function wiecej($id){
  2. $news = @mysql_query(SELECT tytul, tekst, data, name FROM news, user WHERE news.id = '$id' AND autor_id = user.id );
  3. if (!$news) {
  4.  exit ('<p>Błąd podczas pobierania newsa z bazy</p>');
  5. }
  6. // zapisuje wszystkie dane newsa w tablicy
  7. $dane = mysql_fetch_array($news);
  8. $tytul = $dane['tytul'];
  9. $tekst = $dane['tekst'];
  10. $data = $dane['data'];
  11. $autor = $dane['name'];
  12.  
  13. //struktura newsa
  14. echo '<table width="100%" border="1" cellpadding="2">
  15. <tr> 
  16. <td width="80%"><b>' . $tytul . '</b></td>
  17. <td width="20%"><div align="right">dodał ' . $autor .'<br/>' . $data . ' </div></td>
  18. </tr>
  19. <tr> 
  20. <td colspan="2">' . $tekst . '</td>
  21. </tr>
  22.  </table>
  23.  <br/>';  
  24. }
  25.  
  26.  function NowyKomentarz(){ 
  27. $news_id = $_GET['news'];
  28. ?>
  29.  <form action="<?php echo $_SERVER['PHP_SELF'] . '?action=wiecej&news=' . $news_id; ?>" method="post"> 
  30.  <p>Dodawanie komentarza</p>
  31.  <label>Treść: <textarea name="tresc" cols="40" rows="10" ></textarea></label><br>
  32.  <?php
  33.  // TUTAJ WŁAŚNIE JEST PROBLEM
  34. if (STATUS == 'G') : ?>
  35.  <label>Podpis: 
  36.  <input name="podpis" type="text" value="">
  37.  </label><br>
  38.  <?php endif; ?>
  39. <input type="submit" value="AKCEPTUJ">
  40. </form>
  41. <?php 
  42. }
  43.  
  44. //dodaje komentarz do bazy danych
  45. function DodajKomentarz(){
  46.  $tresc = $_POST['tresc'];
  47.  $news_id = $_GET['news'];
  48.  // TUTAJ WŁAŚNIE JEST PROBLEM
  49.  if (STATUS != 'G'){
  50. $podpis = $_SESSION['user'];
  51.  }
  52.  else {
  53. if ($_POST['podpis'] != ''){
  54.  $podpis = '~' . $_POST['podpis'];
  55. }
  56. else {
  57.  $podpis='~Anonim';
  58.  }
  59. }
  60.  
  61. $sql=INSERT INTO news_coments SET news_id = '$news_id' , dodane = CURDATE() , tekst = '$tresc' , autor='$podpis' ;
  62. if (@mysql_query($sql)) {
  63.  echo '<p>Dodano komentarz</p>';
  64. }
  65. else {
  66.  echo '<p>Problem z dodaniem komentarza ' . mysql_error() . '</p>';
  67. }
  68. }
  69.  
  70. function WyswietlKomentarze(){
  71.  $news_id = $_GET['news'];
  72.  $comments=@mysql_query(SELECT * FROM news_coments WHERE news_id='$news_id' ORDER BY dodane);
  73.  // wypisuje wszystkie komentarze dot newsa
  74.  echo '<table width="100%" border="1" cellspacing="2">
  75. <tr> 
  76. <td height="22" colspan="2">Komentarze</td>
  77. </tr><tr><td>';
  78.  while ($res = mysql_fetch_array($comments)) {
  79. $autor = $res['autor'];
  80. $data = $res['dodane'];
  81. $tekst = $res['tekst'];
  82.  
  83. echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">
  84. <tr> 
  85. <td width="80%">Dodał ' . $autor . '
  86. </td>
  87. <td align="right" width="20%">' . $data . '</td>
  88. </tr>
  89. <tr> 
  90. <td colspan="2">' . $tekst . '</td>
  91. </tr>
  92. </table><br/></td></tr><tr><td>';
  93. }
  94. echo '</td></tr></table>';
  95. }
  96.  
  97. wiecej($news_id);
  98.  
  99. if (isset($_POST['tresc'])) {
  100.  DodajKomentarz();
  101. }
  102. WyswietlKomentarze();
  103. echo '<br/>';
  104. NowyKomentarz();
  105. ?>


Ten kod jest w pliku includowanym do index.php, w którym jest coś takiego:
  1. <?php if(czyZalogowany()): 
  2. echo '<p>zalogowany ' . $_SESSION['user'] . '
  3. <a href="' . $_SERVER['PHP_SELF'] . '?action=user&profil=1">[profil]</a></p>';
  4. define( 'STATUS', $_SESSION['status'] ); 
  5. if(STATUS == 'A'){
  6.  include 'admin.php';
  7.  include'user.inc.php';
  8.  }
  9.  if(STATUS == 'U'){
  10.  include'user.inc.php';
  11.  }
  12. ?>
  13. <a href="<?php echo $_SERVER['PHP_SELF']; ?>?logout=1">Wyloguj</a></p> 
  14. <?php else: 
  15. include 'login.inc.php';
  16. define ('STATUS' , 'G');
  17.  
  18. endif; ?>


Problem w tym, że w 'wiecej.inc ' nie wykrywa mi w ogóle stałej STATUS. Probowałem robić to samo ustawiając
  1. <?php
  2. $_SESSION['status'] = 'G'
  3. ?>
ale efekt taki sam - nie łapie tego w dołączonym pliku.
mam nadzieję, że wystarczająco jasno opisałem problem,
co mogę z tym zrobić?
Jim
problem jest w tym, że raz zdefiniowane stałe nie mogą być zmieniane.

a w tym drugim masz:
  1. <?php
  2. define( 'STATUS', $_SESSION['status'] ); 
  3. // ... 
  4. define ('STATUS' , 'G');
  5. ?>

więc tu jest błąd.

Następnym razem wklej mniej kodu winksmiley.jpg
Seraph
Ale w takim razie dlaczego nie działa mi na samych sesjach?
em_pl
spróbuj session_start() na początku pliku.
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.