Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2017, 09:52   #1
Елена S
Пользователь
 
Регистрация: 17.07.2016
Сообщений: 93
По умолчанию Прошу проверить код (редактирование постов на форуме)

Здесь предлагается сделать замену в коде php, чтобы пользователи не могли редактировать свои посты на форуме с датой на какой-то интервал времени прежде текущей.
http://neocrome.ru/forums.php?m=posts&p=16980#16980

Когда сделала все предлагаемые там замены, то пошли белые страницы, при открытии страниц тем, видимо, допустила ошибку при вставке && !$usr['isadmin'], как там предлагается.

Ну хорошо, восстановила прежний файл forums.posts.inc.php, который правлю. И пробую сначала сделать первую замену кода.

С этого
$adminoptions .= (($usr['isadmin'] || $row['fp_posterid']==$usr['id']) && $usr['id']>0) ? " &nbsp; <a href=\"forums.php?m=editpost&amp;s= ".$s."&amp;q=".$q."&amp;p=".$ro w['fp_id']."&amp;".sed_xg()."\">".$L['Edit']."</a>" : '';

на этот

$adminoptions .= (($usr['isadmin'] || $row['fp_posterid']==$usr['id']) && $usr['id']>0 && $row['fp_creation'] < time() - 86400) ? " &nbsp; <a href=\"forums.php?m=editpost&amp;s= ".$s."&amp;q=".$q."&amp;p=".$ro w['fp_id']."&amp;".sed_xg()."\">".$L['Edit']."</a>" : '';

Как понимаю, у пользователя должна пропадать кнопка Edit через 86400 секунд, но установила для тестирования 60.

Но она почему-то не пропадает, по истечении минуты, т.е. пользователь продолжает иметь возможность исправлять свой пост.

Как вы думаете, что я неправильно делаю или может быть в коде где-то ошибка?
Елена S вне форума Ответить с цитированием
Старый 08.06.2017, 10:47   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Елена S Посмотреть сообщение
Как понимаю, у пользователя должна пропадать кнопка Edit через 86400 секунд, но установила для тестирования 60.
Но она почему-то не пропадает, по истечении минуты, т.е. пользователь продолжает иметь возможность исправлять свой пост.
Как вы думаете, что я неправильно делаю или может быть в коде где-то ошибка?
Нужно проверить, соответствует ли добавленное новое условие вашим ожиданиям.
Для этого нужно вывести его результат на экран:
PHP код:
var_dump($row['fp_creation'] . " < " . (time() - 86400) . ": " .  ($row['fp_creation'] < (time() - 86400))); 
Andkorol вне форума Ответить с цитированием
Старый 08.06.2017, 16:41   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

да, и как вы ждете - с перезагрузкой страницы через 60 сек надеюсь?
ADSoft вне форума Ответить с цитированием
Старый 08.06.2017, 17:20   #4
Елена S
Пользователь
 
Регистрация: 17.07.2016
Сообщений: 93
По умолчанию

Сейчас потестировала.
Исправляю код в файле, как написала выше, загружаю на сервер.
Вхожу в форум, делаю пост (не администраторским ником).
И вы знаете, по-моему, там как раз с точностью до наоборот - сначала нет кнопки Edit, а при перезагрузке страницы через минуту - она появляется. Может быть, там стоит не "больше 60 сек", а "меньше 60 сек", в кодах?
Елена S вне форума Ответить с цитированием
Старый 08.06.2017, 17:24   #5
Елена S
Пользователь
 
Регистрация: 17.07.2016
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Нужно проверить, соответствует ли добавленное новое условие вашим ожиданиям.
Для этого нужно вывести его результат на экран:
А где пишется предложенный вами код? В том же файле, который редактирую, тогда в каком месте?
Или где?

(Где кстати здесь кнопка вставки программных кодов в пост, что-то не нашла?..)

Последний раз редактировалось Елена S; 08.06.2017 в 17:26.
Елена S вне форума Ответить с цитированием
Старый 08.06.2017, 17:41   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Елена S Посмотреть сообщение
(Где кстати здесь кнопка вставки программных кодов в пост, что-то не нашла?..)
Код программы форматируется с помощью тегов
[PHP]тут код на PHP[/PHP]
или
[CODE]тут программный код[/CODE] <- язык программирования определяется движком форума автоматически
(читать FAQ)

Последний раз редактировалось Alex11223; 08.06.2017 в 17:50.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.06.2017, 17:55   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Елена S Посмотреть сообщение
А где пишется предложенный вами код? В том же файле, который редактирую, тогда в каком месте?
Ну перед условием – где же ещё?!?
Мы что проверять собираемся?
Andkorol вне форума Ответить с цитированием
Старый 08.06.2017, 18:09   #8
Елена S
Пользователь
 
Регистрация: 17.07.2016
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Елена S Посмотреть сообщение
Сейчас потестировала.
И вы знаете, по-моему, там как раз с точностью до наоборот - сначала нет кнопки Edit, а при перезагрузке страницы через минуту - она появляется. Может быть, там стоит не "больше 60 сек", а "меньше 60 сек", в кодах?
Шутки шутками, а когда поменяла там в коде < на > , то кнопка Edit спустя минуту пропадает. Так что это сделано. Да, ведь там говорится, что в этот новый код нужно добавить, чтобы у администратора эта кнопка не пропадала. Сейчас администратор тоже не может редактировать спустя минуту.
Так что пока поставлю исходный файл, и нужно куда-то вставить вот этот код

PHP код:
&& !$usr['isadmin'
Уже говорила выше, что когда его вставила, то пошли белые страницы, т.е. вставила его видно не в то место кода куда-то. А куда надо, как вы считаете?
Елена S вне форума Ответить с цитированием
Старый 09.06.2017, 16:09   #9
Елена S
Пользователь
 
Регистрация: 17.07.2016
Сообщений: 93
По умолчанию

С этим пока не разбиралась, попробовала разобраться с кнопкой Delete

Как указано по ссылке в первом посте, заменила код

PHP код:
$adminoptions .= ($usr['id']>&& ($usr['isadmin'] || $row['fp_posterid']==$usr['id']) && !($post12[0]==$row['fp_id'] && $post12[1]>0)) ? " &nbsp; ".$L['Delete'].":[<a href=\"forums.php?m=posts&amp;a=delete&amp;".sed_xg()."&amp;s=".$s."&amp;q=".$q."&amp;p=".$row['fp_id']."\">x</a>]" ''
на код

PHP код:
$adminoptions .= ($usr['id']>&& ($usr['isadmin'] || $row['fp_posterid']==$usr['id']) && !($post12[0]==$row['fp_id'] && $post12[1]>0) && ($row['fp_creation'] < time() - 86400 && !$usr['isadmin'])) ? " &nbsp; ".$L['Delete'].":[<a href=\"forums.php?m=posts&amp;a=delete&amp;".sed_xg()."&amp;s=".$s."&amp;q=".$q."&amp;p=".$row['fp_id']."\">x</a>]" ''
Только установила время не 86400, а 60, и < заменила на >, как и для кнопки Edit.

Результат - кнопка Delete вообще пропала, ее нет и в пределах минуты, и после, как для администратора, так и для пользователя. В чем дело, как вы думаете?

А нет, кнопка Delete пропала только для администратора, причем ее нет ни до ни после 60 секунд, а для пользователя это работает нормально, пропадает через 60 секунд. Значит, в коде это условие , администратор ли ты, проверяется неправильно. А в чем ошибка?..
Но правда не только это, ведь для администратора кнопка Delete вообще пропала, ее нет ни при каком времени...

Последний раз редактировалось Елена S; 09.06.2017 в 16:25.
Елена S вне форума Ответить с цитированием
Старый 09.06.2017, 16:25   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Елена S Посмотреть сообщение
А в чем ошибка?..
В написании кода «методом тыка»
Разберитесь уже, что именно проверяет каждый из элементов условия – вместо того, чтобы просто бездумно тыкать в условие непонятно что и непонятно зачем.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование постов Елена S SQL, базы данных 1 08.06.2017 09:45
Редактирование своих постов Filka О форуме и сайтах клуба 3 07.03.2016 17:12
Прошу помочь с восстановлением аккаунта на этом форуме St_devil О форуме и сайтах клуба 19 07.08.2012 17:02
Прошу проверить код pandaaaaa Паскаль, Turbo Pascal, PascalABC.NET 6 14.12.2011 01:58
Прошу проверить код программы Pashtet Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2008 11:50