如何修复意外的T字符串? - PHP

时间:2011-05-14 15:43:42

标签: php

我的脚本在第五行发出一个意想不到的字符串,我该怎么解决这个问题呢?

<?php
include_once("../scripts/config.php");


$url = mysql_real_escape_string('$_POST['url']'); // LINE 5!

preg_match("/id=(\\d+)/", $url, $matches);
$like = $matches[1];
$current_pop = mysql_query("SELECT pop FROM likes WHERE id=$like") or die ("Query failed: " . mysql_error());


$pop = $current_pop + 1;  

$update = mysql_query("UPDATE likes SET pop = ".$pop." WHERE id = ".$like."") or die ("Query failed: " . mysql_error());

?>

2 个答案:

答案 0 :(得分:6)

应该是:

$url = mysql_real_escape_string($_POST['url']);

否则PHP会看到'$_POST['url']',并认为它由3部分组成:

  • '$_POST[' - 一个字符串,
  • url - 某种令牌
  • ']' - 另一个字符串

这会使解释器感到困惑,因为当字符串后跟url - 令牌时,它不知道该怎么做。

答案 1 :(得分:2)

您的代码存在SQL注入漏洞。在有人从您的网站上窃取您的所有客户信息之前,请先查看此信息:http://en.wikipedia.org/wiki/SQL_injection