Как установить файл cookie после того, как пользователь согласился с формой условий? - PullRequest
0 голосов
/ 05 апреля 2011

Мой вопрос: как мне установить cookie-файл после того, как пользователь согласился со страницей "Условия и положения"?Я собирался добавить этот код

<?php //Calculate 30 days in the future    
//seconds * minutes * hours * days + current time    
$inOneMonth = 60 * 60 * 24 * 30 + time(); 
setcookie('lastVisit', date("G:i - m/d/y"), $inOneMonth); 
?>

к приведенному ниже коду, но в зависимости от того, где я его разместил, я либо ломаю JavaScript, либо при обновлении страницы устанавливаются файлы cookie (хотя условиясогласились).

<?php
// Get the user's ultimate destination
$dest = $_GET['dest'];
// Show the terms and conditions page
//check for cookie
if(isset($_COOKIE['lastVisit']))
    $visit = $_COOKIE['lastVisit']; /* Add redirect later   document.location.href='http://<?php echo $dest; ?>';   add redirect code later*/
else
    echo "No cookies present-remove this msg later";
?>

<HTML>
  <HEAD>
    <TITLE>User Agreement</TITLE>
    <script language="javascript">

function valbutton(thisform) {
// validate myradiobuttons
  myOption = -1;
  for (i=thisform.myradiobutton.length-1; i > -1; i--) {
    if (thisform.myradiobutton[i].checked) {
      myOption = i;
    }
  }
  if (myOption == -1) {
   alert("You must choose either YES or NO");
   return false;
  }
  if (myOption == 0) {
   alert("You must agree to the Terms and Conditions to download");
   return false;
  }
  thisform.submit(); // this line submits the form after validation
}
</script>

  </HEAD>
  <BODY>
    <H1> Terms and Conditions </H1>
    <P>Before downloading you must agree to be bound by masking tape</P>
<form name="myform" action="http://<?php echo $dest; ?>"> 
<input type="radio" value="1st value" name="myradiobutton" />NO<br />
<input type="radio" value="2nd value" name="myradiobutton" />YES<br />
<input type="submit" name="submitit" onclick="valbutton(myform);return false;" value="ANSWER" />
</form>

  </BODY>
</HTML>

Я уверен, что это простой вопрос, но я действительно не знаю, что я делаю.Любые советы очень ценятся.

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

и еще одна вещь ... посмотрите на ваш вызов setcookie:

setcookie('lastVisit', date("G:i - m/d/y"), $inOneMonth); 

, если считаете, что правильный путь -

setcookie('lastVisit', date("G:i - m/d/y", $inOneMonth)); 
0 голосов
/ 05 апреля 2011

Лучшим подходом для этого было бы оценить / проверить входные данные также на стороне сервера. Обычно вам НУЖНО сделать это в любом случае по соображениям безопасности, проверка Javascript предназначена только для удобства пользователя, а не для безопасности! В вашем случае нет реального пользовательского ввода и, следовательно, прямой угрозы.

Проверьте ввод, как вы обычно делаете с PHP, открыв массив $ _POST и проверив, при необходимости, различные поля формы. Когда вся цепочка проверок будет успешной, установите cookie!

...