放入if(!isset)时删除php $ _GET值

时间:2012-10-28 15:32:39

标签: php get

这很好用:

$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'一样。

GET从目标c中检索值。如果我没有把它放在if语句中,它只会在数据库中输入数百次。如果我把它放在'if'语句中它只会输入一次,但值将为零。我完全难过了。任何帮助都会很棒。

编辑: 我想因为我得到的答案我没解释得很好。澄清:我正在使用POST发布user_id,answer_body。我使用GET作为从Core Location导入纬度和经度的方法(即使我将其命名为username,它是纬度)。我希望他们都进入相同的条目,这就是为什么我把GET绑定到isset_POST。此外,当GET(用户名)独立时,使用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>

2 个答案:

答案 0 :(得分:1)

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

您如何发送FORM个数据,POSTGET?或者使用$_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

答案 1 :(得分: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函数,它将逃避不需要的字符,例如qutation标记,以防止SQL注入。