Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: form action в джумла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gaxx
Отправлено: 14 Августа, 2013 - 13:48:01
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)

[+]


CODE (htmlphp):
скопировать код в буфер обмена
  1. <FORM ACTION='' METHOD=POST>
  2.  <INPUT TYPE='hidden' NAME='mid' VALUE=".$answer['mid']." SIZE=50xBR><p><input type='submit' value='Принять'></p>

Прямой доступ к файлу в формэкшн в виде "modules\mod\file.php" задать нельзя. В файле есть запись:
defined('_JEXEC') or die('Restricted access');
Что как я понимаю запрещает прямой доступ к файлу. К тому же возможно этот параметр дает доступ к другим функциям джумлы которые используются мной в скрипте.
Ссылка должна быть вида:
/post.php?action=new&forum=71
Но я не понимаю как её получить и информации в интернете на этот счет практически нет.
Объясните пожалуйста что делать.
Я бы предпочел доделать этот модуль в джумле. Но если не получится, быть может есть скрипт аутентификации с группами пользователей, либо cms которая более проста и открыта для пхп?
 
 Top
DelphinPRO
Отправлено: 15 Августа, 2013 - 18:15:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




вы лучше объясните для чего все это.
Обработкой запросов в Джумле занимаются компоненты. Т.е. обращаться через адресную строку можно к компонентам.

В виде хака, можно открыть прямой доступ к какому-либо другому файлу, отличному от index.php (index2.php). Но в этом случае, чтобы получить доступ в API фреймворка вам будет нужно вручную приинклудить файлик
PHP:
скопировать код в буфер обмена
  1. require_once JPATH_BASE . '/includes/framework.php';
(возможно еще потребуется defines.php, даже не возможно, а потребуется)
а дальше получать необходимые объекты через фабрику. Например объект приложения
PHP:
скопировать код в буфер обмена
  1. JFactory::getApplication('site');

Для некоторых подсистем, возможно потребуется что-то еще подключить вручную.

Я не рекомендую так делать. А вот порекомендовать ничего существенного не могу, ибо не понимаю, что вам нужно.

(Отредактировано автором: 15 Августа, 2013 - 18:18:18)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
gaxx
Отправлено: 16 Августа, 2013 - 11:51:57
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)

[+]


Я не очень удачно изложил суть проблемы, простите.
Я создал модуль для джумлы, который выводит таблицу с выборкой из mysql бд.
В каждой строчке этой таблицы есть кнопка со скрытым полем, в котором содержится массив с айди строчки в базе данных.
При нажатии, должен выполнятся скрипт который меняет значение определенного поля в строчке бд с соответствующим айди.

То есть это банальная таблица с редактированием.
Если честно я понятия не имею почему я создал модуль, а не компонент, полагал что разница лишь в наличии персональных настроек у последнего, но мне они не нужны.
Таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.    defined('_JEXEC') or die('Restricted access');
  4.    JHtml::_('behavior.keepalive');
  5. //user
  6.  $user = & JFactory::getUser();
  7. $guest = $user->get ('guest') ;
  8. $g_admin = $user->get ('admin');
  9. $g_moder = $user->get ('moder');
  10. $g_user = $user->get ('user');
  11. $user_id = $user->get('id');
  12.  
  13.  
  14. $host = "localhost";
  15. $login = "root";
  16. $pass = "";
  17. $db = "j3db";
  18.  
  19. $connect = mysql_connect($host, $login, $pass);
  20. if (!$connect)
  21. {
  22. die('Ошибка базы данных: ' . mysql_error());
  23. }
  24.  
  25. mysql_select_db($db, $connect);
  26. $ask = mysql_query('SELECT * FROM mtx_tmcontent WHERE public = 1');
  27. if ($user->guest) {
  28.    echo "<p>Авторизируйтесь</p>";
  29. }else {
  30. echo "<table align='left';>
  31.        <tr>
  32.        <thead>
  33.    <th>Таймер</th>
  34.    <th>Откуда</th>
  35.   <th>Куда</th>
  36.    <th>Дата</th>
  37.   <th>Имя</th>
  38.    <th>Действие</th>
  39.  </tr>
  40.   </thead>
  41.  <tbody>";
  42. while($answer = mysql_fetch_array($ask))
  43. {
  44. echo "<tr>
  45. <td>".$answer['c_name']."</td>
  46. <td>".$answer['ad_from']."</td>
  47. <td>".$answer['ad_to']."</td>
  48. <td>".$answer['date']."</td>
  49. <td>".$answer['a_name']."</td>
  50. <td>
  51. <FORM ACTION='' METHOD=POST>
  52. <INPUT TYPE='hidden' NAME='mid' VALUE=".$answer['mid']." SIZE=50xBR><p><input type='submit' value='Принять'></p>
  53.     </td></tr>";
  54. }
  55.    }
  56. mysql_close($connect);
  57. ?>
  58.  


Испольнительный файл:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. defined('_JEXEC') or die('Restricted access');
  3. //user
  4. $user = & JFactory::getUser();
  5. $guest = $user->get ('guest') ;
  6. $g_admin = $user->get ('admin');
  7. $g_moder = $user->get ('moder');
  8. $g_user = $user->get ('user');
  9. $user_id = $user->get('id');
  10.  
  11.  
  12. $host = "localhost";
  13. $login = "root";
  14. $pass = "";
  15. $db = "j3db";
  16. $connect = mysql_connect($host, $login, $pass);
  17. if (!$connect)
  18. {
  19. die('Ошибка базы данных: ' . mysql_error());
  20. }
  21.  
  22. mysql_select_db($db, $connect);
  23. $ide = $_POST['mid'];
  24.  
  25. mysql_query('UPDATE mtx_tmcontent SET public=2 WHERE mid=$ide');
  26.  
  27.  
  28. if(!mysql_query($connect))
  29. {echo 'Ошибка при добавлении данных';}
  30. else
  31. {echo 'Данные обновлены!';}
  32.  
  33.  
  34. mysql_close($connect);
  35.  
  36. ?>

Наверно код ужасно ламерский, но для меня главное чтобы работало.
 
 Top
DelphinPRO
Отправлено: 16 Августа, 2013 - 12:33:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ну да, вам следовало делать именно компонент. И если еще не поздно, лучше переделайте. Потом расширять и дорабатывать будет удобнее. Если оставите модулем, то придется делать так, как я не рекомендовал Улыбка
gaxx пишет:
Наверно код ужасно ламерский

Ну как минимум в Джумле есть свой АПИ для работы с БД. Получить объект БД можно через ту же фабрику

И уже этим объектом выполнять операции с данными в базе. При этом не придется дублировать в коде модуля параметры подключения и использовать нативные php-функции (mysql_*), а при написании запросов можно будет подставлять специальную комбинацию символов в названия таблиц вместо префикса
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE #__tmcontent SET ...

(Отредактировано автором: 16 Августа, 2013 - 12:35:25)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB