如何将url变量从1页传递到另一页?

时间:2013-07-25 16:27:02

标签: php forms variables

我目前在我的网站上运行了一个推荐脚本,但我遇到了一个问题,不幸的是我不知道足够的PHP来解决它。

该脚本从url获取变量'ref',但是当它们到达运行脚本的页面时我没有该变量。

所以这个过程是

homepage.com/?ref=XXXXX
>user clicks on script page
homepage.com/script.php

我需要它

homepage.com/?ref=XXXXX
>user clicks on script page
>homepage passes variable to script page
homepage.com/script.php?ref=XXXXX

我的主页上没有运行任何代码。脚本页面上的代码是

if(isset($_COOKIE['ref_link'])){
    $ref = $_COOKIE['ref_link'];
}else{
    $ref = rand(1,9).date('Y').date('m').date('d').date('h').date('i').date('s');
    $ref = rand_uniqid($ref);
    setcookie("ref_link",$ref, 9999999999);  

    $insert = "insert into cookie_ref(REF_val) values('".$ref."');";
    @mysql_query($insert);

}
$error = ''; //used for checking if ip has been re used
if(isset($_GET['ref'])){
    $getip = "select * from cookie_ref_ips where IP_address = '".getRealIpAddr()."' and REF_val = '".$_GET['ref']."'";
    $getip_query = @mysql_query($getip);
    if(@mysql_num_rows($getip_query) < 1){
    $update = "update cookie_ref set REF_hits = REF_hits + 1 where REF_val = '".$_GET['ref']."'";
    @mysql_query($update);

    $insertip = "insert into cookie_ref_ips(IP_address,REF_val) values('".getRealIpAddr()."','".$_GET['ref']."')";
    @mysql_query($insertip);
    }else{
        $error = "<h1>You already used this refferal link!</h1>";
    }
}

这比我想象的要复杂一点,因为主页正在运行wordpress,因为脚本页面是一个调用wordpress标题的独立页面。所以我无法在wordpress头文件中启动会话,因为它将再次启动它,因为在脚本中调用了头文件。有什么建议吗?

4 个答案:

答案 0 :(得分:0)

如果你有html source put链接

homepage.com/script.php?ref=<?php $_GET['ref']?>  

答案 1 :(得分:0)

尝试使用以下命令在script_page中访问它:

$newvar = $_GET['ref'];   

但你要确保在homepage.html中有类似的内容:

<form method="get" action="script_page.php">   
     <input type="some_type" name="ref">   
</form> 

顺便问一下你是怎么得到你的变量的?询问用户,数据库或如何?

答案 2 :(得分:0)

使用会话cookie。

在'homepage.php'上:

<?php
    session_start();
    $_SESSION['ref'] = $_GET['ref'];
    header("Location: script.php"); // You can remove this if you want to redirect the user some other way.
?>

在'script.php'上:

<?php
    session_start();
    $ref = $_SESSION['ref']; // Your variable from the first script.
?>

答案 3 :(得分:0)

如果他们点击客户端:

function getParameterByName(name){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/, "\\\]");
  var regex = new RegExp("[\\?&]"+name+"=([^&#]*)"), result = regex.exec(location.search);
  return results == null ? "":decodeURIComponent(results[1].replace(/\+/g, "");
}

这将允许您获取参数内容并说:

<a tar="">click</a>
var name = "ref";
$("a").on("click", function(){ $(this).attr("tar", NEWURL+"?"+name+"="getParameterByName(name))});

或者在构建页面服务器端时:

name = "ref";
echo "<a tar='".URL."?".name."=".$_REQUEST[name];

另外:由其他人发布,只要你有session_start();就可以使用$ _SESSION在页面中保存变量。在你的php页面的顶部。

使用

$ _ REQUEST是因为当你正在谈论$ _GET时,如果第一页通过POST收到vars,你可以管理同样的事情。 $ _REQUEST是$ _GET和$ _POST以及$ _COOKIE

的组合