Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Web-программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 09.05.2005, 19:45   [включить плавающее окно]   #1
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Unhappy Не работает скрипт добавления коммента...

Есть несколько страниц, например, эта: http://basketchance.kulichki.ru/text...pe_history.php
Там не работает добавление комментариев.
Вбиваю текст, жму "Отправить", а далее ничего, кроме обновления страницы, не происходит.
Подозреваю, что что-то не так с этим:
<td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="comments.submit();">Отправить</td>
Форма называется "comments". Что здесь может быть не так, не пойму...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 09.05.2005, 21:32   [включить плавающее окно]   #2
Prezident
Мужской Умудрённый
 
Аватар для Prezident
 
Регистрация: 29.10.2003
Адрес: Томск
сам писал весь код? или где скрипт взял?
Давай весь код + код программы котороя непосредственно добавляет коментарий в базу(ну или файл).
__________________
Россия победит!
Prezident вне форума  
Ответить с цитированием
Непрочитано 09.05.2005, 21:38   [включить плавающее окно]   #3
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
писал сам, правда всё так простенько...
скрипт смотри в архиве
Вложения
Тип файла: rar comments.rar (7.5 Кб, 84 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 09.05.2005, 21:55   [включить плавающее окно]   #4
Prezident
Мужской Умудрённый
 
Аватар для Prezident
 
Регистрация: 29.10.2003
Адрес: Томск
DMx
На локальной машине работает да?

Ты уверен, что на куличках можно использовать в скриптах функцию mail?

Попробуй оформить comments.php в виде фунции, не обязательно передавать параметр в неё, просто что бы была функция допустим
PHP код:
function comnt()
{
//текс фунции обрабатывающий запрос на добавление и добавление коментария, то что в файле comments.php

и потом уже её вызывай, у меня была как-то подобная проблема
__________________
Россия победит!
Prezident вне форума  
Ответить с цитированием
Непрочитано 09.05.2005, 22:00   [включить плавающее окно]   #5
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
На локальной машине работает да?
Нет, на локальной тоже не работает.

Цитата
Ты уверен, что на куличках можно использовать в скриптах функцию mail?
можно, уже использовал ранее

трабла явно в чём-то другом...

DMx добавил :

а так-то можно писать: onClick="comments.submit()";
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 09.05.2005, 22:08   [включить плавающее окно]   #6
Prezident
Мужской Умудрённый
 
Аватар для Prezident
 
Регистрация: 29.10.2003
Адрес: Томск
к сожалению я не силен в javascript... попробуй сделать это без ждавы и посмотреть будет ли работать... я не вижу смысла в использовании ждавы.
__________________
Россия победит!
Prezident вне форума  
Ответить с цитированием
Непрочитано 09.05.2005, 22:19   [включить плавающее окно]   #7
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
а как тогда сделать из ячейки кнопку, без JS?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.05.2005, 01:22   [включить плавающее окно]   #8
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата
а как тогда сделать из ячейки кнопку, без JS?
А нельзя ли вместо ячейки кнопку SUBMIT
И оформить все в виде
<form action="твой скрипт PHP">
<input type="text">
...
<input type="submit">
</form>
Раз уж с жавой проблема
Не так эстетично зато надежно

Последний раз редактировалось Pirks; 10.05.2005 в 01:27.
Pirks вне форума  
Ответить с цитированием
Непрочитано 10.05.2005, 11:30   [включить плавающее окно]   #9
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Просто если использовать обычную "формочную" кнопку (<input>), то нельзя оформить её так, как мне хочется. Как видишь, у меня сейчас в кнопке текст расположен справа-снизу, а вот если <input>'ы делать, то так сделать не получится...
А то я так и сделал бы уже давно.
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.05.2005, 13:53   [включить плавающее окно]   #10
Prezident
Мужской Умудрённый
 
Аватар для Prezident
 
Регистрация: 29.10.2003
Адрес: Томск
DMx
А если использовать обычную кнопку добавляяется коментарий? главное понять, где происходит потеря запроса!
__________________
Россия победит!
Prezident вне форума  
Ответить с цитированием
Непрочитано 10.05.2005, 14:21   [включить плавающее окно]   #11
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Сейчас так и попробовал... и всё отлично заработало.
Теперь всё понятно. Что-то не так в этом:
<td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="comments.submit();">Отправить</td>
Почему-то не работает onClick...

Интересно, что на этой же странице есть ещё один такой же onClick, и он работает (!). Может чё-то из-за этого?..
Чтобы вся суть была ещё яснее, выкладываю архив со всеми файлами, которые инклюдятся на странице.
Вложения
Тип файла: rar comments_full.rar (10.2 Кб, 84 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.05.2005, 14:23   [включить плавающее окно]   #12
Emperor
Мужской Интересующийся
 
Регистрация: 11.08.2003
Адрес: USA, New Orleans
Нарисуй себе кнопку какую хочешь и вставь в форму.
Emperor вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.05.2005, 14:25   [включить плавающее окно]   #13
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Но понять-то хочется, что не так.
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 10:09   [включить плавающее окно]   #14
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Возникает впечатление, что на событие onClick в ячейке таблицы, которая находится в форме, submit повесить нельзя. Если не прав, то прошу прощения я жаве не силен.

Последний раз редактировалось Pirks; 11.05.2005 в 10:29.
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 11:22   [включить плавающее окно]   #15
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата (Pirks) »
Возникает впечатление, что на событие onClick в ячейке таблицы, которая находится в форме, submit повесить нельзя. Если не прав, то прошу прощения я жаве не силен.
Интересно, что на странице есть два куска кода:
...
<table align=center>
<tr>
<td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="feedback.submit();">Отправить</td>
</tr>
</table>
...
и
...
<table align=center>
<tr>
<td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="comments.submit();">Отправить</td>
</tr>
</table>
...

При этом первый работает отлично, а второй вообще не работает.
Как это можно понять? Имена в формах прописаны (name=feedback и name=comments).
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 12:04   [включить плавающее окно]   #16
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А в comment.php вообще проваливаешься?
Попробуй в comment.php воткни функцию phpinfo(). Какую информацию она тебе выдает.
Я бы открыл поле hidden и посмотрел, что там.
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 12:20   [включить плавающее окно]   #17
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Тут дело в том, что кнопка (из ячейки) даже не нажимается!.. (в Опере)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 12:27   [включить плавающее окно]   #18
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А вдугом броузере
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 12:33   [включить плавающее окно]   #19
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
в IE нажимается, но НИЧЕГО не происходит!

DMx добавил :

выше я приводил два куска кода, там верхний в Oper'е нажимается и всё, что надо, отсылает, а нижний - не нажимается и ничего не отсылает
вообщем, что-то с событием onClick не так...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 13:12   [включить плавающее окно]   #20
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Странно
Ну попробуй оформить эту форму так же как и panel_feedback.htm
Ее ты впихиваешь в страницу через require, а здесь прописана непосредственно
На счет onClick ничего толком сказать не смогу. Но мне кажется ячейка таблицы нажиматься не должна. Должно произойти событие по щелчку мыши которое может и происходит но ты ничего не видишь
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 14:14   [включить плавающее окно]   #21
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
Ну попробуй оформить эту форму так же как и panel_feedback.htm
Только что так и сделал - ничего хорошего не дало.

Цитата
На счет onClick ничего толком сказать не смогу. Но мне кажется ячейка таблицы нажиматься не должна.
Но там, где panel_feedback.htm, нажимается ведь.

Цитата
Должно произойти событие по щелчку мыши которое может и происходит но ты ничего не видишь
Увижу, т.к. в comments.php есть header("...");
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 14:42   [включить плавающее окно]   #22
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата
Увижу, т.к. в comments.php есть header("...");
Согласен

Будем думать дальше

Pirks добавил :

Ты знаешь а ведь у меня работает onClick

Pirks добавил :

Виноват
В IE
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 17:10   [включить плавающее окно]   #23
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 17:18   [включить плавающее окно]   #24
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Йооо! Какими-то невообразимыми манипуляциями onClick заработал!
Однако сам скрипт, т.е. добавление комментария, не работает...
Вот линк: http://basketchance.kulichki.ru/text...ll_history.php
И аттач:
Вложения
Тип файла: rar comments.rar (6.0 Кб, 76 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 17:33   [включить плавающее окно]   #25
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
<?
session_start();
if (!$_SESSION["error_name"] && !$_SESSION["error_message"]) {
$_SESSION["name"] = "???";
$_SESSION["message"] = "???????";
}
?>

В comments.htm восприниматься как скрипт php не должны.
Дай ему расширение php и переименуй скрипт comments.php, соответственно исправив все что на него ссылается.

Pirks добавил :

Можно эти два comment`а в один
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 18:28   [включить плавающее окно]   #26
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
теперь я ещё больше запутался...
изменил расширение на php, поменял имя, подправил в basketball_history.php... но теперь всё стало ещё хуже - http://basketchance.kulichki.ru/text...ll_history.php

DMx добавил :

похоже, во второй скрипт не передаются эти значения:
PHP код:
$path "http://basketchance.kulichki.ru/texts/history/basketball_history.";
$f "basketball_history.txt"

DMx добавил :

чтоб было понятней:

Есть три файла: basketball_history.php, comments_out.php и comments.php
В-первом, сама статья и обращение к comments_out.php, во-втором, вывод формы добавления коммента и вывод всех сообщений, в-третьем, запись в файл.
Вот.
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 18:36   [включить плавающее окно]   #27
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Там где ты их формируешь загони их в сессию
А там где они тебе нужны читай

session_is_registered("$path");
$path="...........";

Pirks добавил :

Только в начале php скрипта должна быть session_start();
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 18:40   [включить плавающее окно]   #28
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
ох эти сессии...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 18:43   [включить плавающее окно]   #29
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Ну что же поделаешь
Да в файл может не писаться по причине отсутствия прав на запись
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 18:46   [включить плавающее окно]   #30
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
права - 666
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 18:49   [включить плавающее окно]   #31
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
ОК
Тогда рой сессии
Воткни session_start(); в скрипт basketball_history.php
Туда же session_is_registered("..."); по всем параметрам которые хочешь передавать, за исключением системных php, а в остальных скриптах session_start(); и читай переменные
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 19:18   [включить плавающее окно]   #32
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Слушай, что я только что обнаружил...
Беру, делаю всё, как прежде, т.е. форма и вывод мессаг в basketball_history.php, без всяких require. Кнопка отправки по-прежнему представляет собой ячейку, т.е. заюзан метод onClick. Далее добавляю в comments.php строчку "phpinfo();". Фсё.
Загружаю страничку, жму пимпу... вуаля! Появились сведения о интерпретаторе PHP!

Получается кнопочка с JS-событием работает. Как же это так, понять совершенно невозможно.

Теперь проблема в другом - не производится запись в файл. Буду думать...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 19:31   [включить плавающее окно]   #33
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А $path и пр. передается в comments.php
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 19:43   [включить плавающее окно]   #34
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
phpinfo() показала, что всё передалось
вот тебе ещё раз архивчик скомпоновал:
Вложения
Тип файла: rar comments.rar (5.7 Кб, 63 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 19:44   [включить плавающее окно]   #35
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Архив получил
Завтра посмотрю
Pirks вне форума  
Ответить с цитированием
Непрочитано 11.05.2005, 22:10   [включить плавающее окно]   #36
Emperor
Мужской Интересующийся
 
Регистрация: 11.08.2003
Адрес: USA, New Orleans
Надо же было так замудрить.

basketball_history
<input type=hidden name=file_name value="texts/history/basketball_history.">

comments
$file = fopen($file_name."txt", "a");

Неужели нельзя было передать название файла целиком. Ты бы еще точку инклюдил из третьего файла....

<input type=hidden name=file_name value="basketball_history.txt">

$file = fopen($file_name, "a");

Но ошибка скорее всего в том, что все поля из формы ты взял из $_POST[], а file_name нет.


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

Последний раз редактировалось Emperor; 11.05.2005 в 22:13.
Emperor вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 11.05.2005, 22:55   [включить плавающее окно]   #37
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Я ж ведь $file_name использую ещё в header(""), поэтому и передаю без расширения.

Цитата
Кроме того, если это постоянный файл, то не проще ли его сразу в скрипте указать, а не передавать через форму.
Т.е. как? Статей ведь много, и все они обращаются к comments.php.
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 11:09   [включить плавающее окно]   #38
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Всё перепроверил, теперь и $file_name беру из $_POST:

PHP код:
<?
session_start
();
if (isset(
$_POST["add"])) {
    if (
$_POST["name"] == "Имя") {
        
$_SESSION["error_name"] = "укажи своё имя";
    }
    if (
$_POST["message"] == "Мессага") {
        
$_SESSION["error_message"] = "мессагу то какую будешь отправлять?";
    }
    
    if (
$_SESSION["error_name"] || $_SESSION["error_message"]) {
        
$_SESSION["name"] = $_POST["name"];
        
$_SESSION["message"] = $_POST["message"];
    }
    else {
        
$file fopen($_POST['file_name']."txt""a");
        
$_POST["name"] = str_replace("\r"""$_POST["name"]);
        
$_POST["name"] = str_replace("\t"""$_POST["name"]);
        
$_POST["name"] = str_replace("\n""<br>"$_POST["name"]);
        
$_POST["message"] = str_replace("\r"""$_POST["message"]);
        
$_POST["message"] = str_replace("\t"""$_POST["message"]);
        
$_POST["message"] = str_replace("\n""<br>"$_POST["message"]);
        
$out $_POST["name"]."\t".$_POST["message"]."\t".date("d.m.Y H:i")."\n";
        
fwrite($file$out);
        
fclose($file);
        
//Отправка на мыло админу
        
$text =
            
$_POST['name']."\n".
            
$_POST['message'];
        
mail("DeMximus@gmail.com""BasketChance.kulichki.ru :: Message from visitor :: ".$_POST['file_name']."php"$text);
    }
}
header("Location: ".$_POST['file_name']."php");
?>
Где ж здесь ошибка?!
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 13:59   [включить плавающее окно]   #39
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Или я невнимателен, или $file_name нигде я определения не нашел

Виноват нешел с старой версии

Последний раз редактировалось Pirks; 12.05.2005 в 14:04.
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 14:10   [включить плавающее окно]   #40
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
ну что, криминал какой-нить увидел?
просто сейчас всё должно быть нормально... но нет, не записывает.
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 14:11   [включить плавающее окно]   #41
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А $_POST["add"] у тебя где нибудь есть ?
Я не нашел
Когда была кнопка submit у нее было имя "add" а сейчас оно где ?

Pirks добавил :

Сделай вместо
if (isset($_POST["add"])) {

if (isset($_POST["file_name"])) {
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 15:58   [включить плавающее окно]   #42
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
заработало!
респект, показал на такую тухлую ошибку
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 16:05   [включить плавающее окно]   #43
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Наслаждайся
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 17:32   [включить плавающее окно]   #44
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
да, сейчас круто так...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 17:39   [включить плавающее окно]   #45
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата (DMx) »
да, сейчас круто так...
Надо было сразу phpinfo в comments воткнуть.
Еще вчера было бы ясно где рыть

Хорошо все что хорошо кончается
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 19:54   [включить плавающее окно]   #46
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Так, тема ещё не закрыта...
Решил сейчас модернизировать скрипт так, чтобы всё было в отдельном файле (php-файле). Всё бы хорошо, только вот сессии на отрез отказываются работать. Добавление новых комментов работает без проблем, а вот вывод сообщений об ошибке (не заполнены поля ввода) не работает.
Вот так я организовал передачу необходимых параметров скрипту:
PHP код:
<?
    
require "http://basketchance.kulichki.ru/comments.php?path=texts%2Fhistory%2Ffirst_13_rules.&txt=texts%2Fhistory%2Ffirst_13_rules.txt";
?>
Может и кустарно, но фиг с ним.

Сам comments.php:
PHP код:
<?
    
if (!isset($_POST["file_name"])) {
        
session_start();
        echo 
"<h1>".$_SESSION['error_name']."</h1>";
        if (!
$_SESSION["error_name"] && !$_SESSION["error_message"]) {
            
$_SESSION["name"] = "Имя";
            
$_SESSION["message"] = "Мессага";
        }
?>
<blockquote>
<form action="http://basketchance.kulichki.ru/comments.php" method=post name=comments>
<input type=hidden name=file_name value="<?echo $path;?>">
<table width=673 cellpadding=0 cellspacing=1>
<tr>
    <td></td>
    <td align=left><font color=red size=-2><?echo $_SESSION["error_name"];?></font></td>
</tr>
<tr>
    <td rowspan=3 width="25%" align=right>
    <b><span class=gray>Добавь своё мнение<br>об этой проге:</span></b>
    </td>
    <td width="75%" colspan=2><input type=text name="name" value="<?echo $_SESSION['name'];?>" size=30 onblur="if(this.value=='')this.value='Имя';" onfocus="if(this.value=='Имя')this.value='';">
    </td>
</tr>
<tr>
    <td colspan=2 align=left><font color=red size=-2><?echo $_SESSION["error_message"];?></font></td>
</tr>
<tr>
    <td colspan=2><textarea name=message rows=7 wrap=virtual style="font-family: Verdana; font-size: 8pt; width: 100%;" onblur="if(this.value=='')this.value='Мессага';" onfocus="if(this.value=='Мессага')this.value='';"><?echo $_SESSION["message"];?></textarea>
    </td>
</tr>
<tr>
    <td colspan=2 align=center>
        <table align=center>
        <tr>
            <td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="comments.submit();">Отправить</td>
        </tr>
        </table>
    </td>
</tr>
</table>
</form>
<?
session_destroy
();
?>
<table width=673>
<tr>
    <td colspan=2 class=line><br></td>
</tr>
<?
if (file($txt)) {
    
$com file($txt);
    for(
$i count($com) - 1$i>=0$i--) {
        list(
$name$message$timeadd) = split("\t"$com[$i]);
            echo 
"
            <tr>
                <td class=t_e width=84%><b>
$name</b></td>
                <td class=t_e width=16% align=center>
$timeadd</td>
            </tr>
            <tr>
                <td colspan=2>
$message</td>
            </tr>
            <tr>
                <td colspan=2 class=line><br></td>
            </tr>
            "
;
    }
}
else
    echo 
"
    <tr>
        <td colspan=2 align=center>Посетители молчат, как партизаны :(</td>
    </tr>
    <tr>
        <td colspan=2 class=line><br></td>
    </tr>"
;
?>
</table>
</blockquote>
<?
    
}
    else {
        
//phpinfo();
        
session_start();
        if (
$_POST["name"] == "Имя") {
            
$_SESSION["error_name"] = "укажи своё имя";
        }
        if (
$_POST["message"] == "Мессага") {
            
$_SESSION["error_message"] = "мессагу то какую будешь отправлять?";
        }
        if (
$_SESSION["error_name"] || $_SESSION["error_message"]) {
            
$_SESSION["name"] = $_POST["name"];
            
$_SESSION["message"] = $_POST["message"];
        }
        else {
            
$file fopen($_POST['file_name']."txt""a");
            
$_POST["name"] = str_replace("\r"""$_POST["name"]);
            
$_POST["name"] = str_replace("\t"""$_POST["name"]);
            
$_POST["name"] = str_replace("\n""<br>"$_POST["name"]);
            
$_POST["message"] = str_replace("\r"""$_POST["message"]);
            
$_POST["message"] = str_replace("\t"""$_POST["message"]);
            
$_POST["message"] = str_replace("\n""<br>"$_POST["message"]);
            
$out $_POST["name"]."\t".$_POST["message"]."\t".date("d.m.Y H:i")."\n";
            
fwrite($file$out);
            
fclose($file);
            
//Отправка на мыло админу
            
$text =
                
$_POST['name']."\n".
                
$_POST['message'];
            
mail("DeMximus@gmail.com""BasketChance.kulichki.ru :: Message from visitor :: ".$_POST['file_name']."php"$text);
        }
    
header("Location: ".$_POST['file_name']."php");
    }
?>
Может здесь можно как-то без сессий, а то заколебали они уже?..

DMx добавил :

чё-то глючит у меня на форуме...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 12:02   [включить плавающее окно]   #47
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Только что проверил, если написать в основном файле (где сама статья) так:
PHP код:
<?
    session_start
();
    echo 
$_SESSION["error_name"];
    echo 
$_SESSION["error_message"];
    require 
"http://basketchance.kulichki.ru/comments.php?path=texts%2Fhistory%2Ffirst_13_rules.&txt=texts%2Fhistory%2Ffirst_13_rules.txt";
?>
то сессия успешно работает, т.е. выводится error_name и error_message.
Почему же после подключения comments.php сессия там не выводится (не знаю, как правильно сказать ?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 13:37   [включить плавающее окно]   #48
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Прежде всего непонятно, зачем ты session_start(); в comments два раза используешь.
Эту инструкцию можно поставить в начале скрипта и все после <?
Далее ты можешь в сессию загонять любые переменные используя

session_is_registered("$переменная");
$переменная=...;

А затем в любом скрипте, после session_start();
извлекать ее

Pirks добавил :

http://www.getinfo.ru/article250.html
http://mysitez.km.ua/Programming/?phpsessions
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:16   [включить плавающее окно]   #49
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
можно и без session_is_registered(), просто использовать массив $_SESSION[""], что я и делал...
однако не работает ведь

лишние session_start() убрал, но это ничего не изменило
__________________
Baller's Choice -> http://bchance.ru

Последний раз редактировалось DMx; 13.05.2005 в 15:19.
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:20   [включить плавающее окно]   #50
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Похоже теперь у тебя comment:
<?
session_start();
if (!isset($_POST["file_name"])) {
echo "<h1>".$_SESSION['error_name']."</h1>";
if (!$_SESSION["error_name"] && !$_SESSION["error_message"]) {
$_SESSION["name"] = "Имя";
$_SESSION["message"] = "Мессага";
}
?>
...
...
...



А в basketball_history.php сессию стартуешь ?
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:22   [включить плавающее окно]   #51
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
А в basketball_history.php сессию стартуешь ?
да
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:22   [включить плавающее окно]   #52
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Если не затруднит кинь еще исходники
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:24   [включить плавающее окно]   #53
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Вот:
Вложения
Тип файла: rar comments.rar (6.2 Кб, 58 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:33   [включить плавающее окно]   #54
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Поймал, смотрю
А ты пока раскоментарь phpinfo() в comments.php и смотри там

Pirks добавил :

$_SESSION["name"] = "Имя"; - присвоение
echo $name - показать его
т.е все условия, которые у тебя есть надо писать

if ($name == "Имя"){
и т.д.

Если я правильно понимаю работу с сессиями в PHP версии 4 и выше.
До этого работал с более ранними версиями
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 16:54   [включить плавающее окно]   #55
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
т.е. вот так сделать:
PHP код:
else {
        if (
$name == "Имя") {
            
$_SESSION["error_name"] = "укажи своё имя";
        }
        if (
$message == "Мессага") {
            
$_SESSION["error_message"] = "мессагу то какую будешь отправлять?";
        }
        if (
$error_name || $error_message) {
            
$_SESSION["name"] = $_POST["name"];
            
$_SESSION["message"] = $_POST["message"];
        }
        else {... 
Ну так это ничего не изменит (уже проверил)...

а как писать: $_SESSION["name"] или $name значения не имеет - проверено

тут какие-то другие грабли...
условия все в comments.php работают, и в first_13_rules.php сессии показываются, а потом снова при подключении comments.php сессии, как будто, стираются (!)
как же это так?

DMx добавил :

глянь сюда: http://basketchance.kulichki.ru/text...t_13_rules.php
там $error_name сохранилось в сессию и вывелось в самом first_13_rules.php, но в подключённом comments.php $error_name пропадает...

DMx добавил :

я о надписи "укажи своё имя" толкую
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 17:06   [включить плавающее окно]   #56
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Будем дальше рыть
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 17:11   [включить плавающее окно]   #57
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Хорошо, что ты нормальный (добрый) чел, помогаешь до последнего...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 17:44   [включить плавающее окно]   #58
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Тоесть я понял так
Если ты ничего не занес в поля после нажатия ОТПРАВИТЬ выдает SESSION
Если указал имя, но без изменения mess, имя сбрасывается и вроде как все с нуля

Pirks добавил :

Помоему ты намудрил с условиями
Проверь их в самом начале comment.php

Pirks добавил :

Я бы сделал comment.php немного по другой схеме

Если нажата ОТПРАВИТЬ заполняешь сессию а затем ее анализируешь
Если нет анализируешь то, что есть

Зачем смотреть $_POST, когда есть $_SESSION
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 18:29   [включить плавающее окно]   #59
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
Если указал имя, но без изменения mess, имя сбрасывается и вроде как все с нуля
Нет, имя не сбрасывается. Вот:
PHP код:
if ($error_name || $error_message) {
    
$_SESSION["name"] = $_POST["name"];
    
$_SESSION["message"] = $_POST["message"];
}
else {... 
Ну ведь после нажатия кнопки (без заполнения name и message) выводится форма и показываются все мессаги, а это значит, что условия верны, но сессия куда-то пропадает...

Цитата
Я бы сделал comment.php немного по другой схеме
Если нажата ОТПРАВИТЬ заполняешь сессию а затем ее анализируешь
Если нет анализируешь то, что есть
Зачем смотреть $_POST, когда есть $_SESSION
Не понял, это как? Форма ведь есть, поэтому без $_POST никуда...

И вообще, добавление работает, а это значит, что общая структура верна. Просто какой-то мелкий баг прокрался или не знание PHP.
А действительно ли можно в подключаемых файлах (require) использовать сессию? Вдруг здесь какой-нить ньюанс есть?..

DMx добавил :

PHP код:
А зачем к ней обращатьсяесли не нажималась ОТПРАВИТЬ 
а у меня такого и нет

DMx добавил :

ой, а где твой пост?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 18:44   [включить плавающее окно]   #60
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата
Форма ведь есть, поэтому без $_POST никуда...
А зачем, если не было нажатия ОТПРАВИТЬ

Цитата
действительно ли можно в подключаемых файлах (require) использовать сессию?
Можно

Тебе сессии нужны, только при перезагрузке странички или при запуске другого скрипта

Pirks добавил :

Вот он
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 18:52   [включить плавающее окно]   #61
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
Тебе сессии нужны, только при перезагрузке странички или при запуске другого скрипта
эээ...

DMx добавил :

слушай, а сейчас и добавление перестало работать...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 18:56   [включить плавающее окно]   #62
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Откатывай, что менял

Цитата
тебе сессии нужны, только при перезагрузке странички или при запуске другого скрипта
т.е для require не надо

Последний раз редактировалось Pirks; 13.05.2005 в 18:59.
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 19:18   [включить плавающее окно]   #63
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
вооще я запутался...
ничерта теперь не работает
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 19:40   [включить плавающее окно]   #64
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Давай отдохни до завтра
Будет день - будет мысль
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 08:57   [включить плавающее окно]   #65
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата (DMx) »
вооще я запутался...
ничерта теперь не работает


Ну как
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 11:47   [включить плавающее окно]   #66
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
объяснили мне на форуме sources.ru, что низя в require писать так, как я писал...
т.е. локальный путь писать надо

правда таким образом не подключается ничего...

DMx добавил :

сделал так:

PHP код:
$path "/texts/history/first_13_rules."
$txt "first_13_rules.txt"
require 
"../../comments.php"
теперь только добавление не работает, а так всё отлично буду думать...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 13:56   [включить плавающее окно]   #67
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А comments.php у тебя в этом же каталоге лежит ? или 2мя уровнями выше

Pirks добавил :

Относительно first_13_rules.php
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 14:02   [включить плавающее окно]   #68
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
2мя уровнями выше, а что?

DMx добавил :

только что проверил мыло - мессаги и имя из формы успешно отсылаются... но в файл не записываются
что-то здесь не так:
PHP код:
$file fopen($_POST["file_name"]."txt""a");
$_POST["name"] = str_replace("\r"""$_POST["name"]);
$_POST["name"] = str_replace("\t"""$_POST["name"]);
$_POST["name"] = str_replace("\n""<br>"$_POST["name"]);
$_POST["message"] = str_replace("\r"""$_POST["message"]);
$_POST["message"] = str_replace("\t"""$_POST["message"]);
$_POST["message"] = str_replace("\n""<br>"$_POST["message"]);
$out $_POST["name"]."\t".$_POST["message"]."\t".date("d.m.Y H:i")."\n";
fwrite($file$out);
fclose($file); 
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 14:03   [включить плавающее окно]   #69
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Со структурой разобраться надо
Запись в файл может из за этого не идти
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 14:05   [включить плавающее окно]   #70
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
структура:
/texts/history/first_13_rules.php
/comments.php

т.е. comments в корне лежит
слушай, а почему говорится "выше", если наоборот - "ниже"? или я чё не допонимаю?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 14:17   [включить плавающее окно]   #71
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
.. - говорит о том что перейти на уровень выше
Значит путь к txt у тебя будет:
./texts/history/ и т.д пока не доберешся до файла
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 14:17   [включить плавающее окно]   #72
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
хех, вроде все варианты уже перебрал... никак не хочет в файл писать
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 14:18   [включить плавающее окно]   #73
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Называется относительный путь

Pirks добавил :

А $_POST["file_name"] чего говорит
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 14:21   [включить плавающее окно]   #74
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
изменил $path:
PHP код:
$path "./texts/history/first_13_rules."
заработало!

а что значит "./"?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 14:24   [включить плавающее окно]   #75
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
$file = fopen($_POST['file_name']."txt", "a+");
^^^
Открыть для записи и установить указатель в конец файла
Pirks вне форума  
Ответить с цитированием
Непрочитано 14.05.2005, 14:24   [включить плавающее окно]   #76
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
респект тебе, Pirks, ОГРОМНЫЙ! здорово помог, век не забуду такой помощи...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 14.05.2005, 14:27   [включить плавающее окно]   #77
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата
а что значит "./"?
Значит что начиная с текущей директории (или каталога) и далее, т.е.
./comments.php выполнить скрипт comments.php в лежащий в текущей директории
/comments.php выполнить скрипт comments.php в лежащий в корневой директории

Чем смог, тем помог

Последний раз редактировалось Pirks; 14.05.2005 в 14:50.
Pirks вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:13. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey