在自己的电脑上实验输入端
<form name=aa action=acc.php method=post>
User <input name=user type=text></br>
Email <input name=email>
<input type=submit>
</form>输出端<?echo "User $_POST[user]</br>";
echo "Email $_POST[email]</br>";$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }mysql_select_db("test", $con);//$sql="SELECT * FROM email where name='".$_POST[user]."' email='".$_POST[email]."';";//echo $sql;$result = mysql_query("SELECT * FROM email where name like '".$_POST[user]."' and email like '".$_POST[email]."'");
if (mysql_num_rows($result))
  echo "Matched!";
else 
  echo "Not match!";mysql_close($con);?>
我在输入端打'号是没有用的,不管怎么样传过去都变成转义符\'了,不能够做SQL注入。
请高手指点!谢谢!

解决方案 »

  1.   

    试一下输入username: "(%%)"
    email: (%%)
      

  2.   

    不好意思,应该是
    username:    %%
    email:       %%
      

  3.   

    是你php.ini 设置里 默认 给post变量加 addslashes了
      

  4.   

    php.ini中不是有
    magic_quotes_gpc = On
    吗?你把它改成 off 就不会这样想了
      

  5.   

    <form name=aa action="acc.php" method="post">
    <form name=aa action=acc.php method=post>
    你的是不是少了2个双引号了?
      

  6.   

    回复八楼:
    在HTTP中这样的写法也是可以接受的。和XML不一样……
      

  7.   

    回复二楼:
    成功了!
    显示
    User %%
    Email %%
    Matched!这是为什么呢?
      

  8.   

    直接在数据库中运行一下下面的语句你就是知道为什么了。
    SELECT * FROM email where name like '%%' and email like '%%';
      

  9.   

    继续追问:那现在的情况可以进行SQL注入吗?用什么方法呢?如果想要取得其他信息的话,或者是执行自己想要让它执行的语句。
    谢了!^_^
      

  10.   

    你没有完全明白什么是SQL注入攻击,看看下面的说明和例子先:http://en.wikipedia.org/wiki/SQL_injection