PHP web服务方法post


php web service method post

嗨,我有一个PHP web返回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":"إختصاصيفيالامراضالنفسيةوالعصبية"、"地址":"Av tahar sfar imm .El巴拉卡苏塞4000","adresse_arabe":"4000شارعطاهرسفرعمارةالبركةسوسة"、"telephone_cabinet":"73698521","gsm":"25631478"}]}

but with

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

it return

 {"items":null}

有谁能给我解释一下吗:)谢谢

因为调用这个页面的post有一个GET方法,所以将它替换为post,它将像预期的那样工作。

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

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

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

现在回答你的问题。

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

IN OLD TIME :

$_POST数组包含post METHOD调用的post参数。当您想要更新或添加服务器上的信息时,使用POST。这通常是从html表单调用的。W3School有一个关于HTTP方法调用的指南。

BUT NOW WITH AJAX AND THE NEW FEATURES OF HTML5 :

你可以使用'POST'来获取数据。

这里的问题是像FIREFOX和CHROME这样的导航器的安全性;

THE SOLUTION :

在服务器PHP中修改cors http:将其添加到页面的第一个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.