php web服务方法发布

时间:2014-06-03 15:58:57

标签: php json

嗨,我有一个php网页,用json!编码返回json数据但是当我将它从GET更改为POST时返回null

<?php
header('Content-Type: application/json; charset=utf-8');

include('settings.php');
mysql_connect($host,$user,$password);
mysql_select_db($base);


mysql_query('SET CHARACTER SET utf8');
$login = $_GET['login'];
$password = $_GET['password'];


$req = "select * from user WHERE username = '".$login."' and password = '".$password."'";
$sql=mysql_query($req);
$nn=mysql_num_rows($sql);

$items = array("items" => NULL);

while ($data=mysql_fetch_array($sql))
{
    $items["items"][] = array(
        "id" => $data['id'],
        "username" => $data['username'],
        "password" => $data['password'],
        "nom_prenom" => $data['nom_prenom'],
        "nom_prenom_arabe" => $data['nom_prenom_arabe'],
        "specialite" => $data['specialite'],
        "specialite_arabe" => $data['specialite_arabe'],
        "adresse" => $data['adresse'],
        "adresse_arabe" => $data['adresse_arabe'],
        "telephone_cabinet" => $data['telephone_cabinet'],
        "gsm" => $data['gsm'],  
    );
}
   echo json_encode($items,JSON_UNESCAPED_UNICODE);
?>

它返回

  

{ “项”:[{ “ID”: “2”, “用户名”: “的 ** ”, “密码”:“的 * “,”“nom_prenom”:“ **** ”,“nom_prenom_arabe”:“مهذبعبدالصمد”,“specialite”:“Pediatrie”,“specialite_arabe”:“إختصاصيفيالامراض النفسيةوالعصبية“,”adresse“:”Av tahar sfar imm .El BARAKA sousse 4000“,”adresse_arabe“:”4000شارعطاهرسفرعمارةالبركةسوسة“,”telephone_cabinet“:”73698521“,”gsm“:”25631478“ }]}

但是

 $login = $_POST['login'];
 $password = $_POST['password'];

它返回

 {"items":null}

任何人都可以向我解释为什么:)谢谢

2 个答案:

答案 0 :(得分:0)

第一个:为了爱...明文密码,没有请求验证?

在你做任何事情之前,请先阅读有关sql注入的内容以及为什么明文不好,真的很糟糕。

现在问你。

$_GET数组包含对GET METHOD调用服务器的查询参数ex(?test = test)。 GET是基本的HTTP调用,告诉服务器您要读取页面。

IN OLD TIME :

$_POST数组包含POST METHOD调用的post参数。如果要在服务器上更新或添加信息,则使用POST。这通常是从html表单调用的。   W3School在这里有一个guide HTTP方法调用。

BUT NOW WITH AJAX AND THE NEW FEATURES OF HTML5 :

你可以使用&#39; POST&#39;获取数据。

这里的问题是导航员的安全,如火焰和铬;

THE SOLUTION :

修改cors http:在服务器PHP中将这个添加到你的页面的第一页php:

//Part added by ilyas :
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }
//End of part.

答案 1 :(得分:0)

因为调用此页面的帖子有一个GET方法,所以用POST重新设置它然后它将按预期工作。

另一点是,由于安全风险,在查询数据库时不鼓励使用字符串连接。请改用prepared statements