4

フォームのサンキュー ページで以下を使用して、5 秒でフォームにリダイレクトし、名前フィールドに値を適切に事前入力しました。

<script> setTimeout(function() {location.href = '<?php echo $var3['returnurl']  ?>?fullName[first]=<?php echo $var1['first'] ?>&fullName[last]=<?php echo $var2['last']  ?>'}, 5000); </script>

returnurl フィールドが https:// url になるまでうまく機能します。次に、リダイレクトを実行しようとするループでサンキュー ページにとどまります。関連する iframe はありません .... top.location.href を試しました ... ダメです ... location.replace も試しました

https:// URL へのリダイレクトに影響を与える可能性のあるコードの制限を誰でも確認できますか。

phpファイルのコード...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no"> 
  <meta name="HandheldFriendly" content="True">
  <meta name="MobileOptimized" content="width">

    <title>Thankyou</title>

    <style type="text/css">

body 
{
margin: 0px;
padding: 0px;
background: #fff;
font-family: Arial;
}

#message
{
position: absolute;
left: 50%;
width: 320px;
margin-left: -160px;
}

</style>

<?php
$answers = $_POST;
$var1 = array("first" => $answers[fullname][0]);
$var2 = array("last" => $answers[fullname][1]);
$var3 = array("returnurl" => $answers[returnurl]);
 ?> 

</head>

<body>

<script>
  setTimeout(function() {location.href = '<?php echo $var3['returnurl']  ?>?fullName[first]=<?php echo $var1['first'] ?>&fullName[last]=<?php echo $var2['last']  ?>'}, 5000); // this duration is in millisecs
</script>

<div id="message">

<p>&nbsp;</p>
<div style="text-align: center;"><h1>Thank You!</h1></div>
<div style="text-align: center;">Your submission has been received.</div>
<div style="text-align: center;">We're most grateful</div>
<div style="text-align: center;">&nbsp;</div>
<div style="text-align: center;"><img src="http://www.mazeguy.net/bigsmilies/thumbsup.gif"></img></div>
<div style="text-align: center;">&nbsp;</div>
<div style="text-align: center;">You will return in 5 seconds</div><br />

</body>
</html>

これが送信の結果です...サンキューページのソースが表示されます...ええ、安全なページのURLが渡されていません....

<script>
setTimeout(function() {location.href = '?fullName[first]=&fullName[last]='}, 5000); //     this duration is in millisecs
</script>
4

1 に答える 1

0

Ajax 経由でフォームを送信することを検討しましたか? ユーザーがフォーム送信ページから離れることはありません。確認メッセージとともにモーダルを表示するだけです。これは、ユーザーをリダイレクトするよりも簡単に思えます。ユーザーエクスペリエンスも向上する可能性があります。

フォームに「submit」クラスの送信ボタンがあるとします。jQuery では、次のようなことができます。

$(function() {
    $('body').on('click', '.submit', function(event) {
        event.preventDefault();
        var target = event.currenTarget;
        var form = $(target).closest('form');
        var action = $(form).attr('action');
        $.post(action, form.serialize())
            .done(function() {
                alert('Thanks for your submission!');
            })
            .fail(function() {
                alert('Oops! Something went wrong... PLease try again.');
            });
    });   
});

Bootstrap JS をチェックしてください。彼らはあなたが使用できるいくつかの気の利いたモーダルを持っています。

それが役立つことを願っています。

于 2013-08-06T02:37:03.583 に答える