【问题标题】:how get post variable in php?如何在 php 中获取 post 变量?
【发布时间】:2014-05-05 10:35:13
【问题描述】:

我正在编写一个带有参数的http post的java代码。该参数是一个转换为字符串的长变量。

ArrayList<NameValuePair> parameters =new ArrayList<NameValuePair>();
        parameters.add(new BasicNameValuePair("MAX_ID", String.valueOf(maxNewsId)));
        String result = CustomHttpClient.executeHttpPost(NewsUrl,parameters);

我想在服务器上编写一个 php 代码。该代码应该得到那个长数字并连接到数据库并选择 id 大于该参数的行。 我写了这段代码但不工作。我该怎么办?

  <?php
 $db_host  = "localhost";
 $db_uid  = "**********";
 $db_pass = "**********";
 $db_name  = "**********"; 


 $db_con = mysql_connect($db_host,$db_uid,$db_pass,$db_name) or die('could not connect'); 
 mysql_select_db($db_name);
 $maxId = $_POST['MAX_ID'];
 mysql_query("set names utf8");
$sql = "SELECT * FROM News where Nid> ".mysql_real_escape_string($maxId);
$result = mysql_query($sql);

while($row=mysql_fetch_assoc($result))
{
    $output[]=$row;

}
print(json_encode($output));
 mysql_close();   

?>

【问题讨论】:

  • 尝试打印并检查 $_POST varibale 中的内容。在 php 文件 ";print_r($_POST);exit();?> 上使用它
  • 解释什么不起作用。你看到的错误是什么?检查 MAX_ID: if (int($_POST['MAX_ID']) == 0) { echo "no variable recieved";出口(); }

标签: java php http-post


【解决方案1】:

关于您的代码的几点说明:

首先...请不要再使用 mysql_query 了。使用 mysqli_query 或 PDO。在较新的 PHP 版本中,不推荐使用 mysql_xxx,您应该使用替代方法。

其次...您的代码很容易受到攻击。当您使用 POST 或 GET 变量时,您应该检查它是否不包含有害代码。如果你的 MAX_ID 只能是一个数字,我会建议如下(注意 intval-part):

$maxId = 0;
if (isset($_POST['MAX_ID'])) $maxId = intval($_POST['MAX_ID']);

它还会检查 MAX_ID 是否未设置(如果是,您的 $max_id 为 0)并且 $maxId 只能产生一个数字。

最后...因为上面的 $maxId 只能产生一个不需要 mysql_real_escape_string 的数字。所以这就足够了:

$sql = "SELECT * FROM News where Nid > ".$maxId;

(请注意manual of this function 顶部关于 mysql_xxx 被弃用的警告)。

【讨论】:

    【解决方案2】:

    如果你想比:你应该改变 " 以粗体显示

    $sql = "SELECT * FROM News WHERE Nid < ".mysql_real_escape_string($maxId);
    

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      相关资源
      最近更新 更多