Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php$\将值放入if(!isset)时将被擦除_Php_Get - Fatal编程技术网

php$\将值放入if(!isset)时将被擦除

php$\将值放入if(!isset)时将被擦除,php,get,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= "IN

这很好:

$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发布用户id,回答正文。我使用GET作为从核心位置导入纬度和经度的一种方法,尽管我将其命名为用户名,但它是纬度。我希望他们都进入同一个条目,这就是为什么我要进入isset_帖子。此外,当GETusername单独使用时,通过一个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>
$\u POST['submit']和$\u GET['username']。。。为什么不使用$_POST['username']

您是如何发送表单数据的,POST还是GET?或者使用$\u REQUEST['username']进行确认

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

编辑始终对帖子进行处理,而不是获取:

GETs是默认请求,您可能会在数据库中受到攻击。职位是特殊的。因此,在进行POST处理之前,请确保请求_方法是POST

编辑: 首先,我将$\u GET和$\u POST更改为$\u请求,因此它将同时接受$\u GET和$\u POST


其次,我添加了mysql\u real\u escape\u string函数,该函数将转义不需要的字符,如qutation标记,以防止SQL注入。

SQL注入。当你发帖时,你是真的将用户名作为一个帖子字段还是一个GET字段发送?var_dump$\u GET,var_dump$\u POST-你得到了什么?cbuckley-我发送的东西与帖子完全不同,我只使用if-isset-POST将GET变量插入表单字段的同一条目中。这有意义吗?jan267-我是新来的,但我认为人们入侵各地的数据库是一个神话。deceze:当我执行var_dumpget时,它返回array0{},当我执行var dumppost时,我得到array2{[answer_body]=>string13[submit]=>string6 submit}。谢谢大家。所以URL中没有GET查询参数。。。?!?!此外,无论是否有攻击,始终要逃逸数据。您只需确保您的语法有效!好吧,我确实尝试过如果设置$Get_Username,这会保持值不变,但问题是它像一百个重复项一样插入。表单正在发送,但一直输入为零的数据是从objective c NSURL获取的。@Celeste只有在发送时才需要执行查询。马上看我的编辑。嘿,克劳德里安,它还在插入零。虽然,根据你的回答,我能够确认将代码更改为POST_username而不是GET_username是可行的,只要它不在ifisset语句中。但它仍然插入了数百个副本。问题可能是php在if语句中无法从objective c中检索?这有什么意义吗?@Celeste我不知道这两者是如何相互作用的。我帮不了你。我知道PHP和C++:
if(!strcasecmp($_SERVER['REQUEST_METHOD'], 'POST')){
    // post operation, do your work HERE only
    if(!empty($_POST['username'])){
        // ... do your worst here ...
    }
}
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();
}