Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] a gdy mam wyłączone globalne zmienne...
Forum PHP.pl > Forum > Przedszkole
jastu
Napisałem prosty skrytp - coś jak księga gości :

  1. <html><body>
  2. <?
  3. $g=fopen("test2.dat","a+");
  4. if($text=="")
  5. {
  6. fflush($g);
  7. fclose($g);
  8. }
  9. else
  10.  {
  11. $text=$text."<hr>";
  12. fwrite($g,$text);
  13. $text="";
  14. fflush($g);
  15. fclose($g);
  16. }
  17. $f=fopen("test2.dat","r") ;
  18. while(!feof($f))
  19. {
  20. $str=fgets($f);
  21. echo $str;
  22. }
  23. fclose($f);
  24.  
  25.  
  26. ?>
  27.  
  28. <form action="test.php">
  29. <input type="text" name="text" maxlength="100"><br>
  30. <input type="submit" value="zapis">
  31. </form>
  32. </body></html>

sad.gif worriedsmiley.gif
Czy może ktoś mi go przepisać pod wyłączone globalne zmienne - chodzi o przenoszenie zmiennych miedzy formularzami (a serwer na który pisze ma register_global=off)- zrozumienie postępowania gdy zmienne są wyłaczone - wielkie dzięki exclamation.gif!!!
nospor
gdy masz wylaczone zmienne globalne, do zmiennych musisz sie odowlywac bezposrednio z tablic $_POST, $_GET, $_SESSION...
czyli np. $_POST['text']

sam se przepisz winksmiley.jpg
jastu
  1. <html><body>
  2. <?
  3.  
  4. $g=fopen("test2.dat","a+");
  5. if($_POST['text']=="")
  6. {
  7. fflush($g);
  8. fclose($g);
  9. }
  10. else
  11. {
  12.  $_POST['text']=$_POST['text']."<hr>";
  13.  fwrite($g,$_POST['text']);
  14.  $_POST['text']="";
  15.  fflush($g);
  16.  fclose($g);
  17. }
  18. $f=fopen("test2.dat","r") ;
  19. while(!feof($f))
  20. {
  21. $str=fgets($f);
  22. echo $str;
  23. }
  24. fclose($f);
  25.  
  26.  
  27. ?>
  28. <form action="test.php">
  29. <input type="text" name="text" maxlength="100"><br>
  30. <input type="submit" value="zapis">
  31. </form>
  32.  
  33. </body></html>


Przepisałem - informacja o niezdefiniowanej zmiennej - książke od php 5 będe miał w przyszłym tygodniu - błagam nie każcie mi czekać exclamation.gif
nospor
Cytat
błagam nie każcie mi czekać
Blagam, zlituj się nad nami winksmiley.jpg jak dostajesz jakis bląd, to pokaz nam go w calosci, a nie swoje interpretacje robisz smile.gif

a ze ze mnie domyslna bestia... smile.gif :
  1. <form action="test.php">
jak nie okreslisz metody wysylanie formularza, domyslnie jest wysylane url'em, czyli $_GET['text'] a nie $_POST['text']
daj tak:
  1. <form action="test.php" method="post">


  1. <?php
  2.  
  3. if (isset($_POST['text'])){
  4. $g=fopen("test2.dat","a+");
  5. if($_POST['text']=="")
  6. {
  7. fflush($g);
  8. fclose($g);
  9. }
  10. else
  11. {
  12.  fwrite($g,$_POST['text']."<hr>");
  13.  fflush($g);
  14.  fclose($g);
  15. }
  16. }
  17. ?>
jastu
Zrozumiałem - Pozdrawiam i obiecuję poprawę exclamation.gif!
DeyV
jeszce jedna zdrowa zasada.
Nie należy nadpisywać wartości zmiennych w POST i GET - w końcu w całym skrypcie chciałoby się mieć pewność, że właśnie to co w nich jest - przyszło od usera.

W sytuacji, gdy potrzebujesz coś dodać - przepisuje się wartość Z $_POST do 'normalnej', prywatnej, zmiennej.
jastu
Poprawiłem - zaraz po pobraniu $_POST[''] przypisuje do zmiennej - ale jescze jedno pytanie dot. wyżej opisanego skryptu - gdy dodam wpis i odświerze stronę powiela się ostatni wpis w pole textowe....pomimo iż po wykonaniu skryptu wartoś przekazana zmiennej jest wartością null ? Dlaczego ?

edit:ale tylko gdy coś wpiszę w input - text - w innym przypadku po f5 nie ma nowego wpisu.? - czy istnieje jakaś funkcja która nie pozwoli skryptowi wysłać POSTDATA ?
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.