Как запустить свой скрипт с адресной строки,что бы в нем работали функции dle?

D1
На сайте с 24.11.2011
Offline
4
3090

Хочу это сделать,что бы на cron повесить запуск этого скрипта,но как только убираю с кода

if(!defined('DATALIFEENGINE')) {die("Hacking Attempt!"); }
,что бы можно было запустить с адресной строки,то пишет разные ошибки,а если подключить этот скрипт в каком то шаблоне dle,то все работает.В частности интересует работоспособность этого $row =
$db->query("SELECT * FROM ".PREFIX."_post");
и этого
while($row = $db->get_row()){}
wwwwww
На сайте с 29.04.2011
Offline
195
#1

Скрипт через адресную строку:

supersite.ru/somescript.php

Чтобы выполнить код $db->query("SELECT * FROM ".PREFIX."_post"); , нужно, чтобы ваш код находился в контексте. Или же добавьте необходимый функционал из кода DLE.

Видишь? Свободная подпись.
D1
На сайте с 24.11.2011
Offline
4
#2

wwwwww,Какой функционал можно добавить,что бы не указывать логин и пароль к базе,а что бы брался с dle настроек.И как сделать обращение к скрипту через адресную строку безопасным?

siv1987
На сайте с 02.04.2009
Offline
427
#3

Какой ЭТОТ скрипт? Оно что-то должно делать?

Если там присутствовало !defined('DATALIFEENGINE') значит он не предназначен для прямого обращения.

dager12:
В частности интересует работоспособность этого $row =

Подключайте класс бд с настройками, и будет работоспособность. Но скрипт лучше написать свой под конкретную задачу, а не вырывать куски из контекста файла, иначе "пишет разные ошибки" будет на каждом шагу

V
На сайте с 05.01.2011
Offline
23
#4
dager12:
wwwwww,Какой функционал можно добавить,что бы не указывать логин и пароль к базе,а что бы брался с dle настроек.И как сделать обращение к скрипту через адресную строку безопасным?

а что проблема дернуть настройки из дб_конфиг , и просто подключится к базе , а тянуть за собой клас датабазе из дле

D1
На сайте с 24.11.2011
Offline
4
#5

!defined('DATALIFEENGINE')
Вот весь скрипт,который нужно вызывать через адресную строку.

$result = $db->query("SELECT id,category,stream_portal,stream_url FROM ".PREFIX."_post");
while($row = $db->get_row($result)){

//stream_views begin
$live_views = '';
switch($row['stream_portal'])
{
case 'twitch':
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=$row[stream_url]", 0, null, null);
$json_array = json_decode($json_file, true);

if ($json_array[0]['name'] == "live_user_$row[stream_url]") $live_views = ($json_array[0]['channel_count']);
else
$db->query( "UPDATE " . PREFIX . "_post set category=4, news_read='0' where id='{$row['id']}'" );

break;
case 'own3d':
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=$row[stream_url]");
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive");
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers");
if ($resultlive[0] == 'true') $live_views = ($resultviewers[0]);
else
$db->query( "UPDATE " . PREFIX . "_post set category=4,news_read='0' where id='{$row['id']}'" );
break;
}

if($live_views) {
switch($row['category'])
{
case 2:
case 3:
if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
else $db->query( "UPDATE " . PREFIX . "_post set news_read='{$live_views}' where id='{$row['id']}'" );
break;
case 4:
$db->query( "UPDATE " . PREFIX . "_post set category=3 where id='{$row['id']}'" );
if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
else $db->query( "UPDATE " . PREFIX . "_post set news_read='{$live_views}' where id='{$row['id']}'" );
}
}
}
Могли бы вы дописать в этом коде,что бы подключения бралось с dle конфига (или не знаю откуда она берется в переменную $db) и для get_row() если для его работоспособности нужно,что то писать(версия движка 9.3).Мне не хватает знаний,что бы это сделать(
siv1987
На сайте с 02.04.2009
Offline
427
#6

Для скрипта в корне сайта, перед вашим кодом добавьте вот это


define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

define ( 'DATALIFEENGINE', true );

@include (ENGINE_DIR . '/data/config.php');
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';

если файл находится где-то в другом месте, измените путь из константы ROOT_DIR

V
На сайте с 05.01.2011
Offline
23
#7

можно как siv1987,

а можно просто require_once ENGINE_DIR . '/data/dbconfig.php';

$link=mysql_connect(DBHOST, DBUSER, DBPASS));

mysql_select_db(DBNAME, $link);

ну и дольше mysql_query и mysql_fetch_assoc

siv1987
На сайте с 02.04.2009
Offline
427
#8
veterinar:
а можно просто require_once ENGINE_DIR . '/data/dbconfig.php';

В dbconfig.php создается экземпляр класса db, без него отвалится с ошибкой.

D1
На сайте с 24.11.2011
Offline
4
#9

siv1987,Большое спасибо,помогло)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий