0

我目前在我的网站上运行了一个推荐脚本,但我遇到了一个问题,不幸的是我不知道足够的 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

4 回答 4

0

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

$newvar = $_GET['ref'];   

但是您确保在 homepage.html 中有类似的内容:

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

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

于 2013-07-25T16:31:53.627 回答
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 接收到变量,您可以管理同样的事情。$_REQUEST 是 $_GET 和 $_POST 和 $_COOKIE 的组合

于 2013-07-25T16:39:07.383 回答
0

如果你有 html 源放置链接

homepage.com/script.php?ref=<?php $_GET['ref']?>  
于 2013-07-25T16:30:22.430 回答
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.
?>
于 2013-07-25T16:34:22.330 回答