|
|
|
|
|
для: Uran-D
(18.01.2009 в 22:53)
| | Если расширение файла не php, то исполняться он будет только в составе другого файла, к которому Вы его подключите. (Разумеется у того расширение как раз должно быть исполняемым). То есть с этой точки зрения ничего страшного не произойдет.
>будет проходить проверку strip_tags()
Вот это лишняя и даже вредная процедура, так как может исказить текст. Если в нем встретится к примеру <text>, то это выпадет из Вашей (не, не Вашей) статьи. Нужно использовать перед выводом обработку функцией htmlspecialchars().
А на счет
>лишняя директория в пути будет понижать рейтинг страницы.
то Вы не боитесь через некоторое время заблудиться в файлах, если они все будут писаться в корень? Я не знаю по какому алгоритму высчитывается этот рейтинг, но мне кажется нужно искать другое решение. | |
|
|
|
|
|
|
|
для: AcidTrash
(18.01.2009 в 20:59)
| | Спасибо за подсказки. Вариант с отдельной директорией возможно рабочий, но в моем случае все страницы будут учавствовать в sape-ru и лишняя директория в пути будет понижать рейтинг страницы. По поводу того, что страницы php, действительно согласен, что это не безопасно, если формат будет txt и переменная $statja будет проходить проверку strip_tags(); на сколько это поможет? есть еще какие-нибудь действенные способы запретить писать в файл html и php код, ведь все равно моя txt страница будет инклудиться в файл формата php | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2009 в 21:42)
| | Спасибо, поправил. | |
|
|
|
|
|
|
|
для: Николай2357
(18.01.2009 в 20:58)
| | В общем случае нельзя считать запись успешной, пока успешно не выполнен вызов fclose | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 20:51)
| | Функция chmod() . | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 20:51)
| | Ну во первых всё это приличнее будет выглядеть так:
<?php
include("inc.php");
$statja = isset($_POST["statja"])?$_POST["statja"]:null; # то что хочу записать в файл
$login = isset($_POST["login"])?$_POST["login"]:null; # логин юзера для того чтоб узнать его id
if($statja && $login)
{
$login = (get_magic_quotes_gpc())?mysql_escape_string(stripslashes($login)):mysql_escape_string($login);
$sql = "SELECT `id` FROM ".$dbname." WHERE avtorlogin='".$login."' LIMIT 1 ";
$result =mysql_query($sql);
if($result)
{
$idd = mysql_result($result,0,0);
$fgl = "blok".$idd.".php"; # это имя файла, который нужно создать
$h = fopen($fgl,"w"); # пытаюсь его открыть, а если не существует, то создать
fwrite($h,$statja);
if(fclose($h))
echo "Запись прошла успешно";
else
echo "Произошла ошибка при записи данных ";
}
}
?>
| Во вторых, не моё конечно дело, но разрешать записывать php файлы...
А в третьих, я же писал, что права на директории, куда пишется файл должны быть соответствующими. Сделайте отдельную директорию для файлов, поставьте ей права 777 и тогда должно всё получиться.
И, кстати, совсем нет блокировки. | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 20:24)
| | Запись проходит только в том случае если файл создаю руками и ставлю на него 777, как все это сделать из скрипта? | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 19:39)
| | Я делаю так:
<?php
include("inc.php");
$statja = $_POST["statja"]; # то что хочу записать в файл
$login = $_POST["login"]; # логин юзера для того чтоб узнать его id
$sql="SELECT * FROM ".$dbname." WHERE avtorlogin='".$login."' ";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
$idd = $row["id"]; # узнаю его id
}
$fgl = "blok".$idd.".php"; # это имя файла, который нужно создать
$h = fopen($fgl,"w"); # пытаюсь его открыть, а если не существует, то создать
if (fwrite($h,$statja)) # пытаюсь записать
echo "Запись прошла успешно";
else
echo "Произошла ошибка при записи данных ";
fclose($h);
?>
|
В итоге ответ то. что произошла ошибка, все переменные $login, $statja, $idd - существуют. я проверял, имя файла конструируется такое какое нужно - тоже проверял, а вот создать и записать не получается (( | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 19:39)
| |
далее fwrite(); | |
|
|
|
|
|
|
|
для: Uran-D
(18.01.2009 в 19:39)
| | В 5 версии самый простой способ:
<?
file_put_contents("название и адрес, куда записать относительно скрипта", $content);
|
Еще можно пользоваться серией функций fopen(), fwrite(), fclose()
Только для этого у соответствующих директорий должны быть достаточные права. | |
|
|
|
|