maxis88
23.12.2008, 11:49:49
Mamm problem ze skryptem do edytowania pliku... Wszystko działa pięknie do momentu wyświetlenia treści na ekranie ... Wtedy dzieją się dwie rzeczy, które psują cały kod ... a mianowicie :
1. ( malo szkodliwe ) - za kazdym zapisaniem pliku na początku tworzy sie kolejny akapit
2. (bardziej szkodliwy)- wszystkie znaki "\" są powielane więc po czterech zapisach zamiast mieć :
\" Tekst \" to mam \\\\" Tekst \\\\"
i nie wiem co z tym fantem zrobić ( chociaż domyślam sie że to wina funkcji file() ... )
poniżej zamieszczam linka do plików
http://www.upik.pl/index.php?id=740605dc87...596a370802c7311 z gory dzięki ;P
mike
23.12.2008, 12:14:57
Przenosze z PHP na Przedszkole.
maxis88
23.12.2008, 12:44:43
szukałem o tych magic_quotes, znalazłem kilka linijek kodu które niby to usuwają ale nic nie działa ;/ może mi ktoś napisać konkretny przykład pasujący do mojego "projektu"?
erix
23.12.2008, 12:55:57
A może konkretny kod, którego użyłeś?
maxis88
23.12.2008, 13:01:31
<?php
$zmienna = escape_data($zmienna ); // Ta zmienna, z której chcemy się pozbyć slash'y przed cudzysłowami etc
?>
oraz
<?php
if(get_magic_quotes_gpc()){
function stripslashes_deep($value){
$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value;
}
$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);}
?>
w pierwszym pisze mi ze nie wie co to za funkcja a w drugim nie widac reakcji ... chyba ze cos zle robie ...
maxis88
23.12.2008, 15:42:04
dodałem kod:
"rewind($fp);
set_magic_quotes_runtime(false); "
zmieniając oczywiście nazwę zmiennej ale nadal powiela mi znaki "\"... zauważyłem też że tylko do 2 razy bo potem w ogole nie moge wyswietlic strony ;P
oto kod:
function save_file(){
global $filename, $filebody, $dir, $PHP_SELF;
rewind($filebody);
set_magic_quotes_runtime(false);
if(file_exists("$filename")) {
echo "<script>result = confirm(\"Nadpisać '$filename'?\");
if(!result) history.go(-1)</script>";
}
if($file=fopen("$filename", "w+")){
fputs($file, $filebody);
fclose($file);
}else
error_message("Nie mogę zapisać $filepath", 1);
echo "<script>self.location.href='$PHP_SELF?filename=$filename';</script>";
}
co nadal robię źle ? próbowalem dodać tą drugą linijkę kodu na początek pliku php ale też nic nie daje ...
ok już znalazłem rozwiązanie ...
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
function save_file(){
global $filename, $filebody, $dir, $PHP_SELF;
if(file_exists("$filename")) {
echo "<script>result = confirm(\"Nadpisać '$filename'?\");
if(!result) history.go(-1)</script>";
}
if($file=fopen("$filename", "w")){
$filebody = stripslashes_deep($filebody);
fputs($file, $filebody);
fclose($file);
}else
error_message("Nie mogę zapisać $filepath", 1);
echo "<script>self.location.href='$PHP_SELF?filename=$filename';</script>";
}
tylko pozostaje problem akapitów na początku... wie ktos dlaczego one powstają ?