Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy zmienne mogą sobie przeszkadzać ?
Forum PHP.pl > Forum > Przedszkole
Tsiru
Cześć !
Chciałem napisać prosty skrypt, umożliwiający edycje treści z poziomu strony www.
Wymyśiłem coś takiego (to tylko includowany plik, ale w nim tkwi problem):
  1. <?php
  2. if($_REQUEST['mode'] == 'edit' && isset($_SESSION['login']))
  3. {
  4. if($_REQUEST['action'] == 'load')
  5. if(!($_REQUEST['plik'] == ''))
  6. $text = stripcslashes(str_replace(&#092;"nn\",\"n\",implode(\"n\",file(\"arty/\".$_REQUEST['plik'].\".txf\"))));
  7. else
  8. $text = stripcslashes($_REQUEST['text']);
  9. if($_REQUEST['action'] == 'save')
  10. if(!($_REQUEST['plik'] == ''))
  11. fwrite(fopen(&#092;"arty/\".$_REQUEST['plik'].\".txf\",\"w\" ),stripcslashes($text),1024*1024 );
  12. echo(&#092;"<form action=\"master.php?mode=edit\" method=\"post\"><input type=\"hidden\" name=\"mode\" value=\"edit\"><textarea style=\"background-color:transparent;background-image: url(gfx/sloneczko.jpg);background-position:top right; background-repeat:no-repeat;\" name=\"text\" rows=22 cols=118>\".stripcslashes($text).\"</textarea><br><input type=\"radio\" name=\"action\" value=\"load\"> Wczytaj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"radio\" name=\"action\" value=\"save\"> Zapisz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"radio\" name=\"action\" value=\"view\" checked> Podgląd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"submit\" value=\"GO !\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select name=\"plik\" size=1>nt<option checked value=\"\">Wybierz arta</option>n\");
  13. $plik = file(&#092;"shadow/submenu.dat\");
  14. $ile = count($plik);
  15. for($h = 0; $h < $ile; $h++)
  16. {
  17. $dane[$h] = explode(&#092;"|\",$plik[$h] );
  18. if($dane[$h][0] == $_SESSION['login'])
  19. {
  20. echo(&#092;"t<option \".$check.\"value=\"\".$dane[$h][3].\"\">\".$dane[$h][5].\" - \".$dane[$h][2].\"</option>n\");
  21. }
  22. }
  23. echo(&#092;"</select>n</form>n\");
  24. if($_REQUEST['action'] == 'save')
  25. if($_REQUEST['plik'] == '')
  26. echo(&#092;"<hr>NIE WYBRAŁEŚ ARTA !<BR>nW POWIETRZU GO NIE ZAPISZE.\");
  27. else
  28. echo(&#092;"<hr>ART ZAPISANY !n\");
  29. if($_REQUEST['action'] == 'load')
  30. if($_REQUEST['plik'] == '')
  31. echo(&#092;"<hr>NIE WYBRAŁEŚ ARTA !<BR>n\"NICZEGO\" NIE OTWORZE;-)\");
  32. if($_REQUEST['action'] == 'view')
  33. {
  34. echo(&#092;"<hr>\".stripcslashes($text).\"<hr>n\");
  35. }
  36. }
  37. ?>

Na localu działa, na serwerze nie sad.gif .
Ktoś wie czemu ?
Może to przez to, że jest $_REQUEST['text'] i $text ?
Coyote
calkiem mozliwe ... zmien to ... bo mozesz miec wlaczana na serwerze obsluge zmiennych globalnych i wtedy sie gryza winksmiley.jpg


Pozdro 600v
pillot
mimo ze czasem globalsy są wyłączone, to zawsze powinno sie nadawać zmiennym inne nazwy niż te w globalsach -> przenośność kodu. i tu właśnie to jest
Coyote
no wiec dobrze powiedzialem ziom winksmiley.jpg


PZDR 600 winksmiley.jpg
Tsiru
Dzięki tongue.gif
dr_bonzo
  1. <?php
  2. $text = stripcslashes(str_replace(&#092;"nn\",\"n\",implode(\"n\",file(\"arty/
  3. ?>

Nie trzeba uzywac innych nazw zmiennych niz te w GETcie -- wystarczy je nadpisac -- jak wyzej.
Po prostu trzeba kazda zmienna inicjowac (nadpisujac zarazem ewentualna wartosc uzyskana dzieki register_globals)
Tsiru
Też tak myślałem , ale coś nie działało, to pierwcze podejrzenia padły właśnie na to. Ale na następny raz będe już wiedział.
Dzięki !
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.