【发布时间】:2012-10-28 15:32:39
【问题描述】:
这很好用:
$username= $_GET["username"];
$query= "INSERT INTO test (latitude) VALUES ('$username')";
mysql_query($query) or die (mysql_error("error"));
mysql_close();
这不起作用:
if(!isset($_POST['submit']))
{
}
else
{
$username= $_GET["username"];
$query= "INSERT INTO test (latitude) VALUES ('$username')";
mysql_query($query) or die (mysql_error("error"));
mysql_close();
}
如果 $username 设置为 get 以外的值,例如 '7',它会起作用。
从目标 c 中检索值的 GET。如果我不把它放在 if 语句中,它只会在我的数据库中输入数百次。如果我把它放在'if'语句中,它只会输入一次,但值将为零。我完全被难住了。任何帮助都会很棒。
编辑: 我认为由于我得到的答案我没有很好地解释。澄清一下:我正在使用 POST 发布 user_id、answer_body。我使用 GET 作为从核心位置导入纬度和经度的一种方式(即使我将其命名为用户名,它也是纬度)。我希望他们都进入同一个条目,这就是我将 GET 绑定到 isset_POST 的原因。此外,当 GET(username) 单独使用时,使用 INSERT 查询,它将在我的数据库中产生数百个重复项。这是 Objective-C 脚本:
//sends whatever username is set to, to database
float username = location.coordinate.latitude;
NSString *theValue = [NSString stringWithFormat:@"%f", username];
NSString *hostStr =[NSString stringWithFormat:@"http://mysite.com/page.php?username=%@", theValue];
NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSUTF8StringEncoding];
NSLog(@"Server output: %@", serverOutput);
表格代码为:
<form action="gpstestertwo.php" method="post"><center>
$<input type="text" name="answer_body" maxlentgh= "5" style="height:3em;"/>
<input type="submit" value="submit" name="submit" style="height:2em; width:5em; font-size:19px "
/>
</center>
</form>
【问题讨论】:
-
小心SQL注入。当您 POST 时,您实际上是将用户名作为 POST 字段还是 GET 字段发送?
-
var_dump($_GET),var_dump($_POST)- 你得到了什么? -
cbuckley- 我发送的东西与 POST 完全不同,我只使用 if isset POST 以便将 get 变量插入到与表单字段相同的条目中。这有意义吗?
-
jan267- 我有点新,但我认为人们在各地入侵数据库是一个神话。 deceze:当我执行 var_dump(get) 时,它返回 array(0) { },当我执行 var dump post 时,我得到 array(2) { ["answer_body"]=> string(1) "3" ["submit"] => 字符串(6)“提交”}。谢谢大家。
-
所以URL中没有GET查询参数...?!?!此外,无论是否受到攻击,总是 转义数据。您只是确保您的语法有效! The Great Escapism (Or: What You Need To Know To Work With Text Within Text)