Събиране на информация

Msecurity

Registered
Здравейте колеги
На какъв принцип работи например кода на tyxo, който се слага в страницата и чрез нещо подобно може ли да се събира информация за php и mysql грешки в страницата в която е сложен?
Идеята ми е чрез такъв код да се събират грешките и да се изпращат в БД-то на друг сайт.
пп: не иска директна връзка към бд-то, тъи като сайта в които искам да сложи кода не е мои...
 
Ами за такъв код не ти трябват кой знай какви магии, даже е доста лесно.
Трябва ти един файл, който да инклуудваш там кадето искаш да ти сабира информацията и да праща до някаде.

файла трябва да представлява нещо такова:
PHP:
$url = $_SERVER['REQUEST_URI']; // url-a
$qs = $_SERVER['QUERY_STRING']; // get promenliwite
$referer = $_SERVER['HTTP_REFERER']; // ot koi URL idwa
$ip = $_SERVER['REMOTE_ADDR']; // ip-to mu
и сега ако искаш да ги пратиш до някой отдалечен сървър(сайт) трябва да използваш някаква функция с която да пращаш и да връща някакъв отговор за да знае скрипта какво става, а и ти същo :D
PHP:
$send = file_get_contents("http://my-site.com/vunshen_file.php?url=".$url."&query=".$qs."&ref=".$referer."&ip=".$ip);
if($send == 'gotowo')
{
  echo "infoto e prateno i prieto uspeshno :)";
}

а файла, който приема е също доста простичък.

vunshen_file.php
PHP:
$url = $_GET['url']; // url-a
$qs = $_GET['query']; // get promenliwite
$referer = $_GET['ref']; // ot koi URL idwa
$ip = $_GET['ip']; // ip-to mu


// izwedi wsichko 
// echo print_r($_GET);

// otgowor
echo "gotowo";

Можеш да усложняваш процеса колкото си искаш със всяакви връзки с БД и прочия. Това не е най-правилния начин, но все пак е пример, който можеш да разгледаш и да пробваш :)
:idea: :?:
 
joTunkiq, а как ще отделиш грешките? :)
И един въпрос - под tyho брояч не разбираме ли един js код, който се вижда в някои страници или аз съм се объркал... :shock:
Защото аз си представям нещо такова:

1. взимаш цялото съдържание на страницата (document.body.innerHTML)
2. с regex проверяваш за грешки
3. ако матчнат грешки, записваш ги в масив и ги пращаш до твоя сайт
 
Tова според мен ще отнеме една неделя да се парсне :D

Аз разбрах, че въпросния код трябва да се постави на собствения сайт в някоя страница и затова, моя грешка :(
 
joTunkiq каза:
Tова според мен ще отнеме една неделя да се парсне :D

Аз разбрах, че въпросния код трябва да се постави на собствения сайт в някоя страница и затова, моя грешка :(
А не колега, за моят сайт е лесно :D
Идеята ми е следната: ти имаш сайт и инклудваме даденият код, който да събира грешките от страницата и посещенията да речем, и ги изпраща в моята БД.
Това е като цяло.
Но другото което е че , искамд да се защитя да няма и злоупотреби от даденият потребител при който съм инклуднал файла или кода - да реши да си прваи експерименти да рови в БД-то или нещо такова - да съм защитен и аз по някакъв начин. А това с JS-то на tyxo ми се стори най удачно , но си нямам и на идея как ще се събира инфото...
 
Msecurity каза:
Но другото което е че , искамд да се защитя да няма и злоупотреби от даденият потребител при който съм инклуднал файла или кода - да реши да си прваи експерименти да рови в БД-то или нещо такова - да съм защитен и аз по някакъв начин. А това с JS-то на tyxo ми се стори най удачно , но си нямам и на идея как ще се събира инфото...

Така: http://jsfiddle.net/w768f6e3/2/
Накрая получаваш масив errData с всички намерени грешки, който можеш да го изпратиш с ajax (напр. с jquery) до твоя сървър.
[js]var txt = document.body.innerHTML;

var re = /\<br(?: \/)?\>([\d\D]+?)\<br(?: \/)?\>/g;

var errData = [];

var err;
while (err = re.exec(txt))
errData.push(err[1]);

console.log(errData);[/js]
 
Чрезз $.post и $ajax функциите ? :D :idea: Понякога може да стане объркване или да не може да се прати, затова аз стигнах до 2 начина.

1. Този js код да праща до php файл и той да праща към сървъра, да малко разтегнато, но с php по-добре може да обходиш информацията и да я обработиш.

2. Да сложиш iframe в клиентския сайт и в него да е този js код за грешките и така все едно имаш малка част от твоя сървър там. Не знам да ли ме разбра, но, на кратко js-то може да прати инфото, тъйкато е в iframe и все едно е на твоя сървър.

Това са само теории, пробвай и виж какво ще стане, не съм пробвал такова нещо до сега :D

:idea:
 
Msecurity каза:
Точно тази част ми е на много неясна - как ще стане изпращането до моят сървар :S
С jQuery е много лесно, давам ти пример от документацията - http://api.jquery.com/jquery.post/
[js]$.post( "test.php", { 'choices[]': [ "Jon", "Susan" ] } );[/js]

В конкретния случай ще бъде:
[js]// ... кодът от предишния ми пост ...
$.post("http://example.com/geterrors.php", {'errors': errData});[/js]
Като в geterrors.php имаш
PHP:
$errors = $_POST['errors'];
foreach ($errors as $err) {
// insert into table set error = $err...
}
Проблемът идва оттам, че трябва да направиш заявка от сайт exmaple1.com към example2.com, за което по принцип нямаш права. Трябва да зададеш едни хедъри access-control-*, които да го разрешат. Това е малко по-голяма тема, за която можеш да прочетеш повече тук: http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript
 

Back
Горе