Как в рекламном расширении для браузера, сделать редирект?

Ссылка скопирована
PHP
1 ответ

Подскажите, как в в этом рекламном расширении для браузера после решении капчи сделать редирект?

В этом коде:

<?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">Подождите...   <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">Подождите...   <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, как это делается у вас - я не знаю, исходников ваших скриптов никогда не видел, поэтому не могу подсказывать конкретнее, уж извините великодушно!
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для создания редиректа в рекламном расширении для браузера можно использовать JavaScript. Ниже приведен пример кода на JavaScript, который реализует редирект:

window.location.href = "http://example.com";

window.location.href = "http://example.com";

Этот код просто перенаправляет пользователя на страницу "http://example.com". Вы можете заменить этот URL на любой другой, на который хотите перенаправить пользователя.

Если вы хотите добавить небольшую задержку перед редиректом, вы можете использовать функцию setTimeout, как показано ниже:

setTimeout(function() {
    window.location.href = "http://example.com";
}, 3000); // Задержка в 3 секунды (3000 миллисекунд)

setTimeout(function() { window.location.href = "http://example.com"; }, 3000); // Задержка в 3 секунды (3000 миллисекунд)

В этом примере редирект произойдет через 3 секунды после загрузки страницы.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно