Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Jak to ugryźć?
Forum PHP.pl > Forum > Przedszkole
Macck
Witam ,

Mam problemik :

Otóż mam logowanie oparte na php i plikach tekstowych (oraz sesji)
i po przekierowaniu wyświetlana jest zmienna
Jesteś zalogowany jako : Macck

($_SESSION['zalogowany'] )

Mam też system newsów oparty na MySql i trzeba podać treść newsa i autora.

Ja chciałbym żeby autor się sam podawał ze zmiennej 'zalogowany'
ale nie mam pojęcia jak to zrobić

  1. // lacze sie z baza
  2. require('db_connect.php');
  3. // jesli wybrano jakis konkretny news
  4. if(intval($_GET['newsid']))
  5. {
  6. // powrot do wszystkich newsow (nazwa news.php jest oczywiscie dla przykladu)
  7. echo '<p><a href="news.php">Najnowsze newsy</a></p>';
  8.  
  9. // pobieram newsa
  10. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM newsy WHERE id='".intval($_GET['newsid'])."'";
  11. $query=mysql_query($sql);
  12. if($result=mysql_fetch_assoc($query))
  13. {
  14. // zawartosc newsa
  15. echo '<p>'.nl2br($result['tresc']).'</p>';
  16. // autor
  17. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  18. // oddzielam od komentarzy
  19. echo '<hr>Komentarze:<br>';
  20.  
  21. // dopisuje komentarz do bazy
  22. if($_POST)
  23. {
  24. if((trim($_POST['autor'])) && (trim($_POST['tekst'])))
  25. {
  26. if(mysql_query("INSERT INTO komentarze VALUES('', '".intval($_GET['newsid'])."',
  27. NOW(), '".trim(htmlspecialchars($_POST['autor']))."', '".trim(htmlspecialchars($_POST['tekst']))."')"))
  28. echo 'Dodałem komentarz';
  29. else echo 'Nie mogłem dodać komentarza';
  30. }
  31. else echo 'Nie dopisałem komentarza - podaj swoje imię i wpisz jakiś komentarz!';
  32. echo '<br>';
  33. }
  34.  
  35. // pobieram komentarze do newsa od najstarszego do najnowszego
  36. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM komentarze WHERE id='".intval($_GET['newsid'])."'";
  37. $query=mysql_query($sql);
  38. while($result=mysql_fetch_assoc($query))
  39. {
  40. print('<p>'.nl2br($result['tresc']).' ('.$result['autor'].'/'.$result['utworzono'].')</p>');
  41. }
  42.  
  43. // formularz do dodawania komentarza
  44. ?>
  45. <hr>
  46. <form name="komentarz" method="post" action="news.php?newsid=<? echo intval($_GET['newsid']); ?>">
  47. Dodaj komentarz:<br>
  48. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  49. Autor:<br>
  50. <input type="text" name="autor"><br>
  51. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
  52. </form>
  53. <?
  54. }
  55. }
  56. // wszystkie newsy
  57. else
  58. {
  59. // pobieram newsy w kolejnosci od najnowszego do najstarszego
  60. // przy pomocy zlaczenia z drugiej tabeli wyciagam ilosc komentarzy dla każdego newsa
  61. $sql="SELECT newsy.id, DATE_FORMAT(newsy.dodano, '%e-%m-%Y %H:%i') AS utworzono,
  62. newsy.autor, newsy.tresc, COUNT(lp) AS il_kom
  63. FROM newsy
  64. LEFT JOIN komentarze ON (komentarze.id=newsy.id)
  65. GROUP BY newsy.id ORDER BY newsy.dodano DESC";
  66. $query=mysql_query($sql);
  67. while($result=mysql_fetch_assoc($query))
  68. {
  69. // zawartosc newsa
  70. echo '<p>'.nl2br($result['tresc']).'</p>';
  71. // autor
  72. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  73. // ilosc komentarzy i link do nich
  74. echo '<p><a href="news.php?newsid='.$result['id'].'">Komentarze: ('.$result['il_kom'].')</a></p>';
  75. // oddzielam od pozostalych
  76. echo '<hr>';
  77. }
  78. }?>
  79. <br>
  80. <?
  81. // lacze sie z baza danych
  82. require('db_connect.php');
  83. // spradzam czy wyslano formularz
  84. if($_POST)
  85. {
  86. // sprawdzam czy wypelniono wymagane pola
  87. if((trim($_POST['autor'])) && (trim($_POST['tekst'])))
  88. {
  89. // dodaje newsa do bazy
  90. if(mysql_query("INSERT INTO newsy VALUES('', NOW(),
  91. '".trim(htmlspecialchars($_POST['autor']))."',
  92. '".trim(htmlspecialchars($_POST['tekst']))."')"))
  93. echo 'Dodałem news o ID:'.mysql_insert_id();
  94. else echo 'Nie mogłem dodać newsa';
  95. }
  96. else echo 'Nie podałeś autora lub treści newsa';
  97. }
  98. ?>
  99. <hr>
  100. <form name="news" method="post" action="aserethaskr912masalejasl827dka2.php">
  101. Treść newsa:<br>
  102. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  103. Autor:<br>
  104.  
  105. <input type="text" name="autor"><br>
  106. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
  107.  
  108. </form>



Tak wygląda dodawanie newsów (i odczytwyanie) do bazy.
Teraz , gdzie tu upchnąć moją zmienną tak aby się sam nick podstawiał?
Andaramuxo
W czym problem? Zlikwiduj inputa z autorem i dodaj ten kod.
  1. $autor=$_SESSION['zalogowany']
Macck
  1. <?
  2.  
  3. // lacze sie z baza
  4. require('db_connect.php');
  5. // jesli wybrano jakis konkretny news
  6. if(intval($_GET['newsid']))
  7. {
  8. // powrot do wszystkich newsow (nazwa news.php jest oczywiscie dla przykladu)
  9. echo '<p><a href="news.php">Najnowsze newsy</a></p>';
  10.  
  11. // pobieram newsa
  12. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM newsy WHERE id='".intval($_GET['newsid'])."'";
  13. $query=mysql_query($sql);
  14. if($result=mysql_fetch_assoc($query))
  15. {
  16. // zawartosc newsa
  17. echo '<p>'.nl2br($result['tresc']).'</p>';
  18. // autor
  19. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  20. // oddzielam od komentarzy
  21. echo '<hr>Komentarze:<br>';
  22.  
  23. // dopisuje komentarz do bazy
  24. if($_POST)
  25. {
  26. if((trim($_POST['autor'])) && (trim($_POST['tekst'])))
  27. {
  28. if(mysql_query("INSERT INTO komentarze VALUES('', '".intval($_GET['newsid'])."',
  29. NOW(), '".trim(htmlspecialchars($_POST['autor']))."', '".trim(htmlspecialchars($_POST['tekst']))."')"))
  30. echo 'Dodałem komentarz';
  31. else echo 'Nie mogłem dodać komentarza';
  32. }
  33. else echo 'Nie dopisałem komentarza - podaj swoje imię i wpisz jakiś komentarz!';
  34. echo '<br>';
  35. }
  36.  
  37. // pobieram komentarze do newsa od najstarszego do najnowszego
  38. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM komentarze WHERE id='".intval($_GET['newsid'])."'";
  39. $query=mysql_query($sql);
  40. while($result=mysql_fetch_assoc($query))
  41. {
  42. print('<p>'.nl2br($result['tresc']).' ('.$result['autor'].'/'.$result['utworzono'].')</p>');
  43. }
  44.  
  45. // formularz do dodawania komentarza
  46. ?>
  47. <hr>
  48. <form name="komentarz" method="post" action="news.php?newsid=<? echo intval($_GET['newsid']); ?>">
  49. Dodaj komentarz:<br>
  50. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  51. Autor:<br>
  52. <input type="text" name="autor"><br>
  53. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
  54. </form>
  55.  
  56. <?
  57. }
  58. }
  59. // wszystkie newsy
  60. else
  61. {
  62. // pobieram newsy w kolejnosci od najnowszego do najstarszego
  63. // przy pomocy zlaczenia z drugiej tabeli wyciagam ilosc komentarzy dla każdego newsa
  64. $sql="SELECT newsy.id, DATE_FORMAT(newsy.dodano, '%e-%m-%Y %H:%i') AS utworzono,
  65. newsy.autor, newsy.tresc, COUNT(lp) AS il_kom
  66. FROM newsy
  67. LEFT JOIN komentarze ON (komentarze.id=newsy.id)
  68. GROUP BY newsy.id ORDER BY newsy.dodano DESC";
  69. $query=mysql_query($sql);
  70. while($result=mysql_fetch_assoc($query))
  71. {
  72. // zawartosc newsa
  73. echo '<p>'.nl2br($result['tresc']).'</p>';
  74. // autor
  75. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  76. // ilosc komentarzy i link do nich
  77. echo '<p><a href="news.php?newsid='.$result['id'].'">Komentarze: ('.$result['il_kom'].')</a></p>';
  78. // oddzielam od pozostalych
  79. echo '<hr>';
  80. }
  81. }?>
  82. <br>
  83. <?
  84. // lacze sie z baza danych
  85. require('db_connect.php');
  86. // spradzam czy wyslano formularz
  87. if($_POST)
  88. {
  89. // sprawdzam czy wypelniono wymagane pola
  90. [size="4"]if((trim($_SESSION['zalogowany']))[/size] && (trim($_POST['tekst'])))
  91. {
  92. // dodaje newsa do bazy
  93.  
  94. if(mysql_query("INSERT INTO newsy VALUES('', NOW(),
  95. '".trim(htmlspecialchars($_POST['autor']))."',
  96. '".trim(htmlspecialchars($_POST['tekst']))."')"))
  97. echo 'Dodałem news o ID:'.mysql_insert_id();
  98. else echo 'Nie mogłem dodać newsa';
  99.  
  100. }
  101. else echo 'Nie podałeś autora lub treści newsa';
  102. }
  103.  
  104. ?>
  105. <hr>
  106. <form name="news" method="post" action="aserethaskr912masalejasl827dka2.php">
  107. Treść newsa:<br>
  108. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  109. Autor:<br>
  110.  
  111.  
  112. <?php $autor=$_SESSION['zalogowany'] ?><br>
  113. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
  114.  
  115. </form>



No więc teraz jest tak (duza czcionka to zmiany) i efekt mam taki że dodaje newsa bez żadnego autora
(w bazie danych pole "autor" jest puste)
Co do tej opcji . Próbowałem , ale chyba wstawiam w złe miejsce i dla tego to nie chodzi
sadistic_son
JAk chcesz wysłać wartość $autor skoro wywaliłeś ją z inputa?! To musi być tak:
  1. <form name="news" method="post" action="aserethaskr912masalejasl827dka2.php">
  2. Treść newsa:<br>
  3. <textarea name="tekst" rows="5" cols="40"></textarea><br>
  4. Autor:<br>
  5. <?php $autor=$_SESSION['zalogowany'];
  6. echo $autor;
  7. echo '<input type="hidden" name="autor" value="'.$autor.'" />
  8. ?><br>
  9. <input type="reset" value="wyczyść"> <input type="submit" value="wyslij">
Teraz nazwa autora wyświtli się jako zwykły tekst a następnie zostanie przekazana do 'obróbki' polem ukrytym. Nie ma opcji żeby nie zadziałało.

PS. Masz sporo błędów (z którymi stronka mimo wszystko będzie działać) w samym htmlu. Z takimi 'niedociągnięciami' nie przejdzie ona walidacji W3C. Np. zamiast <br> używaj <br />, domykaj inputy: <input type="xx" name="xx" /> itp.
Andaramuxo
Input z hidden można edytować, więc to nie jest bezpieczne, nie trzeba go dać do inputa bo mam system newsów i zrobiłem tak jak ja powiedziałem. Przenieś ten kod tam, gdzie dodajesz newsa.
  1. if((trim($_POST['autor'])) && (trim($_POST['tekst']))) {
  2. // dodaje newsa do bazy
  3. if(mysql_query("INSERT INTO newsy VALUES('', NOW(),
  4. '".trim(htmlspecialchars($_POST['autor']))."',
  5. '".trim(htmlspecialchars($_POST['tekst']))."')"))
  6. echo 'Dodałem news o ID:'.mysql_insert_id();
  7. else echo 'Nie mogłem dodać newsa';
  8. }
  9. else echo 'Nie podałeś autora lub treści newsa';
  10. }
Macck
Zrobiłem tak :

  1. <?php
  2. $autor = $_SESSION['zalogowany'];
  3. echo $autor;
  4. echo '<input type="hidden" name="autor" value="'.$autor.'" />';
  5.  
  6. ?>


Działa!

Wielkie dzięki smile.gif


Up@ już działa , a że to klasowa strona to kto sie wryje jak nikt sie nie zna nawet na html (no z wyjątkiem mnie)
Poza tym jak skończę i sie cała klasa zarejestruje to wyłączam możliwość rejestracji.
thek
Wcale nie trzeba robić dodatkowego input. Zmienna sesyjna jest widoczna na każdej podstronie, więc także w skrypcie dodawania. Tam wystarczy że na sztywno wrzucisz bezpośrednio do zapytania zawartość zmiennej sesyjnej jako id lub nazwę (zależy jak przechowujesz). Wcale nie trzeba więc przerzucać ją jako osobną w input czy jakkolwiek smile.gif Andaramuxo dobrze Ci podpowiada.
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.