J 1.5.26 Создал модуль, с помощью mod_php. В коде: форма, где вводится номер и кнопка submit. Передача данных методом post, потом скрипт - если была передача данных, тогда делаю запрос к базе с поиском нужной записи по введенному номеру. Если авторизоваться на сайте, то все работает, если нет - не хочет работать!! Не пойму почему?? Догадки: либо это особенности php_mod, либо для неавторизованного пользователя надо что-то дополнительно прописать, чтобы запросы к базе проходили. Если так, подскажите что именно?? Замучался с этой проблемой, помогите! З.Ы. Доступ не ограниченный (все), как у модуля так и у пункта меню в котором выводится Код который вставляю с помощью php_mod: Код (PHP): <?php if (isset($_POST['vagon'])){$vagon = $_POST['vagon'];} ?> <p style="font-size: 14px; color: rgb(0, 0, 255); font-weight:bold;">Форма проверки дислокации контейнеров</p> <form id="search_cont" method="post" > <p>Для получения информации введите номер вагона (только цифры):</p> <div> Вагон № <input id="nom_vagona" type="text" name="vagon" /> <input type="submit" name="submit" value="Проверить" /> </div> </form> <?php if (isset($_POST['submit'])){ echo '<p>ИНФОРМАЦИЯ ПО ВАШЕМУ ЗАПРОСУ:</p>'; if ($vagon==''){ echo '<p>Вы не ввели номер вагона!</p>'; }else{ $vagon = trim($vagon); //$vagon = intval($vagon); $result = mysql_query("SELECT * FROM table WHERE v_number = $vagon "); if (mysql_num_rows($result)>0){ $myrow = mysql_fetch_array($result); echo '<p>Вагон № <strong>'.$vagon.'</strong> на дату '.$myrow['data'].'<br>Станция назначения: <strong>'.$myrow['went_to'].'</strong><br>Станция дислокации: <strong>'.$myrow['now'].'</strong></p>'; }else{ echo '<p>Информации по вагону с номером <strong>'.$vagon.'</strong> нет, скорее всего неверно введен номер вагона!</p><p>Попробуйте еще раз, внимательно введя номер вагона.</p>'; } } //unset($vagon); } ?>
а где переменная с подключение к БД? вот пример http://www.komtet.ru/lib/plangs/php/podklyuchenie-k-bd-skript-php у тебя подобного не вижу как срабатывает после авторизации, не понятно но скорее всего просто происходит перехват по функциям
woojin, насколько я понимаю, если не указано используется текущее соединение с базой, установленное джумлой на момент выполнения скрипта.
а где это соединение!!!!!!!!!! соединение всегда в какой то переменной находится самый простой пример, на основе того скрипта который я тебе дал, создай соединение с БД, а потом не используя ни каких переменных из него (из этого скрипта) сделай какой нибудь запрос к БД если у тебя получится то значит создатели php в документации накосячили
Все-таки соединение с базой тут не при чем! Код (PHP): if (isset($_POST['submit'])){ ... } Внутрь этого условия не заходим Значит выходит так, что не авторизованный пользователь жмет на submit, но POST как то не отрабатывает!(((( Не пойму почему? Была мысль о связи с enctype, я не указываю это для формы, но собственно зачем? по-умолчанию берется application/x-www-form-urlencoded, и должно работать! НО не работает! Помогите, подскажите!
Большинство хостеров не поддерживают передачу переменных через глобальные массивы напрямую... Нужно определять переменные, которые примут значения из GET/POST-запроса. Можно сделать это через цикл foreach (читай в инете как), можно вручную: Код (PHP): $name = (htmlentities($_POST['name']); $email = (htmlentities($_POST['email']); ... Убедись, что переменная "пришла": Код (PHP): $name ? print 'Ok!' : print 'Fail!'; P.S.: Не бейте меня ногами, если где не прав
shurikkan, действительно переменная submit не приходит но если авторизоваться на сайте, приходит!! Вот код формы, все норм, должно работать! атрибут action не указываю, соответственно передача данных сюда же, оно и работает, но только для авторизованного пользователя Почему ж так может быть?? Код (PHP): <form id="search_cont" method="post" > <p>Для получения информации введите номер вагона (только цифры):</p> <div> Вагон № <input id="nom_vagona" type="text" name="vagon" /> <input type="submit" name="submit" value="Проверить" /> </div> </form>
а ты попробуй укажи этот атрибут и скорее всего просто все POST данные обнуляются у не авторизованного пользователя
попробовал указать атрибут action - бестолку((( по ходу и правда для неавторизованного пользователя - POST данные обнуляются, но почему это вообще может быть??
Частично разобрался! Отключил в системных настройках CMS кэширование и данные стали передаваться для неавторизованных пользователей! )) Но вот не понятно почему так??
потому что после загрузки в тебя на странице кэшируется форма, а поскольку в кэш данных POST запросов НЕТ то при последующей перезагрузке, данные берутся из кэша и соответственно POST у тебя пустой избавиться от этого можно отключив перед формой k'i и включи его после неё как это делается (в локальном месте) читай в документации на JOOMLA.ORG я не помню где это там описано, но там что то такое есть