-1

这工作正常:

$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>
4

2 回答 2

1

$_POST['submit']$_GET['username']...为什么不使用$_POST['username'].

你是如何发送FORM数据的,POST或者GET?或使用$_REQUEST['username']确定。

更不用说在查询中使用之前需要转义用户名。

编辑(总是在 上进行处理POSTs,而不是GETs):

if(!strcasecmp($_SERVER['REQUEST_METHOD'], 'POST')){
    // post operation, do your work HERE only
    if(!empty($_POST['username'])){
        // ... do your worst here ...
    }
}

GETs是默认请求,您最终可能会在数据库中被轰炸。POSTs是特别的。因此,在进行处理之前确保REQUEST_METHOD是。POSTPOST

于 2012-10-28T15:35:18.803 回答
1
if(isset($_REQUEST['submit']))
{
$username= mysql_real_escape_string($_REQUEST["username"]);
$query= "INSERT INTO test (latitude) VALUES ('$username')";
mysql_query($query) or die (mysql_error("error"));
mysql_close();
}

编辑:首先,我将 $_GET 和 $_POST 更改为 $_REQUEST,因此它将同时接受 $_GET 和 $_POST。

其次,我添加了一个mysql_real_escape_string函数,该函数将转义不需要的字符,例如引号,以防止 SQL 注入。

于 2012-10-28T15:36:13.863 回答