Помогите с пхп, пожалуйста...
1) Цитата из инструкции: ***Там где вы хотите что бы были комментарии делаете ссылку. Например вы делаете ссылку на комментарии с какой нибудь статьи. Адрес по которому находится статья, например:"artciles.php?id=1".Тогда ссылка на статьи должна быть примерно такого вида: "comments.php?id=1".***
- Не совсем понятно, что нужно и как назвать... мне что, придется переделывать все файлы на пхп, чтобы только поставить туда ссылку? Незнаю почему, но мне кажется так не должно быть...
2) ***Под системой *nix и linux нужно выставить прова:
comments.php | 755
db.txt | 700***
Я знаю, где выставляется права, но у меня только IE, а в нем вся эта бодяга прописана как "группа - запиь, чтение, выполнение; владелец - ...;" ну и т.д. Может. подскажите, что нужно проставить, чтобы получились эти 700 и 755?
Вот пока все...с остальным я думаю разберусь...
чтение - 4
запись - 2
выполнение - 1
Вот из суммы этих цифр и получается конечное значение, например, чтобы дать группе право на запись и чтение, нужно поставить цифру 6 (4+2) или в твоем случае поставить галочку "чтение" и "запись" и так для всех остальных. А для установки всех этих значений есть команда chmod.
А для установки всех этих значений есть команда chmod.
А где эта комманда вводится? что-то в Эксплорере я не видела никакого поля для ввода комманд...
А если мне конкретно нужно 755 и 700 установить. то как определить, куда эти долбаные галочки ставить? Насколько я знаю из уроков арифметики первого класса школы, получить 7, или 5, или люблю другую цифру можно разными способами...
Ну для начала из 4,2,1 цифры 0,5,6,7 получаются однозначно, но это не главное :-)
Первая цифра - это права владельца файла(если 755, то галочки везде(т.к. 7))
Вторая цифра - права группы(5 - чтение и запись)
3-я цифра - права всех остальных(5 - чтение и запись)
А где эта комманда вводится? что-то в Эксплорере я не видела никакого поля для ввода комманд...
Ну в Эксплорере она не вводится, а только через консоль, ну или, например, в ftp-клиенте
Ну для начала из 4,2,1 цифры 0,5,6,7 получаются однозначно, но это не главное :-)
Первая цифра - это права владельца файла(если 755, то галочки везде(т.к. 7))
Вторая цифра - права группы(5 - чтение и запись)
3-я цифра - права всех остальных(5 - чтение и запись)
Ну в Эксплорере она не вводится, а только через консоль, ну или, например, в ftp-клиенте
Спасибки! Теперь разобралась! :) А ни фтп-клиента, ни консоли у меня нет... да я и не умаю. что они так необходимы...
А про скрипт, то мне кажется ему все равно как ты обзовешь ссылку comment.php?id=1 или comment.php?id=vasya, просто каждая статья должна уникально идентифицироваться, чтобы скрипт мог по переменной, передаваемой со ссылкой(id), определить из какого файла ему считывать коментарии
Ааааа! То есть этот файл дублировать не нужно для каждой страницы? И он сам по этой ссылке создаст файл? Хм, если так - то это круто! Я думала с ним больше нужно будет возиться... Я вечно ищу во все подвох, и забываю проверить самый простой вариант... P(
Скрипт скорее всего будет создавать отдельный файл на каждую статью(или что там у тебя) с именем той самой переменной, но вставлять ссылку в каждую статью тебе всё же придется ручками ;)
Warning: main(header.inc): failed to open stream: No such file or directory in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 139
Warning: main(): Failed opening 'header.inc' for inclusion (include_path='.:/usr/local/php/lib/php') in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 139
потом идет какая-то хилая форма отправки
и опять
Warning: main(bottom.inc): failed to open stream: No such file or directory in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 191
Warning: main(): Failed opening 'bottom.inc' for inclusion (include_path='.:/usr/local/php/lib/php') in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 191
Ээээ, а где твое мыло? Я в таких форумах плохо разбираюсь... Слишком долго на фастбб общаюсь...:roll:
[email]krotikz@tut.by[/email]
Warning: fopen(Comments.txt): failed to open stream: Permission denied in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 84
Warning: fclose(): supplied argument is not a valid stream resource in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 86
Warning: fopen(Comments.txt): failed to open stream: Permission denied in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 121
Warning: flock(): supplied argument is not a valid stream resource in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 122
Warning: fputs(): supplied argument is not a valid stream resource in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 123
Warning: flock(): supplied argument is not a valid stream resource in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 124
Warning: fclose(): supplied argument is not a valid stream resource in /www/h/he/hellsing-a-m.fatal.ru/site/fanfy/Comments.php on line 125
Значит, на строках 84, 86, и 121-125 тоже какие-то глюки...
Блин. ну как можно выкладывать на скачку такой недоработанный скрипт!?!? X)-
Блин. ну как можно выкладывать на скачку такой недоработанный скрипт!?!? X)-
Да ты не торопись, скрипт пишет, что нет доступа к файлу comment.txt. Если помнишь, то на него нужно дать право доступа("чтение", "запись") и все должно быть нормально
Аааа! Я думала он его сам создаст! Там вообще-то и написано, что сам должен все создавать. Ну ладно, создать - это не трудно! :) Терь работает! спасибо!;)
Он бы сам создал, если бы были права н азапись в директорию. Удачи!
Warning: fread(): Length parameter must be greater than 0. in /www/h/he/hellsing-a-m.fatal.ru/site/Comments.php on line 80
И потом с каждым обновлением добавляет точно такое же ообщение, хотя в форме все чисто...
Вот посмотри сам: http://hellsing-a-m.fatal.ru/Comments.php?id=never
Во! Я даже его в общий стиль смогла доработать! Все вроде работает, но почему-то после отправки первого же сообщения он пишет вот эту парашу:
Warning: fread(): Length parameter must be greater than 0. in /www/h/he/hellsing-a-m.fatal.ru/site/Comments.php on line 80
И потом с каждым обновлением добавляет точно такое же ообщение, хотя в форме все чисто...
Вот посмотри сам: http://hellsing-a-m.fatal.ru/Comments.php?id=never
После того, что мы там обсудили -
попробуй вставить в конец скрипта такую строчку:
header("Location: http://hellsing-a-m.fatal.ru/Comments.php?id=$id");
только посмотри, чтобы до этой строчки не было оператора echo
echo "<tr><td bgcolor='$topcolor'>[size="1"][$datea][/size] $emaila $weba</td></tr><tr><td>$commentsa</td></tr>";
}
}
header("Location: http:hellsing-a-m.fatal.ru/Comments.php?id=$id");
?>
*Это от последнего эхо до самого конца скрипта*
кхем... это должно быть лого. Только какие там могут быть проблемы? Хотя когда редактировала скрипт отправки анкеты, он постоянно ругался на двоеточия...
Error_Reporting(E_ALL & ~E_NOTICE);
это отключит отображение ошибок,
и ту строчку о переадресации перед
//include("header.inc");
Все! пора бежать, если что - пиши на мыло
Да... похоже эта самая строчка header("Location: http:hellsing-a-m.fatal.ru/Comments.php?id=$id"); не пропускается моим хостом. Но ведь бесплатный, и у них вроде какие-то ограничения были на отдельные комманды/файлы/и прочую фигню...
проверь написание строчки: там должно быть http://
а то у тебя просто http:(если верить твоему предыдущему сообщению). А по поводу хоста, то если есть php, то значит, что все команды должны выполняться. Давай сражайся, а то жалко будет, если не заработает - столько бились то :-)
проверь написание строчки: там должно быть http://
а то у тебя просто http:(если верить твоему предыдущему сообщению). А по поводу хоста, то если есть php, то значит, что все команды должны выполняться. Давай сражайся, а то жалко будет, если не заработает - столько бились то :-)
Да я здаваться и не собиралась! Особенно если еще есть надежда. что все это будет работать. А если никаких запретов там стоять не может, то работать я ее заставлю, даже если для этого мне придется выучить этот язык...или узнать его название, для начала...
Но...пока он работать не собирается...там я и правда пропустили // - этот редактр начал орать, что у меня не в той кодировке вставленный фрагмент, вот и пришлось вручную перепечатать...ес-но, с ошибками... Но я уже поправила, и...все-равно страница не существует... Может я эту штуку с ошибками не туда поставила... ее после какого <? - то, что 2 строка, или где-то в середине? Хотя я уже пробывала и так и так... Блин, да че ему не нравится!? :devil:
т.е. если ты заходила на страницу со ссылки например http://site_name/comments.php?id=never, то она после отправления сообщения должна остаться такой же(в строке браузера)
А какую страницу он пытается найти? напиши мне ссылку полностью. Она должна быть такая же как и та, с которой ты заходишь на страницу с формой,
т.е. если ты заходила на страницу со ссылки например http://site_name/comments.php?id=never, то она после отправления сообщения должна остаться такой же(в строке браузера)
Да он просто пишет, что документ не найден. Ошибка 404. Ну сам посмотри - я пока его не меняла.
Да он просто пишет, что документ не найден. Ошибка 404. Ну сам посмотри - я пока его не меняла.
Ну тогда я не знаю, вроде все должно быть верно. Так что не заморачивайся на этом, ведь скрипт же работал без этого редиректа, да и не думаю, что народ будет обновлять страницу сразу же после того как добавил сообщение. Извини :(
Но сперва две веши:
1. Можешь весь скрипт запостить на форум?
2. А ты не думала вместо файлов использовать базу данных? Это намного проще и элегантней.
Я может поздновато присоединился, но вот решил попробовать помочь.
Но сперва две веши:
1. Можешь весь скрипт запостить на форум?
2. А ты не думала вместо файлов использовать базу данных? Это намного проще и элегантней.
Да нет, для меня поздно не бывает! Не зря же я на эту тему подписалась! :))
Вложить могу запросто, и вот базу данных не получится - они не разрешаются на моем хосте, вроде бы...
Скрипт следующей месагой.
//////////////////////////// НАСТОЙКИ /////////////////////////////
// файл который будем использовать под базу данных
$comfile = "Comments.txt";
// Настройка даты. Далее идут буквы которые можно использовать как числа или слова:
// Здесь можете почитать как сменить дату: http://www.php.net/manual/en/function.date.php
$date = date("j.m.Y");
// Сколько может быть максимально слов в сообщении?
$maxwords = 30000;
// Здесь вы можете сменить цвет по своему усмотрению
$topcolor = "#0f0000";
// Значение максимального слова
$maxword = 20;
//////////////////////////// НАСТОЙКИ /////////////////////////////
////////// + ДАЛЕЕ ТРОГАТЬ НЕ РЕКОМЕНДУЕТСЯ + ///////////
// Запись куки имя и e-mail, хранить до на месяц вперёд
if($name != "") {
setcookie("name", "$name", time()+2592000);
}
if($email != "") {
setcookie("email", "$email", time()+2592000);
}
if($web != "") {
setcookie("web", "$web", time()+2592000);
}
// если пустое значение $id то ...
if(id != "") {
// Проверка на "отправить" и выведение ошибок, если таковые есть
if($submit == 'отправить') {
if($name == "") {
$error1 = ">> Хватит консперироваться! Введите имя, пожалуйста.<hr>";
}
if($comments == "") {
$error2 = ">> Неужели вам настолько понравился фанф, что вы даже не смогли найти подходящих слов для его автора? <hr>";
}
}
// проверка указанны ли комментарии и имя
if($name != "" and $comments != "" and $id != "") {
// если пробелы и всякие знаки то не проходит ...
if(eregi("([A-Za-zА-Яа-я0-9])", $comments)) {
// Замена недоброжелательных знаков в имени, емайле, комментариях и номере комемментариев
$name = str_replace("\n", " ", $name);
$name = str_replace("\t", " ", $name);
$name = str_replace("<", "<", $name);
$name = str_replace(">", ">", $name);
$email = str_replace("\n", " ", $email);
$email = str_replace("\t", " ", $email);
$email = str_replace("<", "<", $email);
$email = str_replace(">", ">", $email);
$id = str_replace("\n", " ", $id);
$id = str_replace("\t", " ", $id);
$id = str_replace("<", "<", $id);
$id = str_replace(">", ">", $id);
$web = ereg_replace("<", "<", $web);
$web = ereg_replace(">", ">", $web);
$web = ereg_replace("\t", " ", $web);
$web = ereg_replace("\n", "", $web);
$comments = str_replace("<", "<", $comments);
$comments = str_replace(">", ">", $comments);
$comments = str_replace("\n", "
", $comments);
$comments = str_replace("\t", " ", $comments);
// Чтение из файла старых записей, если нету файла, то создаём и считываем пустую строку
if(file_exists($comfile)) {
$oldfile = fopen($comfile, "r");
flock($oldfile, 2);
$old = fread($oldfile, filesize($comfile));
flock($oldfile, 3);
fclose($oldfile);
} else {
$oldfile = fopen($comfile, "w");
$old = "";
fclose($oldfile);
}
// Вычисление есть ли ип проходимый через cache, если нет, то просто ип
if($HTTP_X_FORWARDED_FOR=="") {
$userip = $REMOTE_ADDR;
} else {
$userip = $HTTP_X_FORWARDED_FOR;
}
// Устанавливаем вид записи в базу данных
$text = "$id\t$name\t$date\t$email\t$web\t$userip\t$comments\n";
$text .= $old;
// Проверка максимального колличества слов
$wordsarray = explode(" ", $comments);
if(count($wordsarray) <= $maxwords) {
// разделитель между словами
$word = explode(" ", $comments);
// Пересчитать все слова, если какое то из них больше $maxsize то в массив записываем 0, если меньше то 1
for($i = 0; $i <= count($word); $i++) {
GLOBAL $len;
if(strlen($word[$i]) > $maxword) {
$len[] = "0";
} else {
$len[] = "1";
}
}
// Если в массиве есть 1 и нету 0 то "УРА", если в массиве есть 0 то "БОРОДА"
if(in_array("1", $len) xor in_array("0", $len)) {
// Запись, самое главное для чего мы все эти проверки делали
$write = fopen($comfile, "w");
flock($write, 2);
fputs($write, $text);
flock($write, 3);
fclose($write);
} else {
$error6 = ">> Таких длинных слов не бывает! вас неправильно поймут. <hr>";
} // максимальное слово
} else {
$error3 = ">> Вы что, решили переплюнуть автора этим сообщением? Сюда целую книгу уписать можно!<hr>";
} // максимум слов
} else {// [:alpha:]
$error5 = ">> Да что за азбуку Морзэ вы посылаете? Говорят вам, пишите ТОЛЬКО буквы и цифры! <hr>";
}
} // пустое значение name, comments, id
} else { // id == ""
$error4 = ">> Вы даже не представились... <hr>";
}
//include("header.inc");
?>
<head>
<title>Комментарии</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<LINK href="style_all.css" type=text/css rel=STYLESHEET>
</head>
<body leftMargin=5 topMargin=0 marginwidth=0 marginheight=0>
<table width='80%' border='1' align='center' cellpadding='0' cellspacing='1' bordercolor=#990000>
<tr>
<td><div align="center">
</div>
<tr>
<td><div align="center">
</p>
</div>
<tr><form method='post' action='<? echo $php_self; ?>?id=<? echo $id; ?>'>
<td>
</p>
<table width="97%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><p align="center">Оставьте свои комментарии для автора! ;)
<span class="text1">Имя:</span> <input type='text' name='name' value='<? echo $HTTP_COOKIE_VARS["name"]; ?>' style='width=70'>
<span class="text1">E-mail:</span>
<input type='text' name='email' value='<? echo $HTTP_COOKIE_VARS["email"]; ?>' style='width=100'>
<span class="text1">Сайт:</span>
<input type='text' name='web' value='<? echo $HTTP_COOKIE_VARS["web"]; ?>' style='width=169'>
<textarea name='comments' cols="70" rows="6" wrap="VIRTUAL" style='height=80; width=480'></textarea>
<input style='cursor:hand' type='submit' name='submit' value='Отправить'>
</td>
</tr>
</table>
</p>
<hr color=ff0000>
<?
// Вывод ошибок
echo "$error1$error2$error3$error4$error5$error6</td></tr>";
// открываем файл и считываем его
$file = @file($comfile);
for ($i=0; $i<count($file); $i++) {
// Разделяем строку на столбцы
$row = explode("\t",$file[$i]);
list($ida, $namea, $datea, $emaila, $weba, $ipa, $commentsa) = $row;
// Определям, принадлежит ли эта комментса к этой серии комментариев
if($ida == $id) {
// Если в строке email нету @, то не выводим емайл
if(eregi("@", $emaila)) {
$emaila = "[email='$emaila']$namea[/email]";
} else {
$emaila = $namea;
}
// Всякие примочки с коментариями
$commentsa = eregi_replace("([ \t]|^)www\.", " http://www.", $commentsa);
$commentsa = eregi_replace("([ \t]|^)ftp\.", " ftp://ftp.", $commentsa);
$commentsa = eregi_replace("(http://[^ )\r\n\"\'>]+)", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $commentsa);
$commentsa = eregi_replace("(ftp://[^ )\r\n\"\'>]+)", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $commentsa);
$commentsa = eregi_replace("([-a-z0-9_]+(\.[_a-z0-9-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)+))", "<a href=\"mailto:\\1\">\\1</a>", $commentsa);
$commentsa = str_replace("\\\"", "\"", $commentsa);
// Работаем с "сайтом", если http:// нету то добавляем, если есть, то нафиг надо ...
if(substr(trim(strtolower($weba)), 0, 7) != "http://" and $weba != "") {
$weba = " - [size="1"](http://$weba)[/size]";
}
else if(substr(trim(strtolower($weba)), 0, 7) == "http://") {
$weba = " - [size="1"]($weba)[/size]";
}
// Выводим комментарии
echo "<tr><td bgcolor='$topcolor'>[size="1"][$datea][/size] $emaila $weba</td></tr><tr><td>$commentsa</td></tr>";
}
}
?>
</form> </table>
<center><table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="text1">Примечание:</span> Если вы хотите увидеть изменения на странице, НЕ ЖМИТЕ НА КНОПКУ "обновить"! Просто закройте страницу и нажмите еще раз "добавить комменатрий", а затем обновите страницу. Иначе ваше последнее сообщение будет отправлено еще раз. Надеюсь, когданибудь этот глюк я устраню... :)</td>
</tr>
</table>
</center>
</body>