我的“谢谢”页面上的单选按钮没有得到正确的值。
我希望在我的用户结束付款后,他会被重定向到感谢页面,填写表格中的一些值会在那里发布。我在form.php文件中使用此脚本存档:
<script type="text/javascript">
function CookieTheFormValues() {
var cookievalue = new Array();
var fid = document.getElementById(FormID);
for (i = 0; i < fid.length; i++)
{
var n = escape(fid[i].name);
if( ! n.length ) { continue; }
var v = escape(fid[i].value);
cookievalue.push( n + '=' + v );
}
var exp = "";
if(CookieDays > 0)
{
var now = new Date();
now.setTime( now.getTime() + parseInt(CookieDays * 24 * 60 * 60 * 1000) );
exp = '; expires=' + now.toGMTString();
}
document.cookie = CookieName + '=' + cookievalue.join("&") + '; path=/' + exp;
return true;
}
</script>
而不是将此脚本放在感谢页面上:
<?php
$CookieName = "PersonalizationCookie";
$Personal = array();
foreach( explode("&",@$_COOKIE[$CookieName]) as $chunk )
{
list($name,$value) = explode("=",$chunk,2);
$Personal[$name] = htmlspecialchars($value);
}
?>
到目前为止,我从其他输入中得到了所有正确的值,但是从无线电我总是得到类名值的最后一个?这意味着,例如,如果我有这个代码:
<input type="radio" name="emotion" id="basi" value="Basic Pack" />
<input type="radio" name="emotion" id="deli" value="Deluxe Pack" />
<input type="radio" name="emotion" id="premi" value="Premium Pack"/>
在感谢页面中,我将此代码用于例如
Thank you for chosing <?php echo(@$Personal["emotion"]); ?>
即使我检查基本或豪华收音机为什么会这样,我总是得到这个Thank you for choosing Premium Pack
?
答案 0 :(得分:1)
你的循环:
for (i = 0; i < fid.length; i++)
{
var n = escape(fid[i].name);
if( ! n.length ) { continue; }
var v = escape(fid[i].value);
cookievalue.push( n + '=' + v );
}
将所有三个无线电都推送到您的cookie值。每个都会覆盖前一个,因为它们具有相同的名称。因此,最终您将“Premium Pack”的值映射到“情感”名称。您需要检查是否在推动val之前选择了收音机,可能类似于:
for (i = 0; i < fid.length; i++)
{
var n = escape(fid[i].name);
if( ! n.length ) { continue; }
var v = escape(fid[i].value);
// Only push in the selected emotion radio button
if (n == "emotion") {
if (fid[i].checked == true) cookievalue.push( n + '=' + v );
}
else cookievalue.push( n + '=' + v );
}