помогите с гостевой

syrpo
На сайте с 20.03.2009
Offline
104
640

в общем проблема такова: на одной странице есть форма которая обрабатывается, скажем gb.php.

тот в свою очередь сохраняет данные в фале gb.dat. Дак вот в чем суть - когда волжил сайт в инет сообщения не хотят читаться из gb.dat, там сохраняются какието иэроглифы. думал проблемы с кодировкой, но латиница тоже неприавильно сохраняется. вчем может быть проблема, может стоить добавить кодировку в форму и как это сделать, помогите в общем кто чем может 8)

И сразу еще один вопросик как сделать чтобы пользователю нельзя было получить доступ непосредственно к файлу gb.dat , набрав скажем с строке www.site.ru/..../dat.gb.

Спасибо

KeTal
На сайте с 25.08.2005
Offline
54
#1
syrpo:
тот в свою очередь сохраняет данные в фале gb.dat.

кусочек кода бы посмотреть, который сохраняет и результат, который в гб.дат

syrpo:
И сразу еще один вопросик как сделать чтобы пользователю нельзя было получить доступ непосредственно к файлу gb.dat , набрав скажем с строке www.site.ru/..../dat.gb.

файл можно защитить с помощью .htaccess, можно, чтобы в конфиге случайное имя выставлялось - никто не узнает, какое.

syrpo
На сайте с 20.03.2009
Offline
104
#2

-guestbook.php-

<?

$randcapture=rand(1,3);

$file=fopen("gb.dat","r");

if($file){

fpassthru($file);

}

else

{echo "Ошибка чтения";}

?>

потом идет форма с обработчиком gb.php

-gb.php-

$nick=substr($nick,0,9);

$nick=strip_tags($nick);

$message=substr($message,0,200);

$message=strip_tags($message);

@include("date.php");

$file=fopen("gb.dat","a+");

if($file){

fwrite($file,"<font size=1pt class=simple>".$date_day." ".$month_rus[$date_month]." ".$date_hour.":".$date_minute."</font> ");

fwrite($file,"<font><b>".$nick."</b></font>"."<br>");

fwrite($file,"<font>".$message."</font>"."\r\n");

fwrite($file,"<hr>");

fwrite($file,"<br>"."<br>");

fclose($file);

}

else

{

echo "Ошибка записи";

}

}

header("Location:guestbook.php");

?>

ну примерно так карочи

M
На сайте с 23.01.2009
Offline
12
#3

Вопрос к автору, вот это зачем здесь: fpassthru($file); - какую роль она выполняет

Ну да ладно,

Замечание: Во время использования fpassthru() на бинарном файле в сисиемах Windows, вы должны убедиться в том, что открыли файл в бинарном режиме при помощи добавления b к режиму открытия файла, использованному в fopen().

Может проблема в этом.

написание скриптов... icq 377816882
Ink-developer
На сайте с 31.01.2009
Offline
138
#4
syrpo:
И сразу еще один вопросик как сделать чтобы пользователю нельзя было получить доступ непосредственно к файлу gb.dat

Создай файл с именем .htaccess в папке где лежит .dat файл (только если сервер Apache)

Содержимое файла .htaccess

<Files *.dat>

order allow,deny

deny from all

</Files>

syrpo
На сайте с 20.03.2009
Offline
104
#5

ну насколько я понимаю проблема с кодировкой появляется уже при записи из формы в файл. подскажите , как указать кодировку в форме

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий