Jump to content
  • 0

help !


diger
 Share

Question

помогите мне , я делаю на пхп чтото вроде модуля новостей , делаю на пхп5 и решил создать по такой системе :

  1. запись в файл news.data
  2. извлечение содержимого и его вписывание в страницу

я создал функцию , но у меня ничего не выходит ! createnew.php?newttl=test&cont=test&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC (я вписал гет в функцию) вписывает в файл пропуск и всЁ !

п.с функция выглядит так :

function newwrite (){
$newsdat = fopen ("data/news.txt","a+");
$_GET["$newttl"];
$_GET["$cont"];
fwrite($newsdat,$cont);
};

Link to comment
Share on other sites

Recommended Posts

  • 0

1. Вместо файлов пользуйтесь базой данных

2. Никогда не передавайте вот так вот данные через гет. И даже при передаче данных через пост обрабатывайте их во избежание различных неприятностей.

Link to comment
Share on other sites

  • 0
а что делают эти строки кода :)

может лучше обратиться в раздел, где вам сделают это за деньги?

а может мне и нефига не делать ?! может когда я встаю орать "мам , одень меня за сто рублей" ?! или в школе вовремя контрольной встать на уроке и закричать "дайте кто нибудь списать !" !? Я К ТАКИМ ЛЮДЯМ НЕ ОТНОШУСЬ !!!!!!!

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

1. Вместо файлов пользуйтесь базой данных

2. Никогда не передавайте вот так вот данные через гет. И даже при передаче данных через пост обрабатывайте их во избежание различных неприятностей.

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

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

Edited by diger
Link to comment
Share on other sites

  • 0
базой данных я непользуюсь . мне лучше так всё в файлы вписывать с md5 , чем торчать и переучиватся для баз данных ....

Лучше так какать в штаны, чем торчать и переучиваться ходить на горшок, ага.

Link to comment
Share on other sites

  • 0

Переучиваться? о_О Это не переучиваться, это развиваться.

$_POST["contnt"];
Ничего не делает, так что ты что-то не то понял.

Покажи, где ты заполняешь переменную $cont в этой функции.

И файл забыл закрыть.

И flock сделать, можешь всё соедржимое файла потерять если будет одновременная запись идти.

Link to comment
Share on other sites

  • 0
а может мне и нефига не делать ?! может когда я встаю орать "мам , одень меня за сто рублей" ?! или в школе вовремя контрольной встать на уроке и закричать "дайте кто нибудь списать !" !? Я К ТАКИМ ЛЮДЯМ НЕ ОТНОШУСЬ !!!!!!!

С таким подходом, вряд ли кто тебе будет тут помогать.

Тут помогают только тем, кто прислушивается к советам, ведь ты именно за этим сюда пришел?

Link to comment
Share on other sites

  • 0
С таким подходом, вряд ли кто тебе будет тут помогать.

Тут помогают только тем, кто прислушивается к советам, ведь ты именно за этим сюда пришел?

я имел ввиду : лучше научится , а не платить за то , что и так делаешь

Переучиваться? о_О Это не переучиваться, это развиваться.

Ничего не делает, так что ты что-то не то понял.

Покажи, где ты заполняешь переменную $cont в этой функции.

И файл забыл закрыть.

И flock сделать, можешь всё соедржимое файла потерять если будет одновременная запись идти.

вот весь код (ПОЛНОСТЬЮ)

function wrtnew($toppic,$adasd) {
echo "<hr>$adasd<br>";
}
function newwrite (){
$contnt = $_POST["contnt"];
$ttop = $_POST["ttop"];
$openfil = fopen ("data/news.php",a);
if (!openfil) {
echo "<!--error : file don't find -->";
fclose($openfil);
}
else
{
fwrite($openfil,"<?wrtnew('");
fwrite($openfil,$ttop);
fwrite($openfil,"','");
fwrite($openfil,$contnt);
fwrite($openfil,"') ;
?>");
echo "ok";
fclose($openfil);

}
};

?>

Edited by diger
Link to comment
Share on other sites

  • 0

Поработаю интерпретатором:

$openfil = fopen ("data/news.php",a);

Ошибка: Константа a не определена

fwrite($openfil,"');
?>");

А зачем в разных строках написал? Это не ошибка, но слегка сбивает.

А нельзя было всю запись уместить в один fwrite?

И поставь всё же flock(), мало ли что.

function wrtnew($toppic,$adasd) {
echo "<hr>$adasd<br>";
}

А это зачем? Эта функция же не используется в данном куске

Edited by Int
Link to comment
Share on other sites

  • 0
Ошибка: Константа a не определена

Это даже не константа, это синтактическая ошибка.

<?php
print a; // error!
print A; //Выведет А с нотисом )
?>

Ты вообще когда пойдешь пить с нами кофе? :blink:

Link to comment
Share on other sites

  • 0
Поработаю интерпретатором:

$openfil = fopen ("data/news.php",a);

Ошибка: Константа a не определена

fwrite($openfil,"');
?>");

А зачем в разных строках написал? Это не ошибка, но слегка сбивает.

А нельзя было всю запись уместить в один fwrite?

И поставь всё же flock(), мало ли что.

function wrtnew($toppic,$adasd) {
echo "<hr>$adasd<br>";
}

А это зачем? Эта функция же не используется в данном куске

у меня чтото не жалуетс на A, какая у тебя версия пхп ?

Edited by diger
Link to comment
Share on other sites

  • 0

терь нависла другая трабла :


function new_user() {
$etap = $_GET['etap'] ;
if (!$etap) {$etap = '1';
};
if ($etap == '1') {
echo '<form name="myform" method="post" action="?etap=2">
<input type="text" value="" name="name" size=20 maxlength=20>
<input type="password" value="" name="pass" size=20 maxlength=20>
<input type="submit" name="submit" value="Отправить">
</form>';

};
if($etap=='2') {
#$message = str_replace("[b]","<b>",$message);
$nw_ps = $_POST['pass'];
$nw_ps = str_replace("<","?",$nw_ps);
$nw_ps = str_replace(">","?",$nw_ps);
$put = "data/users/{/pass.php" ;
$put = str_replace("{",$_POST['name'],$put);
if(is_dir($put = 0)) {
$nnn = 'data/users/{' ;
$nnn = str_replace("{",$_POST['name'],$nnn);
new dir($nnn);
$n = fopen ($put, "w");
fwrite($n,'<? $PASSWORD = "');
fwrite($n,$nw_ps);
fwrite($n,'";?>');
fclose($n);
} ;
};
};

по идее функция создавала нового юзера (папка с его названием , содержимое внутри) и вместо того чтоб создать папку ,он матерится , что папка не найдена , как создать новую папкУ ?

Edited by diger
Link to comment
Share on other sites

  • 0
как создать новую папкУ
рекомендую просто почитать справочник функций, чтобы понимать возможности, заодно не будете изобретать велосипед

Потом научитесь пользоваться элементарным поиском, здесь запрос

Заодно познакомьтесь с нужной вам абревиатурой RTFM

Link to comment
Share on other sites

  • 0

http://ru.php.net/manual/en/function.mkdir.php

Точно база данных не нужна? Хотя бы sqlite. А то при работе с файлами придётся очень некислые ограничения на имена пользователей накладывать.

Как поведёт себя этот кусок кода если именем пользователя указать "Вася*"? А если "../../../Вася"? Или "../../../../../../ntldr" А ещё можно указать "./Admin" и перезаписаться на место админа.

И глупо хранить пароли в открытом виде.

$nnn = 'data/users/{' ;

$nnn = str_replace("{",$_POST['name'],$nnn);

Ого
new dir($nnn);
А что, где-то есть класс dir?

Я разок взялся написать форум без использования БД. Знатный был геморроище. Хотя всё и более-менее работало, но я его всё равно удалил потом.

Edited by Int
Link to comment
Share on other sites

  • 0

базы данных я хотел с sqlite , но не вышло : библиотеки (в денвере) просто не загружаются (какие бы весрии не были) , а с ограничениями я это уже понял , сделал так , чтобы все такие символы заменялися на _ , а символ \ исправить немогу , фатал еррор выкриркивает (видимо считает , что '\' это " ' " , а не " \ ")

—————

и чего такого "Ого" ?

—————-

и кстать терь трабла с логином по причине той самой грёбаной папки-неведимки =]

Edited by diger
Link to comment
Share on other sites

  • 0

=> '\\'

Но я бы посоветовал юзеров хранить в файлах с циферными номерами, а имя записывать внутрь.

Ого - это в связи с тем, что можно было сделать в одну строку без всяких str_replace.

А если модуль не подключается, значит выкинь денвер и поставь всё руками. У меня на работе работает на винде и на фряхе и дома на двух виндах ещё.

Edited by Int
Link to comment
Share on other sites

  • 0

Когда вы работаете с файлами есть много нюансов:

-перевод строки в win i *nix разный(собсна если разработка под win для дальнейшего размешение на *nix хостинге).

-режимы открытия файла( вроде бы некоторые *nix системы туго понимают "a" i "a+").

-при большой нагрузке на файл возможно стирание содержымого (лекарство flock(), с блокировкой тоже не все так просто :) )

-скорость работы.

итд.

БД - тру.

Переучиваться никто не просит :) нужно знать и то и то :)

библиотеки (в денвере) просто не загружаются (какие бы весрии не были)

:(

вот тут смотрели?

Edited by Mot
Link to comment
Share on other sites

  • 0
Если при выводе в файл переводить строку как \n, она и будет как \n, а не \r\n. Я ни разу не встречал проблем с этим на разных операционках.

Ну для начала есть 2 режима работы с файлами: текстовый и бинарный.

Бинарный пишет как есть, а текстовый сам определяет какие переводы строк ставить, в зависимости от ОС.

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

ЗЫ: ето не катастрофическая проблема :) просто потом могут быть непонятки :)

Edited by Mot
Link to comment
Share on other sites

  • 0
при открытии такого файла в винде будет одна строка
А чем открываете? :())

explode("\n",file_get_contents('file')) её порежет как надо даже в винде. Хотя проще file('file')

Edited by Int
Link to comment
Share on other sites

  • 0
А чем открываете? :())
я про открытие файла, обычного файла в текстовом редакторе :(
explode("\n",file_get_contents('file')) её порежет как надо даже в винде. Хотя проще file('file')

Если на то пошло: есть переменная окружения COMSPEC, так вот, если она есть то мы в винде, нету - *nix система.

Смысл в том, кто не знает про различия \n и \r\n могут получить головную боль :)

Edited by Mot
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy