Как в рекламном расширении для браузера, сделать редирект?
Подскажите, как в в этом рекламном расширении для браузера после решении капчи сделать редирект?
В этом коде:
<?php $el_id = 'aHdgsijJ124'; $height = 180; $width = 300; /*height: <?php echo $height; ?>px;*/ if(!empty($user) && empty($r)){ ?> <html> <head> <title>Реклама</title> <meta name="robots" content="noindex,nofollow"> <meta content="text/html;" charset="UTF-8" http-equiv="Content-Type"> </head> <body> <script> document.addEventListener('DOMContentLoaded',function(){ top.postMessage({<?php echo $el_id; ?>_delview:'1'}, '*'); }); </script> </body> </html> <?php } else { ?> <html> <head> <title>Реклама</title> <base href="<?php echo PROT."{$_SERVER['SERVER_NAME']}/" ?>" /> <meta name="robots" content="noindex,nofollow"> <meta content="text/html;" charset="UTF-8" http-equiv="Content-Type"> <link rel="stylesheet" type="text/css" href="/assets/css/style_addon.css?id=115" /><!-- почистить --> <style> body,html{padding:0;margin:0;} .main{width: <?php echo $width; ?>px;background: #fff;overflow: hidden;} .title{background: #E17F1F;display: table;width: 100%;} .btn.btn-rcapt{font-size: 15px;padding: 0 5px;font-weight: bold;letter-spacing: 1px;margin-left: 5px;} .btnclose{width: 30px;background: #e03232; color: #fff;} .btnclose button{display: block;width: 100%;height: 100%;} .gosite{font-size: 12px; color: #47A447;} </style> </head> <body> <?php if(!empty($user)){ $_url = (mb_strlen($r['Url']) > 40) ? (mb_substr($r['Url'], 0, 40).' ...') : $r['Url']; ?> <div class="main" id="addon_main"> <div class="title"> <div style="padding: 5px 10px;" id="view_panel_load" class="cell"> <span id="text_wait">Подождите... &nbsp; <span class="timer"><?php echo $r['Price']; ?></span></span> <div style="display: none;" id="capt" title="Решите капчу для вознаграждения!"> <img style="width: 55px;" src="<?php echo $capt_img; ?>" alt="" /> <?php foreach($Capt as $val){ echo "<button type="button" onclick="return click_ok('{$val}');" class="btn btn-xs btn-rcapt btn-default">{$val}</button>"; } ?> </div> </div> <div class="cell btnclose"><button type="button" title="Перейти на сайт" class="btn-none" onclick="addon_delview('');">х</button></div> </div> <div style="padding: 10px 10px 5px 15px;"> <button type="button" title="Перейти на сайт" class="btn-link" onclick="addon_gosite('<?php echo $r['Url']; ?>');" data-addon_gosite=""><strong><?php echo $r['Title']; ?></strong></button> <p style="font-size: 14px;"><?php echo $r['Body']; ?></p> <div><button title="Перейти на сайт" type="button" class="btn-link gosite" onclick="addon_gosite('<?php echo $r['Url']; ?>');" data-addon_gosite=""><?php echo $_url; ?></button></div> </div> </div> <script src="/assets/js/jqery.3.4.1.js"></script> <script> var url = '<?php echo PROT."{$_SERVER['SERVER_NAME']}/earn/addon" ?>'; function addon_gosite(uri) { top.postMessage({<?php echo $el_id; ?>_gosite:uri}, '*'); } function addon_delview(go) { let data = new FormData(); data.append('addonkey', '<?php echo $user['AddonKey']; ?>'); data.append('delete_view', <?php echo $r['Id']; ?>); if(navigator.sendBeacon) navigator.sendBeacon(url, data); else $.ajax({contentType: false,processData: false,url:url,type:"POST",data: data}); var dat = {<?php echo $el_id; ?>_delview:'1'}; if(go) dat.gosite = go; top.postMessage(dat, '*'); } $(document).ready(function(){ var h = $('#addon_main').height(); $('#addon_main').attr('style', 'height:'+h+'px'); top.postMessage({<?php echo $el_id; ?>_load: h}, '*'); var sec = <?php echo $r['Price']; ?>; var timer = $('.timer'); timerId = setTimeout( function tick() { if((sec+50) < 1){ clearTimeout(timerId); addon_delview(''); } else{ sec--; if(sec > 0){ timer.html(sec); } else if(sec === 0){ $('#text_wait').hide(); $('#capt').show(); } timerId = setTimeout(tick, 1000); } }, 1000 ); <?php /**Здесь можно вставить код метрики**/ ?> }); function click_ok(c){ $('#capt').html('Подождите ...'); $.ajax({ url: url, dataType: 'json', type: "POST", data: {click_ok:<?php echo $r['Id']; ?>,captcha:c,addonkey:'<?php echo $user['AddonKey']; ?>'}, success: function(d){ var t = parseInt(d.status); if(t > 0){ $('#view_panel_load').html('<strong>Просмотр засчитан!</strong>'); $('#view_panel_load').addClass('text-success'); var timerId = setTimeout( function () { addon_delview(''); } , 3000 ); } else{ $('#view_panel_load').html('<strong>'+d.mess+'</strong>'); //$('#view_panel_load').addClass('text-danger'); var timerId = setTimeout( function () { addon_delview(''); } , 3000 ); } }, error: function(){ $('#view_panel_load').html('<strong>Неизвестная ошибка</strong>'); //$('#view_panel_load').addClass('text-danger'); var timerId = setTimeout(function () { addon_delview(''); }, 3000); } }); return true; } </script> <?php } else { ?> <div style="width: 300px;height: 150px;background: #fff;overflow: hidden;"> <div style="background: #b2ceec;display: table;width: 100%;"> <div style="padding: 5px 10px;" class="cell">Ошибка авторизации</div> <div style="width: 30px;background: #e03232; color: #fff;" class="cell"><button style="display: block;width: 100%;height: 100%;" class="btn-none" onclick="addon_delview('');">х</button></div> </div> <div style="padding: 10px;"> <p><strong>Вы не авторизированы на сайте!</strong></p> <p style="font-size: 14px;">Откройте окно расширения, и выполните вход, что бы начать зарабатывать.</p> </div> </div> <script> function addon_delview('') { top.postMessage({<?php echo $el_id; ?>_delview:'1'}, '*'); } document.addEventListener('DOMContentLoaded',function(){ top.postMessage({<?php echo $el_id; ?>_load:'1'}, '*'); }); </script> <?php } ?> </body> </html> <?php } |
<?php $el_id = 'aHdgsijJ124'; $height = 180; $width = 300; /*height: <?php echo $height; ?>px;*/ if(!empty($user) && empty($r)){ ?> <html> <head> <title>Реклама</title> <meta name="robots" content="noindex,nofollow"> <meta content="text/html;" charset="UTF-8" http-equiv="Content-Type"> </head> <body> <script> document.addEventListener('DOMContentLoaded',function(){ top.postMessage({<?php echo $el_id; ?>_delview:'1'}, '*'); }); </script> </body> </html> <?php } else { ?> <html> <head> <title>Реклама</title> <base href="<?php echo PROT."{$_SERVER['SERVER_NAME']}/" ?>" /> <meta name="robots" content="noindex,nofollow"> <meta content="text/html;" charset="UTF-8" http-equiv="Content-Type"> <link rel="stylesheet" type="text/css" href="/assets/css/style_addon.css?id=115" /><!-- почистить --> <style> body,html{padding:0;margin:0;} .main{width: <?php echo $width; ?>px;background: #fff;overflow: hidden;} .title{background: #E17F1F;display: table;width: 100%;} .btn.btn-rcapt{font-size: 15px;padding: 0 5px;font-weight: bold;letter-spacing: 1px;margin-left: 5px;} .btnclose{width: 30px;background: #e03232; color: #fff;} .btnclose button{display: block;width: 100%;height: 100%;} .gosite{font-size: 12px; color: #47A447;} </style> </head> <body> <?php if(!empty($user)){ $_url = (mb_strlen($r['Url']) > 40) ? (mb_substr($r['Url'], 0, 40).' ...') : $r['Url']; ?> <div class="main" id="addon_main"> <div class="title"> <div style="padding: 5px 10px;" id="view_panel_load" class="cell"> <span id="text_wait">Подождите... &nbsp; <span class="timer"><?php echo $r['Price']; ?></span></span> <div style="display: none;" id="capt" title="Решите капчу для вознаграждения!"> <img style="width: 55px;" src="<?php echo $capt_img; ?>" alt="" /> <?php foreach($Capt as $val){ echo "<button type="button" onclick="return click_ok('{$val}');" class="btn btn-xs btn-rcapt btn-default">{$val}</button>"; } ?> </div> </div> <div class="cell btnclose"><button type="button" title="Перейти на сайт" class="btn-none" onclick="addon_delview('');">х</button></div> </div> <div style="padding: 10px 10px 5px 15px;"> <button type="button" title="Перейти на сайт" class="btn-link" onclick="addon_gosite('<?php echo $r['Url']; ?>');" data-addon_gosite=""><strong><?php echo $r['Title']; ?></strong></button> <p style="font-size: 14px;"><?php echo $r['Body']; ?></p> <div><button title="Перейти на сайт" type="button" class="btn-link gosite" onclick="addon_gosite('<?php echo $r['Url']; ?>');" data-addon_gosite=""><?php echo $_url; ?></button></div> </div> </div> <script src="/assets/js/jqery.3.4.1.js"></script> <script> var url = '<?php echo PROT."{$_SERVER['SERVER_NAME']}/earn/addon" ?>'; function addon_gosite(uri) { top.postMessage({<?php echo $el_id; ?>_gosite:uri}, '*'); } function addon_delview(go) { let data = new FormData(); data.append('addonkey', '<?php echo $user['AddonKey']; ?>'); data.append('delete_view', <?php echo $r['Id']; ?>); if(navigator.sendBeacon) navigator.sendBeacon(url, data); else $.ajax({contentType: false,processData: false,url:url,type:"POST",data: data}); var dat = {<?php echo $el_id; ?>_delview:'1'}; if(go) dat.gosite = go; top.postMessage(dat, '*'); } $(document).ready(function(){ var h = $('#addon_main').height(); $('#addon_main').attr('style', 'height:'+h+'px'); top.postMessage({<?php echo $el_id; ?>_load: h}, '*'); var sec = <?php echo $r['Price']; ?>; var timer = $('.timer'); timerId = setTimeout( function tick() { if((sec+50) < 1){ clearTimeout(timerId); addon_delview(''); } else{ sec--; if(sec > 0){ timer.html(sec); } else if(sec === 0){ $('#text_wait').hide(); $('#capt').show(); } timerId = setTimeout(tick, 1000); } }, 1000 ); <?php /**Здесь можно вставить код метрики**/ ?> }); function click_ok(c){ $('#capt').html('Подождите ...'); $.ajax({ url: url, dataType: 'json', type: "POST", data: {click_ok:<?php echo $r['Id']; ?>,captcha:c,addonkey:'<?php echo $user['AddonKey']; ?>'}, success: function(d){ var t = parseInt(d.status); if(t > 0){ $('#view_panel_load').html('<strong>Просмотр засчитан!</strong>'); $('#view_panel_load').addClass('text-success'); var timerId = setTimeout( function () { addon_delview(''); } , 3000 ); } else{ $('#view_panel_load').html('<strong>'+d.mess+'</strong>'); //$('#view_panel_load').addClass('text-danger'); var timerId = setTimeout( function () { addon_delview(''); } , 3000 ); } }, error: function(){ $('#view_panel_load').html('<strong>Неизвестная ошибка</strong>'); //$('#view_panel_load').addClass('text-danger'); var timerId = setTimeout(function () { addon_delview(''); }, 3000); } }); return true; } </script> <?php } else { ?> <div style="width: 300px;height: 150px;background: #fff;overflow: hidden;"> <div style="background: #b2ceec;display: table;width: 100%;"> <div style="padding: 5px 10px;" class="cell">Ошибка авторизации</div> <div style="width: 30px;background: #e03232; color: #fff;" class="cell"><button style="display: block;width: 100%;height: 100%;" class="btn-none" onclick="addon_delview('');">х</button></div> </div> <div style="padding: 10px;"> <p><strong>Вы не авторизированы на сайте!</strong></p> <p style="font-size: 14px;">Откройте окно расширения, и выполните вход, что бы начать зарабатывать.</p> </div> </div> <script> function addon_delview('') { top.postMessage({<?php echo $el_id; ?>_delview:'1'}, '*'); } document.addEventListener('DOMContentLoaded',function(){ top.postMessage({<?php echo $el_id; ?>_load:'1'}, '*'); }); </script> <?php } ?> </body> </html> <?php }
Дополнительно:
Ответы:
Вы в ответ на AJAX запрос возвращаете данные? Ну вот и вставьте туда нужный URL, а в скрипте рядом с addon_delview() сделайте window.location.href = d.url;
P.S. Видимо код написан не вами, раз такое наиэлементарнейшее действие тут спрашиваете.
- А куда именно там несколько addon_delview !?
А рядом это ниже или с боку?!
Так?!var timerId = setTimeout( function () { addon_delview(''); window.location.href = d.url; } , 3000 );
var timerId = setTimeout( function () { addon_delview(''); window.location.href = d.url; } , 3000 );
- Thomek, в том, где выводится текст "Просмотр защитан!".
Да, именно так. - AUser0, Не работала, поэтому я как обычно импровизировал и заработала вот таким образом.
addon_delview(window.location.href = '<?php echo $r['url']; ?>');
addon_delview(window.location.href = '<?php echo $r['url']; ?>');
- Thomek, а вот это - зря. addon_delview() используется и при решении капчи, и при _не_решении. Кроме того, надо передавать URL внутрь фукции, а не присваивать его переменной. Такое присвоение не даст выполниться самой функции, заставит браузер сразу перейти на указанный URL.
И второй момент, вы сразу даёте URL пользователю. Можно просто выдернуть URL из исходников страницы, и перейти на него, в обход капчи.
- AUser0, Так нет редиректа, не работает.
addon_delview(''); window.location.href = d.url;
addon_delview(''); window.location.href = d.url;
- Thomek, а вы сам URL в ответе на запрос проверки капчи - отправляете?
В скрипте проверки капчи, при неудачном прохождении капчи клиенту возвращается JSON с {status: 0, mess: "сообщение об ошибке капчи"}. А в случае правильного решения капчи возвращается {status: 1, .....}, вот сюда и нужно списать url: "http.....".
- AUser0, А как отправлять, что в какую строку добавить?!
- Thomek, ну так смотрите скрипт, который обрабатывает решение капчи (и отвечает, правильно или не правильно решена). Этот скрипт возвращает "результат", вот его и нужно поправить, вставив туда нужный URL.
- AUser0, Сюда что ли?!
data: {url: "<?php echo $r['url']; ?>", ...}, - Thomek, если это про код, приведённый в самом вопросе - то нет, это AJAX запрос к серверу, проверка правильности решения капчи.
Нужно НА СЕРВЕРЕ найти PHP скрипт, который обрабатывает этот AJAX запрос, и ОТВЕЧАЕТ результатом "капча совпала" или 'капча не совпала".
Я так понимаю, вы тыкаете в какой-нибудь похожий текст скрипта, не понимая, что именно он делает?
- AUser0, Да многое в php непонятно, по этому спрашиваю!
- Thomek, как это делается у вас - я не знаю, исходников ваших скриптов никогда не видел, поэтому не могу подсказывать конкретнее, уж извините великодушно!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для создания редиректа в рекламном расширении для браузера можно использовать JavaScript. Ниже приведен пример кода на JavaScript, который реализует редирект:
window.location.href = "http://example.com";
Этот код просто перенаправляет пользователя на страницу "http://example.com". Вы можете заменить этот URL на любой другой, на который хотите перенаправить пользователя.
Если вы хотите добавить небольшую задержку перед редиректом, вы можете использовать функцию setTimeout, как показано ниже:
setTimeout(function() { window.location.href = "http://example.com"; }, 3000); // Задержка в 3 секунды (3000 миллисекунд)
В этом примере редирект произойдет через 3 секунды после загрузки страницы.
Не забывайте, что использование редиректов в рекламных расширениях должно быть согласовано с правилами и политикой платформы, на которой вы планируете разместить свое расширение. Неконтролируемое использование редиректов может привести к блокировке вашего расширения или вашего аккаунта.