传递URL特殊字符的问题 - ClickCounter php脚本

时间:2012-11-16 03:05:49

标签: php mysql

脚本的目标:获取正在传递的URL和AdID,并在数据库中对其进行计数,然后将用户传递给传递的URL

工作原理:将链接传递给脚本后,需要使用AdID并记录数据库行+1中的点击,然后将其重定向到链接。 数据库布局:

  • 表格:广告
  • 行:点击

传递链接的示例: http://yourdomain.com/clickcounter.php?AdID=43&RedirectURL=http://stackoverflow.com

ISSUE :它没有传递任何包含特殊字符的网址。像 ?或者&

  • 明显的问题:仍在使用mysql_query。我还没有完全学会新的mysqli方式

故障链接示例: https://www.demoexample.com/index.aspx?d=111&prog_id=tttt

对他人有益:其他人可以使用此脚本来执行我正在做的事情。计算点击链接/广告/任意网址的次数,以衡量链接/广告的使用/点击次数。

<?php
require('config.php');

    // Update Ad Pull/Display count
    $AdID= mysql_real_escape_string($_GET['AdID']);
    $UpdateADHitDisplay = mysql_query("UPDATE ads SET clicks = clicks +1 WHERE ID = '$AdID'");

    // Get Redirection Inforamtion
    $RedirectURL = mysql_real_escape_string($_GET['RedirectURL']);
    header("Location: $RedirectURL");

?>

我不知道如何使用urlencode完成此操作这是我尝试过的。

// Get Redirection Inforamtion
$RedirectURL = $_GET['RedirectURL'];
//$FixedURL = urlencode($RedirectURL); // didn't work
    function url_encode($RedirectURL){ // then i tried to create a function. it pases the first part of the url, but nothing past the first ? or special char
 return urlencode(utf8_encode($RedirectURL));

}     header(“Location:$ RedirectURL”);

1 个答案:

答案 0 :(得分:2)

链接中参数RedirectURL的值必须为urlencoded,且mysql_real_escape_string() $RedirectURL变量

不需要{/ 1}}