【问题标题】:"Thank you" page should not show when some one types the URL, How would you do this?当有人键入 URL 时,“谢谢”页面不应该显示,你会怎么做?
【发布时间】:2012-12-18 04:16:44
【问题描述】:

我有一个网站。如果有人发布查询,它会转到感谢页面 www.legasy.com/thankyou/ URL 将是这样的。当我分析网站管理员工具时,它显示的更多是感谢而不是询问。

在填写表单字段后,验证该值并将其插入表中。它将转到感谢页面。但是,如果有人键入 url,它不应该转到感谢页面。我可以为此做些什么?

下面是我的代码

HTML

<form>
 <table>
    <tr><td>Name</td> 
        <td><input type="text" name="buyer_name" id="buyer_name"  size="31" value="" /></td>
     </tr>
    <tr> <td>Email</td> 
         <td><input type="text" name="buyer_email" id="buyer_email"  size="31" value="" /></td>
    </tr>
    <tr> <td>Contact No</td>
         <td>   <input type="text" name="buyer_mobile" id="buyer_mobile" size="31" value=""/></td>
    </tr>
    <tr>                                        
         <td colspan="2" style="text-align:center;">
            <div id="post_enquiry"><img src="./images/for_more_det_click.gif" onclick="postBuyerEnquiry();" style="cursor:pointer;"/></div>
          </td>
    </tr>
 </table>
</form>

Javascript

<script type="text/javascript" src="../scripts/jquery.min.js"></script>
<script type="text/javascript" language="javascript">

function postBuyerEnquiry()
{

    var nametxt = document.getElementById('buyer_name').value;
    var emailtxt = document.getElementById('buyer_email').value;
    var phonetxt = document.getElementById('buyer_mobile').value;
    output ="text";

  if(nametxt=='')
  {
      alert("Please Enter Your Name");
      return false; 
  } 
  else if(emailtxt=='')
  {
      alert("Please Enter Your Mail Id");
      return false;
  }

     else if(phonetxt=='')
     {
          alert("Please Enter Phone Number");
          return false; 
     }
    process = 'loadEvent';
        output = 'text';
      url = "test4.php";        
    $.get(
            url,
            {'act':'SBQF', 
             'name':nametxt, 
             'email':emailtxt,
             'phone':phonetxt,
            },
            function(responseText)
            {
                 window.location.href = '/legasy.com/thankyou/';
            },
            "html"
        );

}

PHP

<?php
if ( !empty($_POST['act']) )
{
    $act        =   formatstring($_POST['act']);
}

switch( $act )
{
    case "SBQF":

         $strName         = $_GET['name'];
         $strEmail        = $_GET['email'];
         $strPhone        = $_GET['phone'];
             //Inserting values into the database   
         exit;  
     break;
}
?>

如果有人键入 URL (www.legasy.com/thankyou/),它想转到错误页面

【问题讨论】:

    标签: php javascript html seo


    【解决方案1】:

    将其他所有内容包裹在 else

    else { // Give this here
        process = 'loadEvent';
            output = 'text';
          url = "test4.php";        
        $.get(
                url,
                {'act':'SBQF', 
                 'name':nametxt, 
                 'email':emailtxt,
                 'phone':phonetxt,
                },
                function(responseText)
                {
                     window.location.href = '/legasy.com/thankyou/';
                },
                "html"
            );
        return false;
    }
    

    在任何时候,这都会被执行。另外,在 else 部分的末尾也提供一个return false;

    访问被拒绝的东西

    如果您不希望用户直接访问www.legasy.com/thankyou/ 页面,您可以设置session。当你做成功的事情时,你可以这样设置会话。

    session_start();
    if (condition on success)
        $_SESSION["thankyou"] = true;
    

    www.legasy.com/thankyou/ 页面中,

    session_start();
    if (!isset($_SESSION["thankyou"]) && $_SESSION["thankyou"] != true)
    {
        header('Location: /error/');
        die();
    }
    

    【讨论】:

    • 对不起,您的回答超时了,对不起
    • 猜猜你可以继续了,现在! :)
    【解决方案2】:

    我会考虑在thankyou 页面上使用$_SESSION 值。这样,如果有人手动输入 URL 而之前没有 $_SESSION['visited'](visited 只是一个关联值,您不必使用它),您可以使用 header() 将他们重定向到您需要的任何地方。

    【讨论】:

      【解决方案3】:
      if ( !empty($_POST['act']) )
      {
          $act        =   formatstring($_POST['act']);
      }
      else {
          header('Location: www.legacy.com/error');
      }
      

      请注意,仍然可以通过欺骗 POST 值访问thankyou 页面。

      【讨论】:

      • 退出;在 header() 之后大喊大叫,否则之后的代码将不必要地被处理,如果有人想欺骗 POST,他们也可以很容易地让浏览器拒绝 HTTP 重定向。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 2017-12-15
      • 2012-06-26
      相关资源
      最近更新 更多