Необходимо с помощью ajax на странице заметок (своя страница - textarea и кнопочка) добавить заметку.
Дело в том, что форум проверяет в админке - ты авторизован или нет. Соответственно при запросах того самого ajax'a форум говорит - пойдика залогинься и перенаправляет из admin/zametki.php?mode=add&sid=xxx на логин.
С кодом ajax'a все в порядке - если сделать запрос на обычный файл (без админских инклюдов) то все проходит удачно.
Что нужно брать с собой (куки?) и как? С удовольствием бы посмотрел пример, если кто-то писал. Использование ajaxa'a обязательно + в админке.
применение ajax в админке
-
- Former team member
- Сообщения: 2616
- Стаж: 19 лет 8 месяцев
- Откуда: Новосибирск
- Поблагодарили: 3 раза
sid. Используйте функцию append_sid() для прикрепления sid'a к url, по которому обращается скрипт.Alabay писал(а):Что нужно брать с собой (куки?) и как?
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
-
- phpBB 1.4.2
- Сообщения: 51
- Стаж: 19 лет 3 месяца
ну специально приписал же. не помогат.Alabay писал(а):admin/zametki.php?mode=add&sid=xxx
'ACTION' => append_sid('admin_zametki.php?mode=add'),
Сорри, посылат не зарегистрироваться, а на главную страницу!
Ajax использую как тут: http://dklab.ru пример про md5.
Ошибка: JavaScript code generated by backend is invalid!
Хотя в том файле, к которому я обращаюсь нету жава-скрипта никакого
Последний раз редактировалось Alabay 20.10.2007 14:42, всего редактировалось 1 раз.
-
- Former team member
- Сообщения: 2616
- Стаж: 19 лет 8 месяцев
- Откуда: Новосибирск
- Поблагодарили: 3 раза
Alabay
тогда покажите ваш код, желательно в виде мода или патча.
тогда покажите ваш код, желательно в виде мода или патча.
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
-
- phpBB 1.4.2
- Сообщения: 51
- Стаж: 19 лет 3 месяца
JsHttpRequest.php и JsHttpRequest.js
Их копируем в папку корень/ajax.
Прикрепил их.
создаем файл admin/zametki.php
admin/zametki.php
templates/subSilver/admin/zametki.tpl
Пока для теста такое качество кода сойдет 
Добавлено спустя 1 час 11 минут 31 секунду:
Не пробивает этот код:
pagestart.php
if ($HTTP_GET_VARS['sid'] != $userdata['session_id'])
{
redirect("index.$phpEx?sid=" . $userdata['session_id']);
}
Добавлено спустя 38 минут 29 секунд:
Теперь! (Проблема решена.)
require('./pagestart.' . $phpEx); - это нельзя показывать backend'у.
Их копируем в папку корень/ajax.
Прикрепил их.
создаем файл admin/zametki.php
admin/zametki.php
Код: Выделить всё
<?php
define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['Записки']['заипись'] = $file;
return;
}
// Load default header
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
$mode = htmlspecialchars($mode);
}
else
{
$mode = "";
}
switch ($mode) {
case "":
$template->set_filenames(array(
'zapiski' => 'admin/zametki.tpl'
));
$template->assign_vars(array(
'DATE' => date("d.m.y"),
'ACTION' => append_sid('admin_zametki.php?mode=zakaz'),
));
$template->pparse('zapiski');
break;
case "zakaz":
require_once $phpbb_root_path."/ajax/JsHttpRequest.php";
// Init JsHttpRequest и указываем кодировку.
$JsHttpRequest =& new JsHttpRequest("windows-1251");
// Присваиваем для удобства.
$prim = $_REQUEST['prim'];
if ($prim) {
$prim = htmlspecialchars($prim);
$id = mysql_insert_id();
$date = time();
$sql = "INSERT INTO `dom_payment` values('$id','$usluga','0','$prim','0', '$date')";
//$db->sql_query($sql);
$GLOBALS['_RESULT'] = array(
"res" => 'Записка добавлена. Если это появилось, то скрипт выполнен нормально',
);
}
break;
}
include('./page_footer_admin.'.$phpEx);
?>
Код: Выделить всё
<form method="POST" name="order" action="{ACTION}" onsubmit="return false">
<div><label for="prim">Заметка:</label><textarea rows="11" id="prim" name="prim" cols="50"></textarea></div>
<input type="submit" value="Отправить" name="submit" onclick="post();">
</form>
<div id="ans" style="border:0px; padding:2px">
</div>
<script language=JavaScript src="./../ajax/JsHttpRequest.js"></script>
<script language="JavaScript">
function post() {
JsHttpRequest.query(
'{ACTION}', // Тут мы посылаем запрос на сервер
{
// обозначаем переменные для php - $_REQUEST['str'];
'prim': document.getElementById("prim").value
},
// Когда предыдущую функцию сросили
//Вызываем эту, чтобы получить ответ
function(result, errors) {
// Write the answer.
if (result) {
document.getElementById("ans").innerHTML =
result["res"];
} else {
document.getElementById("ans").innerHTML =
errors["res"];
}
},
false // do not disable caching
);
}
</script>

Добавлено спустя 1 час 11 минут 31 секунду:
Не пробивает этот код:
pagestart.php
if ($HTTP_GET_VARS['sid'] != $userdata['session_id'])
{
redirect("index.$phpEx?sid=" . $userdata['session_id']);
}
Добавлено спустя 38 минут 29 секунд:
Теперь! (Проблема решена.)
require('./pagestart.' . $phpEx); - это нельзя показывать backend'у.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Former team member
- Сообщения: 2616
- Стаж: 19 лет 8 месяцев
- Откуда: Новосибирск
- Поблагодарили: 3 раза
Alabay
в общем, если бы вы внимательно посмотрели, что приходит скрипту в массиве $HTTP_GET_VARS, то поняли бы сами, что вместо этого
надо написать
Добавлено спустя 3 минуты 21 секунду:
Просто ради эксперемента попробуйте разлогиниться и послать запрос типа
http://forum.com/admin/admin_zametki.ph ... im=bla-bla.
Ведь наверняка сработает и добавит запись
Добавлено спустя 16 минут 13 секунд:
А там в добавок еще и sql-инъекция имеется...
в общем, если бы вы внимательно посмотрели, что приходит скрипту в массиве $HTTP_GET_VARS, то поняли бы сами, что вместо этого
Код: Выделить всё
'ACTION' => append_sid('admin_zametki.php?mode=zakaz'),
Код: Выделить всё
'ACTION' => 'admin_zametki.php?mode=zakaz&'.$SID,
ага, и получить дыру в системе безопасности 8)Alabay писал(а): require('./pagestart.' . $phpEx); - это нельзя показывать backend'у.
Просто ради эксперемента попробуйте разлогиниться и послать запрос типа
http://forum.com/admin/admin_zametki.ph ... im=bla-bla.
Ведь наверняка сработает и добавит запись

Добавлено спустя 16 минут 13 секунд:
А там в добавок еще и sql-инъекция имеется...
Самая страшная ошибка, это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.
phpBB3 [db_update.php generator]
Первая помощь по всем phpBB-вопросам: phpBB2 и phpBB3 FAQ; Правила общения;
Все консультации в icq или личке - на платной основе.