Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] odczyt i zapis pliku- początkujący
Forum PHP.pl > Forum > Przedszkole
maxis88
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
erix
Google: magic_quotes
mike
Przenosze z PHP na Przedszkole.
maxis88
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
A może konkretny kod, którego użyłeś?
maxis88
<?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
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ą ?
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.