[英]simple outbound link tracker - Why isn't this working?
<?php
/** Connect to DB */
mysql_connect("localhost", "dbuser", "pass") or die(mysql_error());
mysql_select_db("dbname") or die(mysql_error());
$link_id = $_GET['link_id'];
/** increase the counter of the URL*/
mysql_query("UPDATE link_count SET count = count + 1 WHERE ID = $link_id") or die(mysql_error());
/** retrieve URL */
$result = mysql_query("SELECT * FROM link_count WHERE ID = $link_id") or die(mysql_error());
$row = mysql_fetch_array($result);
header( "Location:" .$row['URL'] );
?>
当然,数据库信息已更改为在此处发布。 我尝试使用的地方
count.php?link_id=1
在链接中,我得到“'where子句'中的未知列'ID'”
我检查以确保所有引号都是引号,而不是反引号。
编辑:@Kai Qing在对CanSpice的答案的评论中提供了解决方案。
我建议确保您的列实际上称为ID而不是ID。 它告诉您该列不存在,这可能是因为它实际上不像所键入的那样存在。 同样,count是保留的mysql术语。 更改为此:
mysql_query("UPDATE link_count SET `count` = `count` + 1 WHERE ID = $link_id") or die(mysql_error());
在开始讲解注入孔之前,请像下面这样包装$ link_id:
mysql_real_escape_string($link_id)
您的列可能命名为id
,而不是ID
。 列名区分大小写。
$sql = sprintf("UPDATE link_count SET count = count + 1 WHERE ID = %s",mysql_real_escape_string($_GET['link_id']));
mysql_query($sql) or die(mysql_error());
另外,一旦投入生产,您可能就不想打印出所有mysql_errors了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.