如何使用条件语句基于HTML表单的输入来设置Cookie?

时间:2018-12-26 10:58:39

标签: php wordpress cookies get html-form

我正在建立一个网站,该网站将根据用户输入显示帖子,而不是使用网站所有者希望访问者手动选择地理位置的地理位置。

为此,我做了一个条件语句来检查cookie是否 已经存在,如果没有,则将显示一个弹出窗口,其中包含一个表单,该表单包含用户可以单击以选择其“位置”的按钮。然后将表单发送到模板页面,并基于“ else if”语句,并设置正确的cookie值。

这种方法的问题

1。 使用此方法,表单最终出现在保存有“ $ _GET”表单输入的模板上。我想将其重定向到首页(首页)。

2。 访问者一进入网站的另一个页面,设置的cookie就会消失。

3。 我发现此方法($ _GET)非常“开放”,可用于许多攻击。

在PHP处理完表单后,我需要添加些什么以重定向到主页,以便浏览网站时cookie不会消失?

一些简单的安全措施也将不胜感激。

原始代码中有很多“ elseif”条件,但它们在原理上都是相同的,唯一的区别是它们发送,接收和设置的值。代码是一样的。这就是为什么我不在此处包含所有条件语句的原因。

用于设置cookie并检查cookie是否存在的代码。这段代码位于functions.php文件中。

<?php
//Set Cookie akr
function set_mycookie_cookie() { 

$_a = 'akr';

if(!isset($_COOKIE['tln_c_no'])) {

// set a cookie for 1 year
setcookie('tln_c_no', $_a, time()+31556926, '/'); 
///Cookie path has also been set to "/" instead of '/', but it makes no difference.

}

}

//Check for cookies function////////
function check_for_cookies() { 

// Check if cookie is already set
if(isset($_COOKIE['tln_c_no'])) {
// Do this if cookie is set 
?>
<script>
alert("Hi, and welcome back!");
</script>
<?php
} else { 

// Do this if the cookie doesn't exist 
echo do_shortcode("[sg_popup id=1]");

}
} 
add_action('wp_head', 'check_for_cookies');
?>

HTML表单(与$ _GET位于同一专用的custom-template.php上)

<form action="/custom-template.php" method="get" target="_self">
<input type="submit" name="fylket_a" value="AKR" />
</form>

PHP $ _GET代码(与HTML表单位于同一模板中)

if($_GET){


if(isset($_GET['fylke_a'])){


set_akr_cookie();


}elseif(isset($_GET['fylke_b'])){


set_akb_cookie();

}else{

echo "Ooops!";
      }
}

0 个答案:

没有答案