2013-03-01 3 views
0

У меня есть различные ссылки на моем сайте, которые указывают на конкретную форму.Использование PHP для отслеживания ссылок

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

Я хочу сделать это, не создавая отдельную строку кода PHP для каждой ссылки, которую я создаю в. Вместо этого я хочу, чтобы какой-то PHP-код извлекал что-то из этой ссылки и, возможно, вставлял его в скрытое текстовое поле, которое получает его значение или текст из того, что я помещаю в ссылке.

Например:

  1. Пользователь нажимает на ссылку.
  2. Эта ссылка направляет их в форму.
  3. Ссылка содержит идентификатор, который активирует код PHP
  4. Когда я получаю форму, я знаю, какая ссылка была нажата, чтобы перейти к этой форме.

Я хочу, чтобы он работал со ссылками на электронные письма, которые я отправляю.

+1

Возможный дубликат: http://stackoverflow.com/questions/4662110/how-to-get-the-previous-url-using-php – Tim

ответ

0

На основе информации, содержащейся в вашем посте, это звучит как вы просто хотите отправить токен/идентификатор.

<a href="form.php?token=xxx">Goto Form</a> 

Теперь на форме вы можете захватить маркер:

$token = $_GET['token']; // use proper testing first 

Затем используйте switch или if заявления для запуска какой код нужно.

<input type="hidden" value="<?php echo $token; ?>"> 

Дополнительно:

Как //use proper testing first комментарий указывает на то, вы должны убедиться, что маркер передается корректен и продезинфицировать в случае нападения. Один из вариантов - иметь токены, хранящиеся в базе данных при сгенерировании, а затем сравниваться при проверке. Также обратите внимание на htmlspecialchars() и даже strip_tags() для дезинфекции.

Если токен не может быть проверен, вы не должны выводить и даже должны иметь предупреждающее сообщение/перенаправление, что произошла ошибка.

+0

Пожалуйста, см. Выше сообщение об атаках XSS, ваш код также уязвим для него. –

0

Для этого вы можете использовать HTTP Referer. В PHP, вы можете использовать

$referer = $_SERVER['HTTP_REFERER'] 
0

Используйте это, например:

if (isset($_SERVER['HTTP_REFERER'])) 
{ 
    $ref = $_SERVER['HTTP_REFERER']; 
} 

то в вашей форме что-то вроде:

<input type="hidden" value="<?php echo htmlspecialchars($ref, ENT_QUOTES); ?>" name="ref" /> 
+0

Что это за новый атрибут 'hidden', который вы используете? –

+0

Теперь это будет работать, если человек приходит с электронной почты? – elizur424

+0

Это уязвимо для атак XSS –

Смежные вопросы