Как создать ссылку, которая отправляет пользователя на другую страницу, которая затем перенаправляется на другую страницу, связанную со ссылкой?
Я хотел бы создать список html URLS, который, как и любой из них, будет нажат, он отправит пользователя на страницу посредника, которая спрашивает пользователя, согласны ли они с условиями. Если они это сделают, они перенаправляются на эту страницу, соответствующую той ссылке, которую они нажали. Аналогично этой диаграмме.
Link 1 ==> Intermediary Page ==> Page 1, Link 2 ==> Intermediary Page ==> Page 2, Link 3 ==> Intermediary Page ==> Page 3, Link 4 ==> Intermediary Page ==> Page 4, Link 5 ==> Intermediary Page ==> Page 5
Я не знаю, какой процесс он назвал. Я намерен использовать HTML и PHP.
Первая страница HTML
<a href="intermediary.php?q=1">Link 1</a> <a href="intermediary.php?q=2">Link 2</a> <a href="intermediary.php?q=3">Link 3</a> <a href="intermediary.php?q=4">Link 4</a> <a href="intermediary.php?q=5">Link 5</a>
intermediary.php
<?php $link = (int)$_GET["q"]; ?> <a href="page<?=$link?>.html">I agree to the terms and conditions</a>
Вы можете использовать переменные GET в URL-адресе. например, http://www.mysite.com/intermediary-page?page=page1
Таким образом, это будет ссылка на страницу посредника. Затем на этой странице вы будете иметь функцию, которая смотрит на последнюю часть page=page1.
URL page=page1.
Затем эта функция перенаправляет пользователя на правильную страницу.
HTML
<a href="inter.php?target=1">Some page</a> <a href="inter.php?target=2">Some page</a> <a href="inter.php?target=something_else">Some page</a>
PHP: inter.php
<?php session_start(); $link='#'; switch($_GET['target']) { case 1: $link = "http://nexttarget.com"; break; case 2: $link = "http://nexttarget2.com"; break; case "something_else": $link = "http://nexttarget3.com"; break; } $_SESSION['prev_link'] = "http://source_url"; ?> <form action="<?php echo $link; ?>" method="post"> <p>Your T&C here</p> <input type="checkbox" name="agree" value="agreed" /> <input type="submit" value="go" /> </form>
для<?php session_start(); $link='#'; switch($_GET['target']) { case 1: $link = "http://nexttarget.com"; break; case 2: $link = "http://nexttarget2.com"; break; case "something_else": $link = "http://nexttarget3.com"; break; } $_SESSION['prev_link'] = "http://source_url"; ?> <form action="<?php echo $link; ?>" method="post"> <p>Your T&C here</p> <input type="checkbox" name="agree" value="agreed" /> <input type="submit" value="go" /> </form>
PHP: target.php
<?php session_start(); if( !isset($_POST['agreed']) || $_POST['agreed'] != 'agreed' ){ header("Location: ".$_SESSION['prev_link']); exit; } ?> Your target page content here
EDIT: Отредактировано, чтобы показать страницу T & C вместо прямого перенаправления.
РЕДАКТИРОВАТЬ 2 : теперь промежуточная страница будет перенаправляться автоматически после согласования / щелчка на флажке.
PHP: inter.php
<?php session_start(); $link='#'; switch($_GET['target']) { case 1: $link = "http://nexttarget.com"; break; case 2: $link = "http://nexttarget2.com"; break; case "something_else": $link = "http://nexttarget3.com"; break; } $_SESSION['prev_link'] = "http://source_url"; ?> <form action="<?php echo $link; ?>" method="post" id="tc_form" > <p>Your T&C here</p> <input type="checkbox" name="agree" value="agreed" onclick="javascript: this.parentNode.submit();" id="check" /> <label for="check">I agree to the T&C.</label> </form>
для<?php session_start(); $link='#'; switch($_GET['target']) { case 1: $link = "http://nexttarget.com"; break; case 2: $link = "http://nexttarget2.com"; break; case "something_else": $link = "http://nexttarget3.com"; break; } $_SESSION['prev_link'] = "http://source_url"; ?> <form action="<?php echo $link; ?>" method="post" id="tc_form" > <p>Your T&C here</p> <input type="checkbox" name="agree" value="agreed" onclick="javascript: this.parentNode.submit();" id="check" /> <label for="check">I agree to the T&C.</label> </form>
Первая страница:
<a href="intermediary.php?next_page=somepage.php">link to Intermediary Page</a>
Промежуточная страница:
<?php $next_page = $_REQUEST["next_page"]; header("Location: " . $next_page); ?>
ваша HTML-ссылка:
<a href="/links.php?page=1">Link 1</a> <a href="/links.php?page=2">Link 1</a>
ваш PHP-код в links.php
:
<?php $page = !empty($_REQUEST['page']) ? $_REQUEST['page'] : null; if (!empty($page)) { switch ($page) { case 1: header('Location: abc.php'); break; case 2: header('Location: xyz.php'); break; } }
Другие варианты:
$pages[1] = 'abc.php'; $pages[2] = 'xyz.php'; header('Location: ' . $pages[$page]);
Примечание. Прежде чем использовать его, попытайтесь защитить переменную $page
.
Подход, который используется много, выглядит следующим образом:
intermediary-page.php?proceedTo=some/url/to-go-next.php
На странице посредника-страницы.html (или php или любой другой) вы выполняете необходимые проверки и перенаправляете пользователя на URL-адрес, доступный в переменной proceedTo
GET.
После этого это зависит от ваших требований. Вам нужна безопасность или убедитесь, что пользователь принял условия и т. Д.? Затем вы должны выполнить дополнительные проверки на каждой странице:
Ссылка 1 -> Страница 1 (проверьте, принял ли пользователь условия уже? No? Then 🙂 -> посредник? ContinueTo = page1 -> (попросите пользователя принять принятое? Тогда 🙂 -> Страница 1 (у пользователя есть согласился с условиями сейчас? да? тогда 🙂 -> оставайся здесь …
Преимущества такого подхода:
href="intermediary.php?next=abc.php"
, вместо этого просто перейти с простым href="abc.php"
который будет обрабатывать перенаправление.