Гостевая книга

Помогите допилить

#1 19 сентября 2013 в 15:17
Не получается сделать чтобы гостевая книга (от maxisoft) при неправильном вводе капчи выдавала ошибку.
Помогите сделать.

  1. if ($inCore->inRequest('submit') ) {
  2. $error = '';
  3. $show = 0;
  4. $captcha = $inCore->request('code', 'str', '');
  5. $message = $inCore->request('message', 'str', '');
  6. $name = $inCore->request('name', 'str', '');
  7. $email = $inCore->request('email', 'str', '');
  8. $_LANG['ERR_CAPTCHA'] = 'Неверно указан код капчи...';
  9. if (!$inCore->checkCaptchaCode($captcha) && !$inUser->is_admin){ cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error'); $errors = true; }
  10. if ($errors){
  11. $inCore->redirect('/guestbook/add.html');
  12. die();
  13. }
  1. {if $error}<p style="color:red">{$error}</p>{/if}
  2. <form action="" method="POST" name="questform">
  3. <table width='100%' >
  4. <tr height='25px'>
  5. <td colspan='2'>Оставьте ваш отзыв</td>
  6. </tr>
  7. <tr height='25px'>
  8. <td width='200px'> Ваше имя: </td>
  9. <td><input style='border: 1px solid #CCCCCC;' type='text' size='50' id='name' name="name" /></td>
  10. </tr>
  11. <tr height='25px'>
  12. <td>E-mail: </td>
  13. <td> <input style='border: 1px solid #CCCCCC;' type='text' size='50' id='email' name="email"/> </td>
  14. </tr>
  15. <tr>
  16. <td colspan='2'>
  17. <textarea name="message" id='message' style='border: 1px solid #CCCCCC;' rows='3' cols='70' >{$message}</textarea>
  18. </td>
  19. </tr>
  20. <tr>
  21. <td>
  22. <p style="margin-bottom:10px">{captcha}</p>
  23. </td>
  24. </tr>
  25. </table>
  26. <div>
  27. <input name="submit" type="submit" id="submit" onclick="sendQuestion()" style="margin-top:10px;font-size:18px" value="{$LANG.SEND}"/>
  28. <input type="button" style="font-size:16px;margin-top:3px;" name="cancel" onclick="window.history.go(-1)" value="{$LANG.CANCEL}"/>
  29. </div>
  30. </form>
  31.  
Капчу проверяет. Все прекрасно работает, но на отрез отказывается выдавать ошибку капчи.
#3 19 сентября 2013 в 18:19
NickSolver, Вы случайно не под админом проверяете? Админу сообщение об ошибке не будет показываться:
  1. if (!$inCore->checkCaptchaCode($captcha) && !$inUser->is_admin){ cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error'); $errors = true; }
#4 20 сентября 2013 в 00:56
Не задан же текст ошибки.
  1. $error = '';
При ошибке код выводит его <p style="color:red">{$error}</p> но он пустой…
#5 20 сентября 2013 в 07:38

Не задан же текст ошибки.

Sonat
Вы не правы.
  1. $_LANG['ERR_CAPTCHA'] = 'Неверно указан код капчи...';
и
  1. cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error');
#6 20 сентября 2013 в 15:23


а что говорит автор?

Очень Серый

автор давно забил на выпуск данного компонента. еще с версии 1.8.
#7 20 сентября 2013 в 15:24


NickSolver, Вы случайно не под админом проверяете? Админу сообщение об ошибке не будет показываться:

  1. if (!$inCore->checkCaptchaCode($captcha) && !$inUser->is_admin){ cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error'); $errors = true; }

Марат

нет — админ и капчи не видит.
#8 20 сентября 2013 в 20:26

нет — админ и капчи не видит.

NickSolver
Надо бы видеть оба файла полностью — портянки желательно под спойлером. Иначе получается гадание на кофейной гуще.

Не задан же текст ошибки.

Sonat
Я Вас, оказывается, не правильно понял ) Во втором отрывке кода не заметил первую строку:
  1. {if $error}<p style="color:red">{$error}</p>{/if}
Но в этом случае, опять же не ясно, передается ли $error в шаблон? Да и cmsCore::addSessionMessage() обычно используется для вывода сообщения(об ошибке или об успехе) после редиректа.
В общем, ТС, файлы в студию )))
#9 25 сентября 2013 в 15:58
  1. <?php
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3.  
  4. function guestbook(){
  5. global $_LANG;
  6. $inCore = cmsCore::getInstance();
  7. $inPage = cmsPage::getInstance();
  8. $inDB = cmsDatabase::getInstance();
  9. $inUser = cmsUser::getInstance();
  10. $inPage->addPathway(Отзывы, '/guestbook');
  11.  
  12. $cfg = $inCore->loadComponentConfig('guestbook');
  13. // Проверяем включени ли компонент
  14. if(!$cfg['component_enabled']) { cmsCore::error404(); }
  15.  
  16. $is_admin = $inCore->userIsAdmin($inUser->id);
  17. $user_can_delete = $inCore->isUserCan('comments/delete');
  18. $user_can_moderate = $inCore->isUserCan('comments/moderate');
  19.  
  20. $id = $inCore->request('id', 'int', 0);
  21. $do = $inCore->request('do', 'str', 'view');
  22. $page = $inCore->request('page', 'int', '1');
  23. $perpage = $cfg['perpage'];
  24.  
  25. if ($do=='view'){
  26.  
  27. $sql = "SELECT * FROM cms_guestbook ";
  28.  
  29. if (!$is_admin) {$sql .= " where is_show = 1 ";}
  30. $sql .= " ORDER BY pubdate DESC";
  31. $sql .= " LIMIT ".($page-1)*$perpage.", ".$perpage;
  32.  
  33. $result = $inDB->query($sql) ;
  34.  
  35. $total = $inDB->rows_count('cms_guestbook', 'is_show = 1');
  36.  
  37. if ($inDB->num_rows($result)){
  38. $message = array();
  39. while($con = $inDB->fetch_assoc($result)){
  40. $message[] = $con;
  41. }
  42. $is_message = true;
  43. } else {
  44. $is_message = false;
  45. }
  46. $pagebar = cmsPage::getPagebar($total, $page, $perpage, '/guestbook/page-%page%');
  47. $smarty = $inCore->initSmarty('components', 'com_guestbook_view.tpl');
  48. $smarty->assign('admin', $is_admin);
  49. $smarty->assign('delete', $user_can_delete);
  50. $smarty->assign('moderate', $user_can_moderate);
  51. $smarty->assign('pagetitle', $pagetitle);
  52. $smarty->assign('message', $message);
  53. $smarty->assign('pagebar', $pagebar);
  54. $smarty->assign('is_message', $is_message);
  55. $smarty->display('com_guestbook_view.tpl');
  56.  
  57. }
  58.  
  59. if ($do=='add'){
  60.  
  61. $inUser = cmsUser::getInstance();
  62. $inPage->setTitle($_LANG['ASK_QUES']);
  63. $inPage->addPathway($_LANG['ASK_QUES']);
  64.  
  65. $inPage->addHeadJS('components/guestbook/js/common.js');
  66.  
  67. if (!$inCore->inRequest('submit')){
  68. $smarty = $inCore->initSmarty('components', 'com_guestbook_add.tpl');
  69. $smarty->assign('user_id', $inUser->id);
  70. $smarty->assign('message', $message);
  71. $smarty->display('com_guestbook_add.tpl');
  72. }
  73.  
  74.  
  75. if ($inCore->inRequest('submit') ) {
  76. $error = '';
  77. $show = 0;
  78. $captcha = $inCore->request('code', 'str', '');
  79. $message = $inCore->request('message', 'str', '');
  80. $name = $inCore->request('name', 'str', '');
  81. $email = $inCore->request('email', 'str', '');
  82. $_LANG['ERR_CAPTCHA'] = 'Неверно указан код капчи...';
  83. if (!$inCore->checkCaptchaCode($captcha) && !$inUser->is_admin){ cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error'); $errors = true; }
  84. if ($errors){
  85. $inCore->redirect('/guestbook/add.html');
  86. die();
  87. }
  88.  
  89.  
  90. if($inUser->id || $cfg['on_moderation']){$show=1;}
  91. $sql = "INSERT INTO cms_guestbook (pubdate, name, message, email,is_show)
  92. VALUES (NOW(), '$name', '$message', '$email','$show')";
  93. $inDB->query($sql);
  94. $inCore->redirect('/guestbook');
  95. }
  96.  
  97. }
  98. if ($do=='delete'){
  99. $message_id = $inCore->request('message_id', 'int', 0);
  100. $user_id = $inUser->id;
  101. $inDB->query("DELETE FROM cms_guestbook WHERE id={$message_id}");
  102. $inCore->redirect('/guestbook');
  103.  
  104. }
  105. if ($do=='moder'){
  106. $message_id = $inCore->request('message_id', 'int', 0);
  107. $user_id = $inUser->id;
  108. $inDB->query("UPDATE cms_guestbook SET is_show = 1 WHERE id={$message_id} LIMIT 1");
  109. $inCore->redirect('/guestbook');
  110.  
  111. }
  112. }
  113. ?>
tpl в первом посте полностью.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.